blktrace: Initial checkin of ported version

Signed-off-by: San Mehat <san@google.com>
diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..918aa5e
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1,53 @@
+BUILD_BLKTRACE := true
+
+ifeq ($(BUILD_BLKTRACE), true)
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := blkparse.c blkparse_fmt.c rbtree.c act_mask.c strverscmp.c
+LOCAL_C_INCLUDES := external/blktrace/
+LOCAL_CFLAGS := -O2 -g -W -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+LOCAL_MODULE := blkparse
+LOCAL_MODULE_TAGS :=
+LOCAL_SYSTEM_SHARED_LIBRARIES := libc
+include $(BUILD_EXECUTABLE)
+
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := blktrace.c act_mask.c
+LOCAL_C_INCLUDES := external/blktrace/
+LOCAL_CFLAGS := -O2 -g -W -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_ANDROID_
+LOCAL_MODULE := blktrace
+LOCAL_MODULE_TAGS :=
+LOCAL_SYSTEM_SHARED_LIBRARIES := libc
+include $(BUILD_EXECUTABLE)
+
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := verify_blkparse.c
+LOCAL_C_INCLUDES := external/blktrace/
+LOCAL_CFLAGS := -O2 -g -W -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+LOCAL_MODULE := verify_blkparse
+LOCAL_MODULE_TAGS :=
+LOCAL_SYSTEM_SHARED_LIBRARIES := libc
+include $(BUILD_EXECUTABLE)
+
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := blkrawverify.c
+LOCAL_C_INCLUDES := external/blktrace/
+LOCAL_CFLAGS := -O2 -g -W -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+LOCAL_MODULE := blkrawverify
+LOCAL_MODULE_TAGS :=
+LOCAL_SYSTEM_SHARED_LIBRARIES := libc
+include $(BUILD_EXECUTABLE)
+
+#include $(CLEAR_VARS)
+#LOCAL_SRC_FILES := blkiomon.c
+#LOCAL_C_INCLUDES := external/blktrace/
+#LOCAL_CFLAGS := -O2 -g -W -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+#LOCAL_MODULE := blkiomon
+#LOCAL_MODULE_TAGS :=
+#LOCAL_SYSTEM_SHARED_LIBRARIES := libc
+#include $(BUILD_EXECUTABLE)
+
+
+endif
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..5b6e7c6
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,340 @@
+		    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.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 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.
+
+  <signature of Ty Coon>, 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/LICENSE b/LICENSE
new file mode 100644
index 0000000..5b6e7c6
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,340 @@
+		    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.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 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.
+
+  <signature of Ty Coon>, 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..623b84b
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,90 @@
+CC	= gcc
+CFLAGS	= -Wall -O2 -g -W
+ALL_CFLAGS = $(CFLAGS) -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+PROGS	= blkparse blktrace verify_blkparse blkrawverify blkiomon
+LIBS	= -lpthread
+SCRIPTS	= btrace
+
+ALL = $(PROGS) $(SCRIPTS) btt/btt btreplay/btrecord btreplay/btreplay \
+      btt/bno_plot.py
+
+all: $(ALL)
+
+btt/btt:
+	$(MAKE) -C btt
+
+btreplay/btrecord:
+	$(MAKE) -C btreplay
+
+btreplay/btreplay:
+	$(MAKE) -C btreplay
+
+%.o: %.c
+	$(CC) -o $*.o -c $(ALL_CFLAGS) $<
+
+blkparse: blkparse.o blkparse_fmt.o rbtree.o act_mask.o
+	$(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^)
+
+blktrace: blktrace.o act_mask.o
+	$(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LIBS)
+
+verify_blkparse: verify_blkparse.o
+	$(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^)
+
+blkrawverify: blkrawverify.o
+	$(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^)
+
+blkiomon: blkiomon.o rbtree.o
+	$(CC) $(ALL_CFLAGS) -o $@ $(filter %.o,$^) $(LIBS) -lrt
+
+$(PROGS): | depend
+
+docs:
+	$(MAKE) -C doc all
+	$(MAKE) -C btt docs
+	$(MAKE) -C btreplay docs
+
+docsclean:
+	$(MAKE) -C doc clean
+	$(MAKE) -C btt clean
+	$(MAKE) -C btreplay clean
+
+depend:
+	@$(CC) -MM $(ALL_CFLAGS) *.c 1> .depend
+
+INSTALL = install
+prefix = /usr/local
+bindir = $(prefix)/bin
+mandir = $(prefix)/man
+RPMBUILD = rpmbuild
+TAR = tar
+
+export prefix INSTALL TAR
+
+dist: btrace.spec
+	git-tar-tree HEAD btrace-1.0 > btrace-1.0.tar
+	@mkdir -p btrace-1.0
+	@cp btrace.spec btrace-1.0
+	$(TAR) rf btrace-1.0.tar btrace-1.0/btrace.spec
+	@rm -rf btrace-1.0
+	@bzip2 btrace-1.0.tar
+
+rpm: dist
+	$(RPMBUILD) -ta btrace-1.0.tar.bz2
+
+clean: docsclean
+	-rm -f *.o $(PROGS) .depend btrace-1.0.tar.bz2
+	$(MAKE) -C btt clean
+	$(MAKE) -C btreplay clean
+
+install: all
+	$(INSTALL) -m 755 -d $(DESTDIR)$(bindir)
+	$(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man1
+	$(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man8
+	$(INSTALL) -m 755 $(ALL) $(DESTDIR)$(bindir)
+	$(INSTALL) -m 644 doc/*.1 $(DESTDIR)$(mandir)/man1
+	$(INSTALL) -m 644 doc/*.8 $(DESTDIR)$(mandir)/man8
+
+ifneq ($(wildcard .depend),)
+include .depend
+endif
diff --git a/README b/README
new file mode 100644
index 0000000..f52f48d
--- /dev/null
+++ b/README
@@ -0,0 +1,183 @@
+Block IO Tracing
+----------------
+
+Written by Jens Axboe <axboe@kernel.dk> (initial version and kernel support),
+Alan D. Brunelle (threading and splitup into two seperate programs),
+Nathan Scott <nathans@sgi.com> (bug fixes, process names, multiple devices)
+Also thanks to Tom Zanussi <zanussi@us.ibm.com> for good input and
+patches.
+
+
+Requirements
+------------
+
+blktrace was integrated into the mainline kernel between 2.6.16 and 2.6.17-rc1.
+The target trace needs to run on a kernel at least that new.
+
+git://git.kernel.dk/blktrace.git
+
+If you don't have git, you can get hourly snapshots from:
+
+http://brick.kernel.dk/snaps/
+
+The snapshots include the full git object database as well. kernel.org has
+excessively long mirror times, so if you have git installed, you can pull
+the master tree from:
+
+git://git.kernel.dk/blktrace.git
+
+For browsing the repo over http and viewing history etc, you can direct
+your browser to:
+
+http://git.kernel.dk/
+
+
+Usage
+-----
+
+$ blktrace -d <dev> [ -r debug_path ] [ -o output ] [ -k ] [ -w time ]
+		    [ -a action ] [ -A action mask ]
+
+	-d Use specified device. May also be given last after options.
+	-r Path to mounted debugfs, defaults to /sys/kernel/debug.
+	-o File(s) to send output to.
+	-D Directory to prepend to output file names.
+	-k Kill running trace.
+	-w Stop after defined time, in seconds.
+	-a Only trace specific actions (use more -a options to add actions).
+	   Available actions are:
+
+		READ
+		WRITE
+		BARRIER
+		SYNC
+		QUEUE
+		REQUEUE
+		ISSUE
+		COMPLETE
+		FS
+		PC
+
+	-A Give the trace mask directly as a number.
+
+	-b Sub buffer size in KiB.
+	-n Number of sub buffers.
+	-l Run in network listen mode (blktrace server)
+	-h Run in network client mode, connecting to the given host
+	-p Network port to use (default 8462)
+	-s Disable network client use of sendfile() to transfer data
+	-V Print program version info.
+
+$ blkparse -i <input> [ -o <output> ] [ -b rb_batch ] [ -s ] [ -t ] [ -q ]
+		      [ -w start:stop ] [ -f output format ] [ -F format spec ]
+		      [ -d <binary> ]
+
+	-i Input file containing trace data, or '-' for stdin.
+	-D Directory to prepend to input file names.
+	-o Output file. If not given, output is stdout.
+	-b stdin read batching.
+	-s Show per-program io statistics.
+	-h Hash processes by name, not pid.
+	-t Track individual ios. Will tell you the time a request took to
+	   get queued, to get dispatched, and to get completed.
+	-q Quiet. Don't display any stats at the end of the trace.
+	-w Only parse data between the given time interval in seconds. If
+	   'start' isn't given, blkparse defaults the start time to 0.
+	-d Dump sorted data in binary format
+	-f Output format. Customize the output format. The format field
+	   identifiers are:
+
+		%a	- Action
+		%c	- CPU ID
+		%C	- Task command (process) name
+		%d	- Direction (r/w)
+		%D	- Device number
+		%e	- Error number
+		%M	- Major
+		%m	- Minor
+		%N	- Number of bytes
+		%n	- Number of sectors
+		%p	- PID
+		%P	- PDU
+		%s	- Sequence number
+		%S	- Sector number
+		%t	- Time (wallclock - nanoseconds)
+		%T	- Time (wallclock - seconds)
+		%u	- Time (processing - microseconds)
+		%U	- Unplug depth
+
+	-F Format specification. The individual specifiers are:
+
+		A	- Remap
+		B	- Bounce
+		C	- Complete
+		D	- Issue
+		M	- Back merge
+		F	- Front merge
+		G	- Get request
+		I	- Insert
+		P	- Plug
+		Q	- Queue
+		R	- Requeue
+		S	- Sleep requests
+		T	- Unplug timer
+		U	- Unplug IO
+		W	- Bounce
+		X	- Split
+
+	-v More verbose for marginal errors.
+	-V Print program version info.
+
+$ verify_blkparse filename
+
+	Verifies an output file from blkparse. All it does is check if
+	the events in the file are correctly time ordered. If an entry
+	is found that isn't ordered, it's dumped to stdout.
+
+$ blkrawverify <dev> [<dev>...]
+
+	The blkrawverify utility can be used to verify data retrieved
+	via blktrace. It will check for valid event formats, forward
+	progressing sequence numbers and time stamps, also does reasonable
+	checks for other potential issues within invidividual events.
+
+	Errors found will be tracked in <dev>.verify.out.
+
+If you want to do live tracing, you can pipe the data between blktrace
+and blkparse:
+
+% blktrace -d <device> -o - | blkparse -i -
+
+This has a small risk of displaying some traces a little out of sync, since
+it will do batch sorts of input events. Similarly, you can do traces over
+the network. The network 'server' must run:
+
+% blktrace -l
+
+to listen to incoming blktrace connections, while the client should use
+
+% blktrace -d /dev/sda -h <server hostname>
+
+to connect and transfer data over the network.
+
+
+Documentation
+-------------
+
+A users guide is distributed with the source. It is in latex, a
+'make docs' will build a PDF in doc/. You need tetex and latex installed
+to build the document.
+
+
+Resources
+---------
+
+vger hosts a mailing list dedicated to btrace discussion and development.
+The list is called linux-btrace@vger.kernel.org, subscribe by sending
+a mail to majordomo@vger.kernel.org with 'subscribe linux-btrace' in
+the mail body.
+
+
+
+2006-09-05, Jens Axboe <axboe@kernel.dk>
+
diff --git a/act_mask.c b/act_mask.c
new file mode 100644
index 0000000..8890887
--- /dev/null
+++ b/act_mask.c
@@ -0,0 +1,47 @@
+#include <string.h>
+#include "blktrace.h"
+
+#define DECLARE_MASK_MAP(mask)          { BLK_TC_##mask, #mask, "BLK_TC_"#mask }
+#define COMPARE_MASK_MAP(mmp, str)                                      \
+        (!strcasecmp((mmp)->short_form, (str)) ||                      \
+         !strcasecmp((mmp)->long_form, (str)))
+
+struct mask_map {
+	int mask;
+	char *short_form;
+	char *long_form;
+};
+
+static struct mask_map mask_maps[] = {
+	DECLARE_MASK_MAP(READ),
+	DECLARE_MASK_MAP(WRITE),
+	DECLARE_MASK_MAP(BARRIER),
+	DECLARE_MASK_MAP(SYNC),
+	DECLARE_MASK_MAP(QUEUE),
+	DECLARE_MASK_MAP(REQUEUE),
+	DECLARE_MASK_MAP(ISSUE),
+	DECLARE_MASK_MAP(COMPLETE),
+	DECLARE_MASK_MAP(FS),
+	DECLARE_MASK_MAP(PC),
+	DECLARE_MASK_MAP(NOTIFY),
+	DECLARE_MASK_MAP(AHEAD),
+	DECLARE_MASK_MAP(META),
+	DECLARE_MASK_MAP(DISCARD),
+	DECLARE_MASK_MAP(DRV_DATA),
+};
+
+int find_mask_map(char *string)
+{
+	unsigned int i;
+
+	for (i = 0; i < sizeof(mask_maps)/sizeof(mask_maps[0]); i++)
+		if (COMPARE_MASK_MAP(&mask_maps[i], string))
+			return mask_maps[i].mask;
+
+	return -1;
+}
+
+int valid_act_opt(int x)
+{
+	return (1 <= x) && (x < (1 << BLK_TC_SHIFT));
+}
diff --git a/barrier.h b/barrier.h
new file mode 100644
index 0000000..14d06b5
--- /dev/null
+++ b/barrier.h
@@ -0,0 +1,33 @@
+#ifndef BARRIER_H
+#define BARRIER_H
+
+#if defined(__ia64__)
+  #define store_barrier()         asm volatile ("mf" ::: "memory")
+#elif defined(__x86_64__)
+  #define store_barrier()         asm volatile("sfence" ::: "memory")
+#elif defined(__i386__)
+  #define store_barrier()         asm volatile ("": : :"memory")
+#elif defined(__ppc__) || defined(__powerpc__)
+  #define store_barrier()         asm volatile ("eieio" : : : "memory")
+#elif defined(__s390__) || defined(__s390x__)
+  #define store_barrier()         asm volatile ("bcr 15,0" : : : "memory")
+#elif defined(__alpha__)
+  #define store_barrier()         asm volatile("wmb": : :"memory")
+#elif defined(__hppa__)
+  #define store_barrier()         asm volatile("":::"memory")
+#elif defined(__sparc__)
+  #define store_barrier()         asm volatile("":::"memory")
+#elif defined(__m68000__) || defined(__m68k__) || defined(mc68000) || defined(_M_M68K)
+  #define store_barrier()         asm volatile("":::"memory")
+#elif defined(__mips__)  /* also mipsel */
+  #define store_barrier()         do { } while(0)
+#elif defined(__arm__)
+  /* taken from linux/arch/arm/kernel/entry-armv.S, thanks to pbrook! */
+  typedef void (__kernel_dmb_t)(void);
+  #define __kernel_dmb (*(__kernel_dmb_t *)0xffff0fa0)
+  #define store_barrier()        __kernel_dmb()
+#else
+  #error Define store_barrier() for your CPU
+#endif
+
+#endif
diff --git a/blkiomon.c b/blkiomon.c
new file mode 100644
index 0000000..9fc4d75
--- /dev/null
+++ b/blkiomon.c
@@ -0,0 +1,756 @@
+/*
+ * I/O monitor based on block queue trace data
+ *
+ * Copyright IBM Corp. 2008
+ *
+ * Author(s): Martin Peschke <mp3@de.ibm.com>
+ *
+ *  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
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <signal.h>
+#include <getopt.h>
+#include <errno.h>
+#include <locale.h>
+#include <libgen.h>
+#include <sys/msg.h>
+#include <pthread.h>
+#include <time.h>
+
+#include "blktrace.h"
+#include "rbtree.h"
+#include "jhash.h"
+#include "blkiomon.h"
+
+struct trace {
+	struct blk_io_trace bit;
+	struct rb_node node;
+	struct trace *next;
+	long sequence;
+};
+
+struct rb_search {
+	struct rb_node **node_ptr;
+	struct rb_node *parent;
+};
+
+struct dstat_msg {
+	long mtype;
+	struct blkiomon_stat stat;
+};
+
+struct dstat {
+	struct dstat_msg msg;
+	struct rb_node node;
+	struct dstat *next;
+};
+
+struct output {
+	char *fn;
+	FILE *fp;
+	char *buf;
+	int pipe;
+};
+
+static char blkiomon_version[] = "0.3";
+
+static FILE *ifp;
+static int interval = -1;
+
+static struct trace *vacant_traces_list = NULL;
+static int vacant_traces = 0;
+
+#define TRACE_HASH_SIZE 128
+struct trace *thash[TRACE_HASH_SIZE] = {};
+
+static struct dstat *vacant_dstats_list = NULL;
+static struct rb_root dstat_tree[2] = { RB_ROOT, RB_ROOT };
+static struct dstat *dstat_list[2] = {};
+static int dstat_curr = 0;
+
+static struct output drvdata, human, binary, debug;
+
+static char *msg_q_name = NULL;
+static int msg_q_id = -1, msg_q = -1;
+static long msg_id = -1;
+
+static pthread_t interval_thread;
+static pthread_mutex_t dstat_mutex = PTHREAD_MUTEX_INITIALIZER;
+
+int data_is_native = -1;
+
+static int up = 1;
+
+/* debugging */
+static long leftover = 0, driverdata = 0, match = 0, mismatch = 0, sequence = 0;
+
+static void dump_bit(struct trace *t, const char *descr)
+{
+	struct blk_io_trace *bit = &t->bit;
+
+	if (!debug.fn)
+		return;
+
+	fprintf(debug.fp, "--- %s ---\n", descr);
+	fprintf(debug.fp, "magic    %16d\n", bit->magic);
+	fprintf(debug.fp, "sequence %16d\n", bit->sequence);
+	fprintf(debug.fp, "time     %16ld\n", (unsigned long)bit->time);
+	fprintf(debug.fp, "sector   %16ld\n", (unsigned long)bit->sector);
+	fprintf(debug.fp, "bytes    %16d\n", bit->bytes);
+	fprintf(debug.fp, "action   %16x\n", bit->action);
+	fprintf(debug.fp, "pid      %16d\n", bit->pid);
+	fprintf(debug.fp, "device   %16d\n", bit->device);
+	fprintf(debug.fp, "cpu      %16d\n", bit->cpu);
+	fprintf(debug.fp, "error    %16d\n", bit->error);
+	fprintf(debug.fp, "pdu_len  %16d\n", bit->pdu_len);
+
+	fprintf(debug.fp, "order    %16ld\n", t->sequence);
+}
+
+static void dump_bits(struct trace *t1, struct trace *t2, const char *descr)
+{
+	struct blk_io_trace *bit1 = &t1->bit;
+	struct blk_io_trace *bit2 = &t2->bit;
+
+	if (!debug.fn)
+		return;
+
+	fprintf(debug.fp, "--- %s ---\n", descr);
+	fprintf(debug.fp, "magic    %16d %16d\n", bit1->magic, bit2->magic);
+	fprintf(debug.fp, "sequence %16d %16d\n",
+		bit1->sequence, bit2->sequence);
+	fprintf(debug.fp, "time     %16ld %16ld\n",
+		(unsigned long)bit1->time, (unsigned long)bit2->time);
+	fprintf(debug.fp, "sector   %16ld %16ld\n",
+		(unsigned long)bit1->sector, (unsigned long)bit2->sector);
+	fprintf(debug.fp, "bytes    %16d %16d\n", bit1->bytes, bit2->bytes);
+	fprintf(debug.fp, "action   %16x %16x\n", bit1->action, bit2->action);
+	fprintf(debug.fp, "pid      %16d %16d\n", bit1->pid, bit2->pid);
+	fprintf(debug.fp, "device   %16d %16d\n", bit1->device, bit2->device);
+	fprintf(debug.fp, "cpu      %16d %16d\n", bit1->cpu, bit2->cpu);
+	fprintf(debug.fp, "error    %16d %16d\n", bit1->error, bit2->error);
+	fprintf(debug.fp, "pdu_len  %16d %16d\n", bit1->pdu_len, bit2->pdu_len);
+
+	fprintf(debug.fp, "order    %16ld %16ld\n", t1->sequence, t2->sequence);
+}
+
+static struct dstat *blkiomon_alloc_dstat(void)
+{
+	struct dstat *dstat;
+
+	if (vacant_dstats_list) {
+		dstat = vacant_dstats_list;
+		vacant_dstats_list = dstat->next;
+	} else
+		dstat = malloc(sizeof(*dstat));
+	if (!dstat) {
+		fprintf(stderr,
+			"blkiomon: could not allocate device statistic");
+		return NULL;
+	}
+
+	blkiomon_stat_init(&dstat->msg.stat);
+	return dstat;
+}
+
+static struct dstat *blkiomon_find_dstat(struct rb_search *search, __u32 device)
+{
+	struct rb_node **p = &(dstat_tree[dstat_curr].rb_node);
+	struct rb_node *parent = NULL;
+	struct dstat *dstat;
+
+	while (*p) {
+		parent = *p;
+
+		dstat = rb_entry(parent, struct dstat, node);
+
+		if (dstat->msg.stat.device < device)
+			p = &(*p)->rb_left;
+		else if (dstat->msg.stat.device > device)
+			p = &(*p)->rb_right;
+		else
+			return dstat;
+	}
+	search->node_ptr = p;
+	search->parent = parent;
+	return NULL;
+}
+
+static struct dstat *blkiomon_get_dstat(__u32 device)
+{
+	struct dstat *dstat;
+	struct rb_search search;
+
+	pthread_mutex_lock(&dstat_mutex);
+
+	dstat = blkiomon_find_dstat(&search, device);
+	if (dstat)
+		goto out;
+
+	dstat = blkiomon_alloc_dstat();
+	if (!dstat)
+		goto out;
+
+	dstat->msg.stat.device = device;
+
+	rb_link_node(&dstat->node, search.parent, search.node_ptr);
+	rb_insert_color(&dstat->node, &dstat_tree[dstat_curr]);
+
+	dstat->next = dstat_list[dstat_curr];
+	dstat_list[dstat_curr] = dstat;
+
+out:
+	pthread_mutex_unlock(&dstat_mutex);
+	return dstat;
+}
+
+static int blkiomon_output_msg_q(struct dstat *dstat)
+{
+	if (!msg_q_name)
+		return 0;
+
+	dstat->msg.mtype = msg_id;
+	return msgsnd(msg_q, &dstat->msg, sizeof(struct blkiomon_stat), 0);
+}
+
+static int blkiomon_output_binary(struct dstat *dstat)
+{
+	struct blkiomon_stat *p = &dstat->msg.stat;
+
+	if (!binary.fn)
+		return 0;
+
+	if (fwrite(p, sizeof(*p), 1, binary.fp) != 1)
+		goto failed;
+	if (binary.pipe && fflush(binary.fp))
+		goto failed;
+	return 0;
+
+failed:
+	fprintf(stderr, "blkiomon: could not write to %s\n", binary.fn);
+	fclose(binary.fp);
+	binary.fn = NULL;
+	return 1;
+}
+
+static struct dstat *blkiomon_output(struct dstat *head, struct timespec *ts)
+{
+	struct dstat *dstat, *tail = NULL;
+
+	for (dstat = head; dstat; dstat = dstat->next) {
+		dstat->msg.stat.time = ts->tv_sec;
+		blkiomon_stat_print(human.fp, &dstat->msg.stat);
+		blkiomon_stat_to_be(&dstat->msg.stat);
+		blkiomon_output_binary(dstat);
+		blkiomon_output_msg_q(dstat);
+		tail = dstat;
+	}
+	return tail;
+}
+
+static void *blkiomon_interval(void *data)
+{
+	struct timespec wake, r;
+	struct dstat *head, *tail;
+	int finished;
+
+	clock_gettime(CLOCK_REALTIME, &wake);
+
+	while (1) {
+		wake.tv_sec += interval;
+		if (clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, &wake, &r)) {
+			fprintf(stderr, "blkiomon: interrupted sleep");
+			continue;
+		}
+
+		/* grab tree and make data gatherer build up another tree */
+		pthread_mutex_lock(&dstat_mutex);
+		finished = dstat_curr;
+		dstat_curr = dstat_curr ? 0 : 1;
+		pthread_mutex_unlock(&dstat_mutex);
+
+		head = dstat_list[finished];
+		if (!head)
+			continue;
+		dstat_list[finished] = NULL;
+		dstat_tree[finished] = RB_ROOT;
+		tail = blkiomon_output(head, &wake);
+
+		pthread_mutex_lock(&dstat_mutex);
+		tail->next = vacant_dstats_list;
+		vacant_dstats_list = head;
+		pthread_mutex_unlock(&dstat_mutex);
+	}
+	return data;
+}
+
+#define BLK_DATADIR(a) (((a) >> BLK_TC_SHIFT) & (BLK_TC_READ | BLK_TC_WRITE))
+
+static int blkiomon_account(struct blk_io_trace *bit_d,
+			    struct blk_io_trace *bit_c)
+{
+	struct dstat *dstat;
+	struct blkiomon_stat *p;
+	__u64 d2c = (bit_c->time - bit_d->time) / 1000; /* ns -> us */
+	__u32 size = bit_d->bytes;
+	__u64 thrput = size * 1000 / d2c;
+
+	dstat = blkiomon_get_dstat(bit_d->device);
+	if (!dstat)
+		return 1;
+	p = &dstat->msg.stat;
+
+	if (BLK_DATADIR(bit_c->action) & BLK_TC_READ) {
+		minmax_account(&p->thrput_r, thrput);
+		minmax_account(&p->size_r, size);
+		minmax_account(&p->d2c_r, d2c);
+	} else if (BLK_DATADIR(bit_c->action) & BLK_TC_WRITE) {
+		minmax_account(&p->thrput_w, thrput);
+		minmax_account(&p->size_w, size);
+		minmax_account(&p->d2c_w, d2c);
+	} else
+		p->bidir++;
+
+	histlog2_account(p->size_hist, size, &size_hist);
+	histlog2_account(p->d2c_hist, d2c, &d2c_hist);
+	return 0;
+}
+
+static struct trace *blkiomon_alloc_trace(void)
+{
+	struct trace *t = vacant_traces_list;
+	if (t) {
+		vacant_traces_list = t->next;
+		vacant_traces--;
+	} else
+		t = malloc(sizeof(*t));
+	memset(t, 0, sizeof(*t));
+	return t;
+}
+
+static void blkiomon_free_trace(struct trace *t)
+{
+	if (vacant_traces < 256) {
+		t->next = vacant_traces_list;
+		vacant_traces_list = t;
+		vacant_traces++;
+	} else
+		free(t);
+}
+
+static int action(int a)
+{
+	int bits = BLK_TC_WRITE | BLK_TC_READ | BLK_TC_FS | BLK_TC_PC;
+	return a & (BLK_TC_ACT(bits));
+}
+
+static void blkiomon_store_trace(struct trace *t)
+{
+	int i = t->bit.sector % TRACE_HASH_SIZE;
+
+	t->next = thash[i];
+	thash[i] = t;
+}
+
+static struct trace *blkiomon_fetch_trace(struct blk_io_trace *bit)
+{
+	int i = bit->sector % TRACE_HASH_SIZE;
+	struct trace *t, *prev = NULL;
+
+	for (t = thash[i]; t; t = t->next) {
+		if (t->bit.device == bit->device &&
+		    t->bit.sector == bit->sector &&
+		    action(t->bit.action) == action(bit->action)) {
+			if (prev)
+				prev->next = t->next;
+			else
+				thash[i] = t->next;
+			return t;
+		}
+		prev = t;
+	}
+	return NULL;
+}
+
+static struct trace *blkiomon_do_trace(struct trace *t)
+{
+	struct trace *t_stored, *t_old, *t_young;
+
+	/* store trace if there is no match yet */
+	t_stored = blkiomon_fetch_trace(&t->bit);
+	if (!t_stored) {
+		blkiomon_store_trace(t);
+		return blkiomon_alloc_trace();
+	}
+
+	/* figure out older trace and younger trace */
+	if (t_stored->bit.time < t->bit.time) {
+		t_old = t_stored;
+		t_young = t;
+	} else {
+		t_old = t;
+		t_young = t_stored;
+	}
+
+	/* we need an older D trace and a younger C trace */
+	if (t_old->bit.action & BLK_TC_ACT(BLK_TC_ISSUE) &&
+	    t_young->bit.action & BLK_TC_ACT(BLK_TC_COMPLETE)) {
+		/* matching D and C traces - update statistics */
+		match++;
+		blkiomon_account(&t_old->bit, &t_young->bit);
+		blkiomon_free_trace(t_stored);
+		return t;
+	}
+
+	/* no matching D and C traces - keep more recent trace */
+	dump_bits(t_old, t_young, "mismatch");
+	mismatch++;
+	blkiomon_store_trace(t_young);
+	return t_old;
+}
+
+static int blkiomon_dump_drvdata(struct blk_io_trace *bit, void *pdu_buf)
+{
+	if (!drvdata.fn)
+		return 0;
+
+	if (fwrite(bit, sizeof(*bit), 1, drvdata.fp) != 1)
+		goto failed;
+	if (fwrite(pdu_buf, bit->pdu_len, 1, drvdata.fp) != 1)
+		goto failed;
+	if (drvdata.pipe && fflush(drvdata.fp))
+		goto failed;
+	return 0;
+
+failed:
+	fprintf(stderr, "blkiomon: could not write to %s\n", drvdata.fn);
+	fclose(drvdata.fp);
+	drvdata.fn = NULL;
+	return 1;
+}
+
+static int blkiomon_do_fifo(void)
+{
+	struct trace *t;
+	struct blk_io_trace *bit;
+	void *pdu_buf = NULL;
+
+	t = blkiomon_alloc_trace();
+	if (!t)
+		return 1;
+	bit = &t->bit;
+
+	while (up) {
+		if (fread(bit, sizeof(*bit), 1, ifp) != 1) {
+			if (!feof(ifp))
+				fprintf(stderr,
+					"blkiomon: could not read trace");
+			break;
+		}
+		if (ferror(ifp)) {
+			clearerr(ifp);
+			fprintf(stderr, "blkiomon: error while reading trace");
+			break;
+		}
+
+		if (data_is_native == -1 && check_data_endianness(bit->magic)) {
+			fprintf(stderr, "blkiomon: endianess problem\n");
+			break;
+		}
+
+		/* endianess */
+		trace_to_cpu(bit);
+		if (verify_trace(bit)) {
+			fprintf(stderr, "blkiomon: bad trace\n");
+			break;
+		}
+
+		/* read additional trace payload */
+		if (bit->pdu_len) {
+			pdu_buf = realloc(pdu_buf, bit->pdu_len);
+			if (fread(pdu_buf, bit->pdu_len, 1, ifp) != 1) {
+				clearerr(ifp);
+				fprintf(stderr, "blkiomon: could not read payload\n");
+				break;
+			}
+		}
+
+		t->sequence = sequence++;
+
+		/* forward low-level device driver trace to other tool */
+		if (bit->action & BLK_TC_ACT(BLK_TC_DRV_DATA)) {
+			driverdata++;
+			if (blkiomon_dump_drvdata(bit, pdu_buf)) {
+				fprintf(stderr, "blkiomon: could not send trace\n");
+				break;
+			}
+			continue;
+		}
+
+		if (!(bit->action & BLK_TC_ACT(BLK_TC_ISSUE | BLK_TC_COMPLETE)))
+			continue;
+
+		/* try to find matching trace and update statistics */
+		t = blkiomon_do_trace(t);
+		if (!t) {
+			fprintf(stderr, "blkiomon: could not alloc trace\n");
+			break;
+		}
+		bit = &t->bit;
+		/* t and bit will be recycled for next incoming trace */
+	}
+	blkiomon_free_trace(t);
+	free(pdu_buf);
+	return 0;
+}
+
+static int blkiomon_open_output(struct output *out)
+{
+	int mode, vbuf_size;
+
+	if (!out->fn)
+		return 0;
+
+	if (!strcmp(out->fn, "-")) {
+		out->fp = fdopen(STDOUT_FILENO, "w");
+		mode = _IOLBF;
+		vbuf_size = 4096;
+		out->pipe = 1;
+	} else {
+		out->fp = fopen(out->fn, "w");
+		mode = _IOFBF;
+		vbuf_size = 128 * 1024;
+		out->pipe = 0;
+	}
+	if (!out->fp)
+		goto failed;
+	out->buf = malloc(128 * 1024);
+	if (setvbuf(out->fp, out->buf, mode, vbuf_size))
+		goto failed;
+	return 0;
+
+failed:
+	fprintf(stderr, "blkiomon: could not write to %s\n", out->fn);
+	out->fn = NULL;
+	free(out->buf);
+	return 1;
+}
+
+static int blkiomon_open_msg_q(void)
+{
+	key_t key;
+
+	if (!msg_q_name)
+		return 0;
+	if (!msg_q_id || msg_id <= 0)
+		return 1;
+	key = ftok(msg_q_name, msg_q_id);
+	if (key == -1)
+		return 1;
+	while (up) {
+		msg_q = msgget(key, S_IRWXU);
+		if (msg_q >= 0)
+			break;
+	}
+	return (msg_q >= 0 ? 0 : -1);
+}
+
+static void blkiomon_debug(void)
+{
+	int i;
+	struct trace *t;
+
+	if (!debug.fn)
+		return;
+
+	for (i = 0; i < TRACE_HASH_SIZE; i++)
+		for (t = thash[i]; t; t = t->next) {
+			dump_bit(t, "leftover");
+			leftover++;
+		}
+
+	fprintf(debug.fp, "%ld leftover, %ld match, %ld mismatch, "
+		"%ld driverdata, %ld overall\n",
+		leftover, match, mismatch, driverdata, sequence);
+}
+
+#define S_OPTS "b:d:D:h:I:Q:q:m:V"
+
+static char usage_str[] = "\n\nblkiomon " \
+	"-I <interval>       | --interval=<interval>\n" \
+	"[ -h <file>         | --human-readable=<file> ]\n" \
+	"[ -b <file>         | --binary=<file> ]\n" \
+	"[ -D <file>         | --debug=<file> ]\n" \
+	"[ -Q <path name>    | --msg-queue=<path name>]\n" \
+	"[ -q <msg queue id> | --msg-queue-id=<msg queue id>]\n" \
+	"[ -m <msg id>       | --msg-id=<msg id>]\n" \
+	"[ -V                | --version ]\n\n" \
+	"\t-I   Sample interval.\n" \
+	"\t-h   Human-readable output file.\n" \
+	"\t-b   Binary output file.\n" \
+	"\t-d   Output file for data emitted by low level device driver.\n" \
+	"\t-D   Output file for debugging data.\n" \
+	"\t-Qqm Output to message queue using given ID for messages.\n" \
+	"\t-V   Print program version.\n\n";
+
+static struct option l_opts[] = {
+	{
+		.name = "human-readable",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'h'
+	},
+	{
+		.name = "binary",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'b'
+	},
+	{
+		.name = "dump-lldd",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'd'
+	},
+	{
+		.name = "debug",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'D'
+	},
+	{
+		.name = "interval",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'I'
+	},
+	{
+		.name = "msg-queue",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'Q'
+	},
+	{
+		.name = "msg-queue-id",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'q'
+	},
+	{
+		.name = "msg-id",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'm'
+	},
+	{
+		.name = "version",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'V'
+	},
+	{
+		.name = NULL,
+	}
+};
+
+static void blkiomon_signal(int signal)
+{
+	fprintf(stderr, "blkiomon: terminated by signal\n");
+	up = signal & 0;
+}
+
+int main(int argc, char *argv[])
+{
+	int c;
+
+	signal(SIGALRM, blkiomon_signal);
+	signal(SIGINT, blkiomon_signal);
+	signal(SIGTERM, blkiomon_signal);
+	signal(SIGQUIT, blkiomon_signal);
+
+	while ((c = getopt_long(argc, argv, S_OPTS, l_opts, NULL)) != -1) {
+		switch (c) {
+		case 'h':
+			human.fn = optarg;
+			break;
+		case 'b':
+			binary.fn = optarg;
+			break;
+		case 'd':
+			drvdata.fn = optarg;
+			break;
+		case 'D':
+			debug.fn = optarg;
+			break;
+		case 'I':
+			interval = atoi(optarg);
+			break;
+		case 'Q':
+			msg_q_name = optarg;
+			break;
+		case 'q':
+			msg_q_id = atoi(optarg);
+			break;
+		case 'm':
+			msg_id = atoi(optarg);
+			break;
+		case 'V':
+			printf("%s version %s\n", argv[0], blkiomon_version);
+			return 0;
+		default:
+			fprintf(stderr, "Usage: %s", usage_str);
+			return 1;
+		}
+	}
+
+	if (interval <= 0) {
+		fprintf(stderr, "Usage: %s", usage_str);
+		return 1;
+	}
+
+	ifp = fdopen(STDIN_FILENO, "r");
+	if (!ifp) {
+		perror("blkiomon: could not open stdin for reading");
+		return 1;
+	}
+
+	if (blkiomon_open_output(&human))
+		return 1;
+	if (blkiomon_open_output(&binary))
+		return 1;
+	if (blkiomon_open_output(&drvdata))
+		return 1;
+	if (blkiomon_open_output(&debug))
+		return 1;
+	if (blkiomon_open_msg_q())
+		return 1;
+
+	if (pthread_create(&interval_thread, NULL, blkiomon_interval, NULL)) {
+		fprintf(stderr, "blkiomon: could not create thread");
+		return 1;
+	}
+
+	blkiomon_do_fifo();
+
+	blkiomon_debug();
+	return 0;
+}
diff --git a/blkiomon.h b/blkiomon.h
new file mode 100644
index 0000000..2ea1716
--- /dev/null
+++ b/blkiomon.h
@@ -0,0 +1,117 @@
+/*
+ * I/O monitor based on block queue trace data
+ *
+ * Copyright IBM Corp. 2008
+ *
+ * Author(s): Martin Peschke <mp3@de.ibm.com>
+ *
+ *  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
+ */
+
+#ifndef BLKIOMON_H
+#define BLKIOMON_H
+
+#include <string.h>
+
+#include "stats.h"
+#include "blktrace.h"
+
+#define BLKIOMON_SIZE_BUCKETS 16
+#define BLKIOMON_D2C_BUCKETS 25
+struct blkiomon_stat {
+	__u64 time;
+	__u32 size_hist[BLKIOMON_SIZE_BUCKETS];
+	__u32 d2c_hist[BLKIOMON_D2C_BUCKETS];
+	__u32 device;
+	struct minmax size_r;
+	struct minmax size_w;
+	struct minmax d2c_r;
+	struct minmax d2c_w;
+	struct minmax thrput_r;
+	struct minmax thrput_w;
+	__u64 bidir;
+};
+
+static struct histlog2 size_hist = {
+	.first = 0,
+	.delta = 1024,
+	.num = BLKIOMON_SIZE_BUCKETS
+};
+
+static struct histlog2 d2c_hist = {
+	.first = 0,
+	.delta = 8,
+	.num = BLKIOMON_D2C_BUCKETS
+};
+
+static inline void blkiomon_stat_init(struct blkiomon_stat *bstat)
+{
+	memset(bstat, 0, sizeof(*bstat));
+	minmax_init(&bstat->size_r);
+	minmax_init(&bstat->size_w);
+	minmax_init(&bstat->d2c_r);
+	minmax_init(&bstat->d2c_w);
+	minmax_init(&bstat->thrput_r);
+	minmax_init(&bstat->thrput_w);
+}
+
+static inline void blkiomon_stat_to_be(struct blkiomon_stat *bstat)
+{
+	histlog2_to_be(bstat->size_hist, &size_hist);
+	histlog2_to_be(bstat->d2c_hist, &d2c_hist);
+	minmax_to_be(&bstat->size_r);
+	minmax_to_be(&bstat->size_w);
+	minmax_to_be(&bstat->d2c_r);
+	minmax_to_be(&bstat->d2c_w);
+	minmax_to_be(&bstat->thrput_r);
+	minmax_to_be(&bstat->thrput_w);
+	bstat->bidir = cpu_to_be64(bstat->bidir);
+	bstat->time = cpu_to_be64(bstat->time);
+	bstat->device = cpu_to_be32(bstat->device);
+}
+
+static inline void blkiomon_stat_merge(struct blkiomon_stat *dst,
+				       struct blkiomon_stat *src)
+{
+	histlog2_merge(&size_hist, dst->size_hist, src->size_hist);
+	histlog2_merge(&d2c_hist, dst->d2c_hist, src->d2c_hist);
+	minmax_merge(&dst->size_r, &src->size_r);
+	minmax_merge(&dst->size_w, &src->size_w);
+	minmax_merge(&dst->d2c_r, &src->d2c_r);
+	minmax_merge(&dst->d2c_w, &src->d2c_w);
+	minmax_merge(&dst->thrput_r, &src->thrput_r);
+	minmax_merge(&dst->thrput_w, &src->thrput_w);
+	dst->bidir += src->bidir;
+}
+
+static inline void blkiomon_stat_print(FILE *fp, struct blkiomon_stat *p)
+{
+	if (!fp)
+		return;
+
+	fprintf(fp, "\ntime: %s", ctime((void *)&p->time));
+	fprintf(fp, "device: %d,%d\n", MAJOR(p->device), MINOR(p->device));
+	minmax_print(fp, "sizes read (bytes)", &p->size_r);
+	minmax_print(fp, "sizes write (bytes)", &p->size_w);
+	minmax_print(fp, "d2c read (usec)", &p->d2c_r);
+	minmax_print(fp, "d2c write (usec)", &p->d2c_w);
+	minmax_print(fp, "throughput read (bytes/msec)", &p->thrput_r);
+	minmax_print(fp, "throughput write (bytes/msec)", &p->thrput_w);
+	histlog2_print(fp, "sizes histogram (bytes)", p->size_hist, &size_hist);
+	histlog2_print(fp, "d2c histogram (usec)", p->d2c_hist, &d2c_hist);
+	fprintf(fp, "bidirectional requests: %ld\n", (unsigned long)p->bidir);
+}
+
+#endif
diff --git a/blkparse.c b/blkparse.c
new file mode 100644
index 0000000..eec4952
--- /dev/null
+++ b/blkparse.c
@@ -0,0 +1,2877 @@
+/*
+ * block queue tracing parse application
+ *
+ * Copyright (C) 2005 Jens Axboe <axboe@suse.de>
+ * Copyright (C) 2006 Jens Axboe <axboe@kernel.dk>
+ *
+ *  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
+ *
+ */
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <getopt.h>
+#include <errno.h>
+#include <signal.h>
+#include <locale.h>
+#include <libgen.h>
+
+#include "blktrace.h"
+#include "rbtree.h"
+#include "jhash.h"
+
+static char blkparse_version[] = "1.0.1";
+
+struct skip_info {
+	unsigned long start, end;
+	struct skip_info *prev, *next;
+};
+
+struct per_dev_info {
+	dev_t dev;
+	char *name;
+
+	int backwards;
+	unsigned long long events;
+	unsigned long long first_reported_time;
+	unsigned long long last_reported_time;
+	unsigned long long last_read_time;
+	struct io_stats io_stats;
+	unsigned long skips;
+	unsigned long long seq_skips;
+	unsigned int max_depth[2];
+	unsigned int cur_depth[2];
+
+	struct rb_root rb_track;
+
+	int nfiles;
+	int ncpus;
+
+	unsigned long *cpu_map;
+	unsigned int cpu_map_max;
+
+	struct per_cpu_info *cpus;
+};
+
+/*
+ * some duplicated effort here, we can unify this hash and the ppi hash later
+ */
+struct process_pid_map {
+	pid_t pid;
+	char comm[16];
+	struct process_pid_map *hash_next, *list_next;
+};
+
+#define PPM_HASH_SHIFT	(8)
+#define PPM_HASH_SIZE	(1 << PPM_HASH_SHIFT)
+#define PPM_HASH_MASK	(PPM_HASH_SIZE - 1)
+static struct process_pid_map *ppm_hash_table[PPM_HASH_SIZE];
+
+struct per_process_info {
+	struct process_pid_map *ppm;
+	struct io_stats io_stats;
+	struct per_process_info *hash_next, *list_next;
+	int more_than_one;
+
+	/*
+	 * individual io stats
+	 */
+	unsigned long long longest_allocation_wait[2];
+	unsigned long long longest_dispatch_wait[2];
+	unsigned long long longest_completion_wait[2];
+};
+
+#define PPI_HASH_SHIFT	(8)
+#define PPI_HASH_SIZE	(1 << PPI_HASH_SHIFT)
+#define PPI_HASH_MASK	(PPI_HASH_SIZE - 1)
+static struct per_process_info *ppi_hash_table[PPI_HASH_SIZE];
+static struct per_process_info *ppi_list;
+static int ppi_list_entries;
+
+static struct option l_opts[] = {
+ 	{
+		.name = "act-mask",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'a'
+	},
+	{
+		.name = "set-mask",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'A'
+	},
+	{
+		.name = "batch",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'b'
+	},
+	{
+		.name = "input-directory",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'D'
+	},
+	{
+		.name = "dump-binary",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'd'
+	},
+	{
+		.name = "format",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'f'
+	},
+	{
+		.name = "format-spec",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'F'
+	},
+	{
+		.name = "hash-by-name",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'h'
+	},
+	{
+		.name = "input",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'i'
+	},
+	{
+		.name = "no-msgs",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'M'
+	},
+	{
+		.name = "output",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'o'
+	},
+	{
+		.name = "no-text-output",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'O'
+	},
+	{
+		.name = "quiet",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'q'
+	},
+	{
+		.name = "per-program-stats",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 's'
+	},
+	{
+		.name = "track-ios",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 't'
+	},
+	{
+		.name = "stopwatch",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'w'
+	},
+	{
+		.name = "verbose",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'v'
+	},
+	{
+		.name = "version",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'V'
+	},
+	{
+		.name = NULL,
+	}
+};
+
+/*
+ * for sorting the displayed output
+ */
+struct trace {
+	struct blk_io_trace *bit;
+	struct rb_node rb_node;
+	struct trace *next;
+	unsigned long read_sequence;
+};
+
+static struct rb_root rb_sort_root;
+static unsigned long rb_sort_entries;
+
+static struct trace *trace_list;
+
+/*
+ * allocation cache
+ */
+static struct blk_io_trace *bit_alloc_list;
+static struct trace *t_alloc_list;
+
+/*
+ * for tracking individual ios
+ */
+struct io_track {
+	struct rb_node rb_node;
+
+	struct process_pid_map *ppm;
+	__u64 sector;
+	unsigned long long allocation_time;
+	unsigned long long queue_time;
+	unsigned long long dispatch_time;
+	unsigned long long completion_time;
+};
+
+static int ndevices;
+static struct per_dev_info *devices;
+static char *get_dev_name(struct per_dev_info *, char *, int);
+static int trace_rb_insert_last(struct per_dev_info *, struct trace *);
+
+FILE *ofp = NULL;
+static char *output_name;
+static char *input_dir;
+
+static unsigned long long genesis_time;
+static unsigned long long last_allowed_time;
+static unsigned long long stopwatch_start;	/* start from zero by default */
+static unsigned long long stopwatch_end = -1ULL;	/* "infinity" */
+static unsigned long read_sequence;
+
+static int per_process_stats;
+static int per_device_and_cpu_stats = 1;
+static int track_ios;
+static int ppi_hash_by_pid = 1;
+static int verbose;
+static unsigned int act_mask = -1U;
+static int stats_printed;
+static int bin_output_msgs = 1;
+int data_is_native = -1;
+
+static FILE *dump_fp;
+static char *dump_binary;
+
+static unsigned int t_alloc_cache;
+static unsigned int bit_alloc_cache;
+
+#define RB_BATCH_DEFAULT	(512)
+static unsigned int rb_batch = RB_BATCH_DEFAULT;
+
+static int pipeline;
+static char *pipename;
+
+static int text_output = 1;
+
+#define is_done()	(*(volatile int *)(&done))
+static volatile int done;
+
+struct timespec		abs_start_time;
+static unsigned long long start_timestamp;
+
+static int have_drv_data = 0;
+
+#define JHASH_RANDOM	(0x3af5f2ee)
+
+#define CPUS_PER_LONG	(8 * sizeof(unsigned long))
+#define CPU_IDX(cpu)	((cpu) / CPUS_PER_LONG)
+#define CPU_BIT(cpu)	((cpu) & (CPUS_PER_LONG - 1))
+
+static void output_binary(void *buf, int len)
+{
+	if (dump_binary) {
+		size_t n = fwrite(buf, len, 1, dump_fp);
+		if (n != 1) {
+			perror(dump_binary);
+			fclose(dump_fp);
+			dump_binary = NULL;
+		}
+	}
+}
+
+static void resize_cpu_info(struct per_dev_info *pdi, int cpu)
+{
+	struct per_cpu_info *cpus = pdi->cpus;
+	int ncpus = pdi->ncpus;
+	int new_count = cpu + 1;
+	int new_space, size;
+	char *new_start;
+
+	size = new_count * sizeof(struct per_cpu_info);
+	cpus = realloc(cpus, size);
+	if (!cpus) {
+		char name[20];
+		fprintf(stderr, "Out of memory, CPU info for device %s (%d)\n",
+			get_dev_name(pdi, name, sizeof(name)), size);
+		exit(1);
+	}
+
+	new_start = (char *)cpus + (ncpus * sizeof(struct per_cpu_info));
+	new_space = (new_count - ncpus) * sizeof(struct per_cpu_info);
+	memset(new_start, 0, new_space);
+
+	pdi->ncpus = new_count;
+	pdi->cpus = cpus;
+
+	for (new_count = 0; new_count < pdi->ncpus; new_count++) {
+		struct per_cpu_info *pci = &pdi->cpus[new_count];
+
+		if (!pci->fd) {
+			pci->fd = -1;
+			memset(&pci->rb_last, 0, sizeof(pci->rb_last));
+			pci->rb_last_entries = 0;
+			pci->last_sequence = -1;
+		}
+	}
+}
+
+static struct per_cpu_info *get_cpu_info(struct per_dev_info *pdi, int cpu)
+{
+	struct per_cpu_info *pci;
+
+	if (cpu >= pdi->ncpus)
+		resize_cpu_info(pdi, cpu);
+
+	pci = &pdi->cpus[cpu];
+	pci->cpu = cpu;
+	return pci;
+}
+
+
+static int resize_devices(char *name)
+{
+	int size = (ndevices + 1) * sizeof(struct per_dev_info);
+
+	devices = realloc(devices, size);
+	if (!devices) {
+		fprintf(stderr, "Out of memory, device %s (%d)\n", name, size);
+		return 1;
+	}
+	memset(&devices[ndevices], 0, sizeof(struct per_dev_info));
+	devices[ndevices].name = name;
+	ndevices++;
+	return 0;
+}
+
+static struct per_dev_info *get_dev_info(dev_t dev)
+{
+	struct per_dev_info *pdi;
+	int i;
+
+	for (i = 0; i < ndevices; i++) {
+		if (!devices[i].dev)
+			devices[i].dev = dev;
+		if (devices[i].dev == dev)
+			return &devices[i];
+	}
+
+	if (resize_devices(NULL))
+		return NULL;
+
+	pdi = &devices[ndevices - 1];
+	pdi->dev = dev;
+	pdi->first_reported_time = 0;
+	pdi->last_read_time = 0;
+
+	return pdi;
+}
+
+static void insert_skip(struct per_cpu_info *pci, unsigned long start,
+			unsigned long end)
+{
+	struct skip_info *sip;
+
+	for (sip = pci->skips_tail; sip != NULL; sip = sip->prev) {
+		if (end == (sip->start - 1)) {
+			sip->start = start;
+			return;
+		} else if (start == (sip->end + 1)) {
+			sip->end = end;
+			return;
+		}
+	}
+
+	sip = malloc(sizeof(struct skip_info));
+	sip->start = start;
+	sip->end = end;
+	sip->prev = sip->next = NULL;
+	if (pci->skips_tail == NULL)
+		pci->skips_head = pci->skips_tail = sip;
+	else {
+		sip->prev = pci->skips_tail;
+		pci->skips_tail->next = sip;
+		pci->skips_tail = sip;
+	}
+}
+
+static void remove_sip(struct per_cpu_info *pci, struct skip_info *sip)
+{
+	if (sip->prev == NULL) {
+		if (sip->next == NULL)
+			pci->skips_head = pci->skips_tail = NULL;
+		else {
+			pci->skips_head = sip->next;
+			sip->next->prev = NULL;
+		}
+	} else if (sip->next == NULL) {
+		pci->skips_tail = sip->prev;
+		sip->prev->next = NULL;
+	} else {
+		sip->prev->next = sip->next;
+		sip->next->prev = sip->prev;
+	}
+
+	sip->prev = sip->next = NULL;
+	free(sip);
+}
+
+#define IN_SKIP(sip,seq) (((sip)->start <= (seq)) && ((seq) <= sip->end))
+static int check_current_skips(struct per_cpu_info *pci, unsigned long seq)
+{
+	struct skip_info *sip;
+
+	for (sip = pci->skips_tail; sip != NULL; sip = sip->prev) {
+		if (IN_SKIP(sip, seq)) {
+			if (sip->start == seq) {
+				if (sip->end == seq)
+					remove_sip(pci, sip);
+				else
+					sip->start += 1;
+			} else if (sip->end == seq)
+				sip->end -= 1;
+			else {
+				sip->end = seq - 1;
+				insert_skip(pci, seq + 1, sip->end);
+			}
+			return 1;
+		}
+	}
+
+	return 0;
+}
+
+static void collect_pdi_skips(struct per_dev_info *pdi)
+{
+	struct skip_info *sip;
+	int cpu;
+
+	pdi->skips = 0;
+	pdi->seq_skips = 0;
+
+	for (cpu = 0; cpu < pdi->ncpus; cpu++) {
+		struct per_cpu_info *pci = &pdi->cpus[cpu];
+
+		for (sip = pci->skips_head; sip != NULL; sip = sip->next) {
+			pdi->skips++;
+			pdi->seq_skips += (sip->end - sip->start + 1);
+			if (verbose)
+				fprintf(stderr,"(%d,%d): skipping %lu -> %lu\n",
+					MAJOR(pdi->dev), MINOR(pdi->dev),
+					sip->start, sip->end);
+		}
+	}
+}
+
+static void cpu_mark_online(struct per_dev_info *pdi, unsigned int cpu)
+{
+	if (cpu >= pdi->cpu_map_max || !pdi->cpu_map) {
+		int new_max = (cpu + CPUS_PER_LONG) & ~(CPUS_PER_LONG - 1);
+		unsigned long *map = malloc(new_max / sizeof(long));
+
+		memset(map, 0, new_max / sizeof(long));
+
+		if (pdi->cpu_map) {
+			memcpy(map, pdi->cpu_map, pdi->cpu_map_max / sizeof(long));
+			free(pdi->cpu_map);
+		}
+
+		pdi->cpu_map = map;
+		pdi->cpu_map_max = new_max;
+	}
+
+	pdi->cpu_map[CPU_IDX(cpu)] |= (1UL << CPU_BIT(cpu));
+}
+
+static inline void cpu_mark_offline(struct per_dev_info *pdi, int cpu)
+{
+	pdi->cpu_map[CPU_IDX(cpu)] &= ~(1UL << CPU_BIT(cpu));
+}
+
+static inline int cpu_is_online(struct per_dev_info *pdi, int cpu)
+{
+	return (pdi->cpu_map[CPU_IDX(cpu)] & (1UL << CPU_BIT(cpu))) != 0;
+}
+
+static inline int ppm_hash_pid(pid_t pid)
+{
+	return jhash_1word(pid, JHASH_RANDOM) & PPM_HASH_MASK;
+}
+
+static struct process_pid_map *find_ppm(pid_t pid)
+{
+	const int hash_idx = ppm_hash_pid(pid);
+	struct process_pid_map *ppm;
+
+	ppm = ppm_hash_table[hash_idx];
+	while (ppm) {
+		if (ppm->pid == pid)
+			return ppm;
+
+		ppm = ppm->hash_next;
+	}
+
+	return NULL;
+}
+
+static struct process_pid_map *add_ppm_hash(pid_t pid, const char *name)
+{
+	const int hash_idx = ppm_hash_pid(pid);
+	struct process_pid_map *ppm;
+
+	ppm = find_ppm(pid);
+	if (!ppm) {
+		ppm = malloc(sizeof(*ppm));
+		memset(ppm, 0, sizeof(*ppm));
+		ppm->pid = pid;
+		strcpy(ppm->comm, name);
+		ppm->hash_next = ppm_hash_table[hash_idx];
+		ppm_hash_table[hash_idx] = ppm;
+	}
+
+	return ppm;
+}
+
+static void handle_notify(struct blk_io_trace *bit)
+{
+	void	*payload = (caddr_t) bit + sizeof(*bit);
+	__u32	two32[2];
+
+	switch (bit->action) {
+	case BLK_TN_PROCESS:
+		add_ppm_hash(bit->pid, payload);
+		break;
+
+	case BLK_TN_TIMESTAMP:
+		if (bit->pdu_len != sizeof(two32))
+			return;
+		memcpy(two32, payload, sizeof(two32));
+		if (!data_is_native) {
+			two32[0] = be32_to_cpu(two32[0]);
+			two32[1] = be32_to_cpu(two32[1]);
+		}
+		start_timestamp = bit->time;
+		abs_start_time.tv_sec  = two32[0];
+		abs_start_time.tv_nsec = two32[1];
+		if (abs_start_time.tv_nsec < 0) {
+			abs_start_time.tv_sec--;
+			abs_start_time.tv_nsec += 1000000000;
+		}
+
+		break;
+
+	case BLK_TN_MESSAGE:
+		if (bit->pdu_len > 0) {
+			char msg[bit->pdu_len+1];
+
+			memcpy(msg, (char *)payload, bit->pdu_len);
+			msg[bit->pdu_len] = '\0';
+
+			fprintf(ofp,
+				"%3d,%-3d %2d %8s %5d.%09lu %5u %2s %3s %s\n",
+				MAJOR(bit->device), MINOR(bit->device),
+				bit->cpu, "0", (int) SECONDS(bit->time),
+				(unsigned long) NANO_SECONDS(bit->time),
+				0, "m", "N", msg);
+		}
+		break;
+
+	default:
+		/* Ignore unknown notify events */
+		;
+	}
+}
+
+char *find_process_name(pid_t pid)
+{
+	struct process_pid_map *ppm = find_ppm(pid);
+
+	if (ppm)
+		return ppm->comm;
+
+	return NULL;
+}
+
+static inline int ppi_hash_pid(pid_t pid)
+{
+	return jhash_1word(pid, JHASH_RANDOM) & PPI_HASH_MASK;
+}
+
+static inline int ppi_hash_name(const char *name)
+{
+	return jhash(name, 16, JHASH_RANDOM) & PPI_HASH_MASK;
+}
+
+static inline int ppi_hash(struct per_process_info *ppi)
+{
+	struct process_pid_map *ppm = ppi->ppm;
+
+	if (ppi_hash_by_pid)
+		return ppi_hash_pid(ppm->pid);
+
+	return ppi_hash_name(ppm->comm);
+}
+
+static inline void add_ppi_to_hash(struct per_process_info *ppi)
+{
+	const int hash_idx = ppi_hash(ppi);
+
+	ppi->hash_next = ppi_hash_table[hash_idx];
+	ppi_hash_table[hash_idx] = ppi;
+}
+
+static inline void add_ppi_to_list(struct per_process_info *ppi)
+{
+	ppi->list_next = ppi_list;
+	ppi_list = ppi;
+	ppi_list_entries++;
+}
+
+static struct per_process_info *find_ppi_by_name(char *name)
+{
+	const int hash_idx = ppi_hash_name(name);
+	struct per_process_info *ppi;
+
+	ppi = ppi_hash_table[hash_idx];
+	while (ppi) {
+		struct process_pid_map *ppm = ppi->ppm;
+
+		if (!strcmp(ppm->comm, name))
+			return ppi;
+
+		ppi = ppi->hash_next;
+	}
+
+	return NULL;
+}
+
+static struct per_process_info *find_ppi_by_pid(pid_t pid)
+{
+	const int hash_idx = ppi_hash_pid(pid);
+	struct per_process_info *ppi;
+
+	ppi = ppi_hash_table[hash_idx];
+	while (ppi) {
+		struct process_pid_map *ppm = ppi->ppm;
+
+		if (ppm->pid == pid)
+			return ppi;
+
+		ppi = ppi->hash_next;
+	}
+
+	return NULL;
+}
+
+static struct per_process_info *find_ppi(pid_t pid)
+{
+	struct per_process_info *ppi;
+	char *name;
+
+	if (ppi_hash_by_pid)
+		return find_ppi_by_pid(pid);
+
+	name = find_process_name(pid);
+	if (!name)
+		return NULL;
+
+	ppi = find_ppi_by_name(name);
+	if (ppi && ppi->ppm->pid != pid)
+		ppi->more_than_one = 1;
+
+	return ppi;
+}
+
+/*
+ * struct trace and blktrace allocation cache, we do potentially
+ * millions of mallocs for these structures while only using at most
+ * a few thousand at the time
+ */
+static inline void t_free(struct trace *t)
+{
+	if (t_alloc_cache < 1024) {
+		t->next = t_alloc_list;
+		t_alloc_list = t;
+		t_alloc_cache++;
+	} else
+		free(t);
+}
+
+static inline struct trace *t_alloc(void)
+{
+	struct trace *t = t_alloc_list;
+
+	if (t) {
+		t_alloc_list = t->next;
+		t_alloc_cache--;
+		return t;
+	}
+
+	return malloc(sizeof(*t));
+}
+
+static inline void bit_free(struct blk_io_trace *bit)
+{
+	if (bit_alloc_cache < 1024 && !bit->pdu_len) {
+		/*
+		 * abuse a 64-bit field for a next pointer for the free item
+		 */
+		bit->time = (__u64) (unsigned long) bit_alloc_list;
+		bit_alloc_list = (struct blk_io_trace *) bit;
+		bit_alloc_cache++;
+	} else
+		free(bit);
+}
+
+static inline struct blk_io_trace *bit_alloc(void)
+{
+	struct blk_io_trace *bit = bit_alloc_list;
+
+	if (bit) {
+		bit_alloc_list = (struct blk_io_trace *) (unsigned long) \
+				 bit->time;
+		bit_alloc_cache--;
+		return bit;
+	}
+
+	return malloc(sizeof(*bit));
+}
+
+static inline void __put_trace_last(struct per_dev_info *pdi, struct trace *t)
+{
+	struct per_cpu_info *pci = get_cpu_info(pdi, t->bit->cpu);
+
+	rb_erase(&t->rb_node, &pci->rb_last);
+	pci->rb_last_entries--;
+
+	bit_free(t->bit);
+	t_free(t);
+}
+
+static void put_trace(struct per_dev_info *pdi, struct trace *t)
+{
+	rb_erase(&t->rb_node, &rb_sort_root);
+	rb_sort_entries--;
+
+	trace_rb_insert_last(pdi, t);
+}
+
+static inline int trace_rb_insert(struct trace *t, struct rb_root *root)
+{
+	struct rb_node **p = &root->rb_node;
+	struct rb_node *parent = NULL;
+	struct trace *__t;
+
+	while (*p) {
+		parent = *p;
+
+		__t = rb_entry(parent, struct trace, rb_node);
+
+		if (t->bit->time < __t->bit->time)
+			p = &(*p)->rb_left;
+		else if (t->bit->time > __t->bit->time)
+			p = &(*p)->rb_right;
+		else if (t->bit->device < __t->bit->device)
+			p = &(*p)->rb_left;
+		else if (t->bit->device > __t->bit->device)
+			p = &(*p)->rb_right;
+		else if (t->bit->sequence < __t->bit->sequence)
+			p = &(*p)->rb_left;
+		else	/* >= sequence */
+			p = &(*p)->rb_right;
+	}
+
+	rb_link_node(&t->rb_node, parent, p);
+	rb_insert_color(&t->rb_node, root);
+	return 0;
+}
+
+static inline int trace_rb_insert_sort(struct trace *t)
+{
+	if (!trace_rb_insert(t, &rb_sort_root)) {
+		rb_sort_entries++;
+		return 0;
+	}
+
+	return 1;
+}
+
+static int trace_rb_insert_last(struct per_dev_info *pdi, struct trace *t)
+{
+	struct per_cpu_info *pci = get_cpu_info(pdi, t->bit->cpu);
+
+	if (trace_rb_insert(t, &pci->rb_last))
+		return 1;
+
+	pci->rb_last_entries++;
+
+	if (pci->rb_last_entries > rb_batch * pdi->nfiles) {
+		struct rb_node *n = rb_first(&pci->rb_last);
+
+		t = rb_entry(n, struct trace, rb_node);
+		__put_trace_last(pdi, t);
+	}
+
+	return 0;
+}
+
+static struct trace *trace_rb_find(dev_t device, unsigned long sequence,
+				   struct rb_root *root, int order)
+{
+	struct rb_node *n = root->rb_node;
+	struct rb_node *prev = NULL;
+	struct trace *__t;
+
+	while (n) {
+		__t = rb_entry(n, struct trace, rb_node);
+		prev = n;
+
+		if (device < __t->bit->device)
+			n = n->rb_left;
+		else if (device > __t->bit->device)
+			n = n->rb_right;
+		else if (sequence < __t->bit->sequence)
+			n = n->rb_left;
+		else if (sequence > __t->bit->sequence)
+			n = n->rb_right;
+		else
+			return __t;
+	}
+
+	/*
+	 * hack - the list may not be sequence ordered because some
+	 * events don't have sequence and time matched. so we end up
+	 * being a little off in the rb lookup here, because we don't
+	 * know the time we are looking for. compensate by browsing
+	 * a little ahead from the last entry to find the match
+	 */
+	if (order && prev) {
+		int max = 5;
+
+		while (((n = rb_next(prev)) != NULL) && max--) {
+			__t = rb_entry(n, struct trace, rb_node);
+
+			if (__t->bit->device == device &&
+			    __t->bit->sequence == sequence)
+				return __t;
+
+			prev = n;
+		}
+	}
+
+	return NULL;
+}
+
+static inline struct trace *trace_rb_find_last(struct per_dev_info *pdi,
+					       struct per_cpu_info *pci,
+					       unsigned long seq)
+{
+	return trace_rb_find(pdi->dev, seq, &pci->rb_last, 0);
+}
+
+static inline int track_rb_insert(struct per_dev_info *pdi,struct io_track *iot)
+{
+	struct rb_node **p = &pdi->rb_track.rb_node;
+	struct rb_node *parent = NULL;
+	struct io_track *__iot;
+
+	while (*p) {
+		parent = *p;
+		__iot = rb_entry(parent, struct io_track, rb_node);
+
+		if (iot->sector < __iot->sector)
+			p = &(*p)->rb_left;
+		else if (iot->sector > __iot->sector)
+			p = &(*p)->rb_right;
+		else {
+			fprintf(stderr,
+				"sector alias (%Lu) on device %d,%d!\n",
+				(unsigned long long) iot->sector,
+				MAJOR(pdi->dev), MINOR(pdi->dev));
+			return 1;
+		}
+	}
+
+	rb_link_node(&iot->rb_node, parent, p);
+	rb_insert_color(&iot->rb_node, &pdi->rb_track);
+	return 0;
+}
+
+static struct io_track *__find_track(struct per_dev_info *pdi, __u64 sector)
+{
+	struct rb_node *n = pdi->rb_track.rb_node;
+	struct io_track *__iot;
+
+	while (n) {
+		__iot = rb_entry(n, struct io_track, rb_node);
+
+		if (sector < __iot->sector)
+			n = n->rb_left;
+		else if (sector > __iot->sector)
+			n = n->rb_right;
+		else
+			return __iot;
+	}
+
+	return NULL;
+}
+
+static struct io_track *find_track(struct per_dev_info *pdi, pid_t pid,
+				   __u64 sector)
+{
+	struct io_track *iot;
+
+	iot = __find_track(pdi, sector);
+	if (!iot) {
+		iot = malloc(sizeof(*iot));
+		iot->ppm = find_ppm(pid);
+		if (!iot->ppm)
+			iot->ppm = add_ppm_hash(pid, "unknown");
+		iot->sector = sector;
+		track_rb_insert(pdi, iot);
+	}
+
+	return iot;
+}
+
+static void log_track_frontmerge(struct per_dev_info *pdi,
+				 struct blk_io_trace *t)
+{
+	struct io_track *iot;
+
+	if (!track_ios)
+		return;
+
+	iot = __find_track(pdi, t->sector + t_sec(t));
+	if (!iot) {
+		if (verbose)
+			fprintf(stderr, "merge not found for (%d,%d): %llu\n",
+				MAJOR(pdi->dev), MINOR(pdi->dev),
+				(unsigned long long) t->sector + t_sec(t));
+		return;
+	}
+
+	rb_erase(&iot->rb_node, &pdi->rb_track);
+	iot->sector -= t_sec(t);
+	track_rb_insert(pdi, iot);
+}
+
+static void log_track_getrq(struct per_dev_info *pdi, struct blk_io_trace *t)
+{
+	struct io_track *iot;
+
+	if (!track_ios)
+		return;
+
+	iot = find_track(pdi, t->pid, t->sector);
+	iot->allocation_time = t->time;
+}
+
+static inline int is_remapper(struct per_dev_info *pdi)
+{
+	int major = MAJOR(pdi->dev);
+
+	return (major == 253 || major == 9);
+}
+
+/*
+ * for md/dm setups, the interesting cycle is Q -> C. So track queueing
+ * time here, as dispatch time
+ */
+static void log_track_queue(struct per_dev_info *pdi, struct blk_io_trace *t)
+{
+	struct io_track *iot;
+
+	if (!track_ios)
+		return;
+	if (!is_remapper(pdi))
+		return;
+
+	iot = find_track(pdi, t->pid, t->sector);
+	iot->dispatch_time = t->time;
+}
+
+/*
+ * return time between rq allocation and insertion
+ */
+static unsigned long long log_track_insert(struct per_dev_info *pdi,
+					   struct blk_io_trace *t)
+{
+	unsigned long long elapsed;
+	struct io_track *iot;
+
+	if (!track_ios)
+		return -1;
+
+	iot = find_track(pdi, t->pid, t->sector);
+	iot->queue_time = t->time;
+
+	if (!iot->allocation_time)
+		return -1;
+
+	elapsed = iot->queue_time - iot->allocation_time;
+
+	if (per_process_stats) {
+		struct per_process_info *ppi = find_ppi(iot->ppm->pid);
+		int w = (t->action & BLK_TC_ACT(BLK_TC_WRITE)) != 0;
+
+		if (ppi && elapsed > ppi->longest_allocation_wait[w])
+			ppi->longest_allocation_wait[w] = elapsed;
+	}
+
+	return elapsed;
+}
+
+/*
+ * return time between queue and issue
+ */
+static unsigned long long log_track_issue(struct per_dev_info *pdi,
+					  struct blk_io_trace *t)
+{
+	unsigned long long elapsed;
+	struct io_track *iot;
+
+	if (!track_ios)
+		return -1;
+	if ((t->action & BLK_TC_ACT(BLK_TC_FS)) == 0)
+		return -1;
+
+	iot = __find_track(pdi, t->sector);
+	if (!iot) {
+		if (verbose)
+			fprintf(stderr, "issue not found for (%d,%d): %llu\n",
+				MAJOR(pdi->dev), MINOR(pdi->dev),
+				(unsigned long long) t->sector);
+		return -1;
+	}
+
+	iot->dispatch_time = t->time;
+	elapsed = iot->dispatch_time - iot->queue_time;
+
+	if (per_process_stats) {
+		struct per_process_info *ppi = find_ppi(iot->ppm->pid);
+		int w = (t->action & BLK_TC_ACT(BLK_TC_WRITE)) != 0;
+
+		if (ppi && elapsed > ppi->longest_dispatch_wait[w])
+			ppi->longest_dispatch_wait[w] = elapsed;
+	}
+
+	return elapsed;
+}
+
+/*
+ * return time between dispatch and complete
+ */
+static unsigned long long log_track_complete(struct per_dev_info *pdi,
+					     struct blk_io_trace *t)
+{
+	unsigned long long elapsed;
+	struct io_track *iot;
+
+	if (!track_ios)
+		return -1;
+
+	iot = __find_track(pdi, t->sector);
+	if (!iot) {
+		if (verbose)
+			fprintf(stderr,"complete not found for (%d,%d): %llu\n",
+				MAJOR(pdi->dev), MINOR(pdi->dev),
+				(unsigned long long) t->sector);
+		return -1;
+	}
+
+	iot->completion_time = t->time;
+	elapsed = iot->completion_time - iot->dispatch_time;
+
+	if (per_process_stats) {
+		struct per_process_info *ppi = find_ppi(iot->ppm->pid);
+		int w = (t->action & BLK_TC_ACT(BLK_TC_WRITE)) != 0;
+
+		if (ppi && elapsed > ppi->longest_completion_wait[w])
+			ppi->longest_completion_wait[w] = elapsed;
+	}
+
+	/*
+	 * kill the trace, we don't need it after completion
+	 */
+	rb_erase(&iot->rb_node, &pdi->rb_track);
+	free(iot);
+
+	return elapsed;
+}
+
+
+static struct io_stats *find_process_io_stats(pid_t pid)
+{
+	struct per_process_info *ppi = find_ppi(pid);
+
+	if (!ppi) {
+		ppi = malloc(sizeof(*ppi));
+		memset(ppi, 0, sizeof(*ppi));
+		ppi->ppm = find_ppm(pid);
+		if (!ppi->ppm)
+			ppi->ppm = add_ppm_hash(pid, "unknown");
+		add_ppi_to_hash(ppi);
+		add_ppi_to_list(ppi);
+	}
+
+	return &ppi->io_stats;
+}
+
+static char *get_dev_name(struct per_dev_info *pdi, char *buffer, int size)
+{
+	if (pdi->name)
+		snprintf(buffer, size, "%s", pdi->name);
+	else
+		snprintf(buffer, size, "%d,%d",MAJOR(pdi->dev),MINOR(pdi->dev));
+	return buffer;
+}
+
+static void check_time(struct per_dev_info *pdi, struct blk_io_trace *bit)
+{
+	unsigned long long this = bit->time;
+	unsigned long long last = pdi->last_reported_time;
+
+	pdi->backwards = (this < last) ? 'B' : ' ';
+	pdi->last_reported_time = this;
+}
+
+static inline void __account_m(struct io_stats *ios, struct blk_io_trace *t,
+			       int rw)
+{
+	if (rw) {
+		ios->mwrites++;
+		ios->mwrite_kb += t_kb(t);
+	} else {
+		ios->mreads++;
+		ios->mread_kb += t_kb(t);
+	}
+}
+
+static inline void account_m(struct blk_io_trace *t, struct per_cpu_info *pci,
+			     int rw)
+{
+	__account_m(&pci->io_stats, t, rw);
+
+	if (per_process_stats) {
+		struct io_stats *ios = find_process_io_stats(t->pid);
+
+		__account_m(ios, t, rw);
+	}
+}
+
+static inline void __account_pc_queue(struct io_stats *ios,
+				      struct blk_io_trace *t, int rw)
+{
+	if (rw) {
+		ios->qwrites_pc++;
+		ios->qwrite_kb_pc += t_kb(t);
+	} else {
+		ios->qreads_pc++;
+		ios->qread_kb += t_kb(t);
+	}
+}
+
+static inline void account_pc_queue(struct blk_io_trace *t,
+				    struct per_cpu_info *pci, int rw)
+{
+	__account_pc_queue(&pci->io_stats, t, rw);
+
+	if (per_process_stats) {
+		struct io_stats *ios = find_process_io_stats(t->pid);
+
+		__account_pc_queue(ios, t, rw);
+	}
+}
+
+static inline void __account_pc_issue(struct io_stats *ios, int rw,
+				      unsigned int bytes)
+{
+	if (rw) {
+		ios->iwrites_pc++;
+		ios->iwrite_kb_pc += bytes >> 10;
+	} else {
+		ios->ireads_pc++;
+		ios->iread_kb_pc += bytes >> 10;
+	}
+}
+
+static inline void account_pc_issue(struct blk_io_trace *t,
+				    struct per_cpu_info *pci, int rw)
+{
+	__account_pc_issue(&pci->io_stats, rw, t->bytes);
+
+	if (per_process_stats) {
+		struct io_stats *ios = find_process_io_stats(t->pid);
+
+		__account_pc_issue(ios, rw, t->bytes);
+	}
+}
+
+static inline void __account_pc_requeue(struct io_stats *ios,
+					struct blk_io_trace *t, int rw)
+{
+	if (rw) {
+		ios->wrqueue_pc++;
+		ios->iwrite_kb_pc -= t_kb(t);
+	} else {
+		ios->rrqueue_pc++;
+		ios->iread_kb_pc -= t_kb(t);
+	}
+}
+
+static inline void account_pc_requeue(struct blk_io_trace *t,
+				      struct per_cpu_info *pci, int rw)
+{
+	__account_pc_requeue(&pci->io_stats, t, rw);
+
+	if (per_process_stats) {
+		struct io_stats *ios = find_process_io_stats(t->pid);
+
+		__account_pc_requeue(ios, t, rw);
+	}
+}
+
+static inline void __account_pc_c(struct io_stats *ios, int rw)
+{
+	if (rw)
+		ios->cwrites_pc++;
+	else
+		ios->creads_pc++;
+}
+
+static inline void account_pc_c(struct blk_io_trace *t,
+				struct per_cpu_info *pci, int rw)
+{
+	__account_pc_c(&pci->io_stats, rw);
+
+	if (per_process_stats) {
+		struct io_stats *ios = find_process_io_stats(t->pid);
+
+		__account_pc_c(ios, rw);
+	}
+}
+
+static inline void __account_queue(struct io_stats *ios, struct blk_io_trace *t,
+				   int rw)
+{
+	if (rw) {
+		ios->qwrites++;
+		ios->qwrite_kb += t_kb(t);
+	} else {
+		ios->qreads++;
+		ios->qread_kb += t_kb(t);
+	}
+}
+
+static inline void account_queue(struct blk_io_trace *t,
+				 struct per_cpu_info *pci, int rw)
+{
+	__account_queue(&pci->io_stats, t, rw);
+
+	if (per_process_stats) {
+		struct io_stats *ios = find_process_io_stats(t->pid);
+
+		__account_queue(ios, t, rw);
+	}
+}
+
+static inline void __account_c(struct io_stats *ios, int rw, int bytes)
+{
+	if (rw) {
+		ios->cwrites++;
+		ios->cwrite_kb += bytes >> 10;
+	} else {
+		ios->creads++;
+		ios->cread_kb += bytes >> 10;
+	}
+}
+
+static inline void account_c(struct blk_io_trace *t, struct per_cpu_info *pci,
+			     int rw, int bytes)
+{
+	__account_c(&pci->io_stats, rw, bytes);
+
+	if (per_process_stats) {
+		struct io_stats *ios = find_process_io_stats(t->pid);
+
+		__account_c(ios, rw, bytes);
+	}
+}
+
+static inline void __account_issue(struct io_stats *ios, int rw,
+				   unsigned int bytes)
+{
+	if (rw) {
+		ios->iwrites++;
+		ios->iwrite_kb += bytes >> 10;
+	} else {
+		ios->ireads++;
+		ios->iread_kb += bytes >> 10;
+	}
+}
+
+static inline void account_issue(struct blk_io_trace *t,
+				 struct per_cpu_info *pci, int rw)
+{
+	__account_issue(&pci->io_stats, rw, t->bytes);
+
+	if (per_process_stats) {
+		struct io_stats *ios = find_process_io_stats(t->pid);
+
+		__account_issue(ios, rw, t->bytes);
+	}
+}
+
+static inline void __account_unplug(struct io_stats *ios, int timer)
+{
+	if (timer)
+		ios->timer_unplugs++;
+	else
+		ios->io_unplugs++;
+}
+
+static inline void account_unplug(struct blk_io_trace *t,
+				  struct per_cpu_info *pci, int timer)
+{
+	__account_unplug(&pci->io_stats, timer);
+
+	if (per_process_stats) {
+		struct io_stats *ios = find_process_io_stats(t->pid);
+
+		__account_unplug(ios, timer);
+	}
+}
+
+static inline void __account_requeue(struct io_stats *ios,
+				     struct blk_io_trace *t, int rw)
+{
+	if (rw) {
+		ios->wrqueue++;
+		ios->iwrite_kb -= t_kb(t);
+	} else {
+		ios->rrqueue++;
+		ios->iread_kb -= t_kb(t);
+	}
+}
+
+static inline void account_requeue(struct blk_io_trace *t,
+				   struct per_cpu_info *pci, int rw)
+{
+	__account_requeue(&pci->io_stats, t, rw);
+
+	if (per_process_stats) {
+		struct io_stats *ios = find_process_io_stats(t->pid);
+
+		__account_requeue(ios, t, rw);
+	}
+}
+
+static void log_complete(struct per_dev_info *pdi, struct per_cpu_info *pci,
+			 struct blk_io_trace *t, char *act)
+{
+	process_fmt(act, pci, t, log_track_complete(pdi, t), 0, NULL);
+}
+
+static void log_insert(struct per_dev_info *pdi, struct per_cpu_info *pci,
+		       struct blk_io_trace *t, char *act)
+{
+	process_fmt(act, pci, t, log_track_insert(pdi, t), 0, NULL);
+}
+
+static void log_queue(struct per_cpu_info *pci, struct blk_io_trace *t,
+		      char *act)
+{
+	process_fmt(act, pci, t, -1, 0, NULL);
+}
+
+static void log_issue(struct per_dev_info *pdi, struct per_cpu_info *pci,
+		      struct blk_io_trace *t, char *act)
+{
+	process_fmt(act, pci, t, log_track_issue(pdi, t), 0, NULL);
+}
+
+static void log_merge(struct per_dev_info *pdi, struct per_cpu_info *pci,
+		      struct blk_io_trace *t, char *act)
+{
+	if (act[0] == 'F')
+		log_track_frontmerge(pdi, t);
+
+	process_fmt(act, pci, t, -1ULL, 0, NULL);
+}
+
+static void log_action(struct per_cpu_info *pci, struct blk_io_trace *t,
+			char *act)
+{
+	process_fmt(act, pci, t, -1ULL, 0, NULL);
+}
+
+static void log_generic(struct per_cpu_info *pci, struct blk_io_trace *t,
+			char *act)
+{
+	process_fmt(act, pci, t, -1ULL, 0, NULL);
+}
+
+static void log_unplug(struct per_cpu_info *pci, struct blk_io_trace *t,
+		      char *act)
+{
+	process_fmt(act, pci, t, -1ULL, 0, NULL);
+}
+
+static void log_split(struct per_cpu_info *pci, struct blk_io_trace *t,
+		      char *act)
+{
+	process_fmt(act, pci, t, -1ULL, 0, NULL);
+}
+
+static void log_pc(struct per_cpu_info *pci, struct blk_io_trace *t, char *act)
+{
+	unsigned char *buf = (unsigned char *) t + sizeof(*t);
+
+	process_fmt(act, pci, t, -1ULL, t->pdu_len, buf);
+}
+
+static void dump_trace_pc(struct blk_io_trace *t, struct per_dev_info *pdi,
+			  struct per_cpu_info *pci)
+{
+	int w = (t->action & BLK_TC_ACT(BLK_TC_WRITE)) != 0;
+	int act = t->action & 0xffff;
+
+	switch (act) {
+		case __BLK_TA_QUEUE:
+			log_generic(pci, t, "Q");
+			account_pc_queue(t, pci, w);
+			break;
+		case __BLK_TA_GETRQ:
+			log_generic(pci, t, "G");
+			break;
+		case __BLK_TA_SLEEPRQ:
+			log_generic(pci, t, "S");
+			break;
+		case __BLK_TA_REQUEUE:
+			/*
+			 * can happen if we miss traces, don't let it go
+			 * below zero
+			 */
+			if (pdi->cur_depth[w])
+				pdi->cur_depth[w]--;
+			account_pc_requeue(t, pci, w);
+			log_generic(pci, t, "R");
+			break;
+		case __BLK_TA_ISSUE:
+			account_pc_issue(t, pci, w);
+			pdi->cur_depth[w]++;
+			if (pdi->cur_depth[w] > pdi->max_depth[w])
+				pdi->max_depth[w] = pdi->cur_depth[w];
+			log_pc(pci, t, "D");
+			break;
+		case __BLK_TA_COMPLETE:
+			if (pdi->cur_depth[w])
+				pdi->cur_depth[w]--;
+			log_pc(pci, t, "C");
+			account_pc_c(t, pci, w);
+			break;
+		case __BLK_TA_INSERT:
+			log_pc(pci, t, "I");
+			break;
+		default:
+			fprintf(stderr, "Bad pc action %x\n", act);
+			break;
+	}
+}
+
+static void dump_trace_fs(struct blk_io_trace *t, struct per_dev_info *pdi,
+			  struct per_cpu_info *pci)
+{
+	int w = (t->action & BLK_TC_ACT(BLK_TC_WRITE)) != 0;
+	int act = t->action & 0xffff;
+
+	switch (act) {
+		case __BLK_TA_QUEUE:
+			log_track_queue(pdi, t);
+			account_queue(t, pci, w);
+			log_queue(pci, t, "Q");
+			break;
+		case __BLK_TA_INSERT:
+			log_insert(pdi, pci, t, "I");
+			break;
+		case __BLK_TA_BACKMERGE:
+			account_m(t, pci, w);
+			log_merge(pdi, pci, t, "M");
+			break;
+		case __BLK_TA_FRONTMERGE:
+			account_m(t, pci, w);
+			log_merge(pdi, pci, t, "F");
+			break;
+		case __BLK_TA_GETRQ:
+			log_track_getrq(pdi, t);
+			log_generic(pci, t, "G");
+			break;
+		case __BLK_TA_SLEEPRQ:
+			log_generic(pci, t, "S");
+			break;
+		case __BLK_TA_REQUEUE:
+			/*
+			 * can happen if we miss traces, don't let it go
+			 * below zero
+			 */
+			if (pdi->cur_depth[w])
+				pdi->cur_depth[w]--;
+			account_requeue(t, pci, w);
+			log_queue(pci, t, "R");
+			break;
+		case __BLK_TA_ISSUE:
+			account_issue(t, pci, w);
+			pdi->cur_depth[w]++;
+			if (pdi->cur_depth[w] > pdi->max_depth[w])
+				pdi->max_depth[w] = pdi->cur_depth[w];
+			log_issue(pdi, pci, t, "D");
+			break;
+		case __BLK_TA_COMPLETE:
+			if (pdi->cur_depth[w])
+				pdi->cur_depth[w]--;
+			account_c(t, pci, w, t->bytes);
+			log_complete(pdi, pci, t, "C");
+			break;
+		case __BLK_TA_PLUG:
+			log_action(pci, t, "P");
+			break;
+		case __BLK_TA_UNPLUG_IO:
+			account_unplug(t, pci, 0);
+			log_unplug(pci, t, "U");
+			break;
+		case __BLK_TA_UNPLUG_TIMER:
+			account_unplug(t, pci, 1);
+			log_unplug(pci, t, "UT");
+			break;
+		case __BLK_TA_SPLIT:
+			log_split(pci, t, "X");
+			break;
+		case __BLK_TA_BOUNCE:
+			log_generic(pci, t, "B");
+			break;
+		case __BLK_TA_REMAP:
+			log_generic(pci, t, "A");
+			break;
+		case __BLK_TA_DRV_DATA:
+			have_drv_data = 1;
+			/* dump to binary file only */
+			break;
+		default:
+			fprintf(stderr, "Bad fs action %x\n", t->action);
+			break;
+	}
+}
+
+static void dump_trace(struct blk_io_trace *t, struct per_cpu_info *pci,
+		       struct per_dev_info *pdi)
+{
+	if (text_output) {
+		if (t->action == BLK_TN_MESSAGE)
+			handle_notify(t);
+		else if (t->action & BLK_TC_ACT(BLK_TC_PC))
+			dump_trace_pc(t, pdi, pci);
+		else
+			dump_trace_fs(t, pdi, pci);
+	}
+
+	if (!pdi->events)
+		pdi->first_reported_time = t->time;
+
+	pdi->events++;
+
+	if (bin_output_msgs ||
+			    !(t->action & BLK_TC_ACT(BLK_TC_NOTIFY) &&
+			      t->action == BLK_TN_MESSAGE))
+		output_binary(t, sizeof(*t) + t->pdu_len);
+}
+
+/*
+ * print in a proper way, not too small and not too big. if more than
+ * 1000,000K, turn into M and so on
+ */
+static char *size_cnv(char *dst, unsigned long long num, int in_kb)
+{
+	char suff[] = { '\0', 'K', 'M', 'G', 'P' };
+	unsigned int i = 0;
+
+	if (in_kb)
+		i++;
+
+	while (num > 1000 * 1000ULL && (i < sizeof(suff) - 1)) {
+		i++;
+		num /= 1000;
+	}
+
+	sprintf(dst, "%'8Lu%c", num, suff[i]);
+	return dst;
+}
+
+static void dump_io_stats(struct per_dev_info *pdi, struct io_stats *ios,
+			  char *msg)
+{
+	static char x[256], y[256];
+
+	fprintf(ofp, "%s\n", msg);
+
+	fprintf(ofp, " Reads Queued:    %s, %siB\t", size_cnv(x, ios->qreads, 0), size_cnv(y, ios->qread_kb, 1));
+	fprintf(ofp, " Writes Queued:    %s, %siB\n", size_cnv(x, ios->qwrites, 0), size_cnv(y, ios->qwrite_kb, 1));
+	fprintf(ofp, " Read Dispatches: %s, %siB\t", size_cnv(x, ios->ireads, 0), size_cnv(y, ios->iread_kb, 1));
+	fprintf(ofp, " Write Dispatches: %s, %siB\n", size_cnv(x, ios->iwrites, 0), size_cnv(y, ios->iwrite_kb, 1));
+	fprintf(ofp, " Reads Requeued:  %s\t\t", size_cnv(x, ios->rrqueue, 0));
+	fprintf(ofp, " Writes Requeued:  %s\n", size_cnv(x, ios->wrqueue, 0));
+	fprintf(ofp, " Reads Completed: %s, %siB\t", size_cnv(x, ios->creads, 0), size_cnv(y, ios->cread_kb, 1));
+	fprintf(ofp, " Writes Completed: %s, %siB\n", size_cnv(x, ios->cwrites, 0), size_cnv(y, ios->cwrite_kb, 1));
+	fprintf(ofp, " Read Merges:     %s, %siB\t", size_cnv(x, ios->mreads, 0), size_cnv(y, ios->mread_kb, 1));
+	fprintf(ofp, " Write Merges:     %s, %siB\n", size_cnv(x, ios->mwrites, 0), size_cnv(y, ios->mwrite_kb, 1));
+	if (pdi) {
+		fprintf(ofp, " Read depth:      %'8u%8c\t", pdi->max_depth[0], ' ');
+		fprintf(ofp, " Write depth:      %'8u\n", pdi->max_depth[1]);
+	}
+	if (ios->qreads_pc || ios->qwrites_pc || ios->ireads_pc || ios->iwrites_pc ||
+	    ios->rrqueue_pc || ios->wrqueue_pc || ios->creads_pc || ios->cwrites_pc) {
+		fprintf(ofp, " PC Reads Queued: %s, %siB\t", size_cnv(x, ios->qreads_pc, 0), size_cnv(y, ios->qread_kb_pc, 1));
+		fprintf(ofp, " PC Writes Queued: %s, %siB\n", size_cnv(x, ios->qwrites_pc, 0), size_cnv(y, ios->qwrite_kb_pc, 1));
+		fprintf(ofp, " PC Read Disp.:   %s, %siB\t", size_cnv(x, ios->ireads_pc, 0), size_cnv(y, ios->iread_kb_pc, 1));
+		fprintf(ofp, " PC Write Disp.:   %s, %siB\n", size_cnv(x, ios->iwrites_pc, 0), size_cnv(y, ios->iwrite_kb_pc, 1));
+		fprintf(ofp, " PC Reads Req.:   %s\t\t", size_cnv(x, ios->rrqueue_pc, 0));
+		fprintf(ofp, " PC Writes Req.:   %s\n", size_cnv(x, ios->wrqueue_pc, 0));
+		fprintf(ofp, " PC Reads Compl.: %s\t\t", size_cnv(x, ios->creads_pc, 0));
+		fprintf(ofp, " PC Writes Compl.: %s\n", size_cnv(x, ios->cwrites, 0));
+	}
+	fprintf(ofp, " IO unplugs:      %'8lu%8c\t", ios->io_unplugs, ' ');
+	fprintf(ofp, " Timer unplugs:    %'8lu\n", ios->timer_unplugs);
+}
+
+static void dump_wait_stats(struct per_process_info *ppi)
+{
+	unsigned long rawait = ppi->longest_allocation_wait[0] / 1000;
+	unsigned long rdwait = ppi->longest_dispatch_wait[0] / 1000;
+	unsigned long rcwait = ppi->longest_completion_wait[0] / 1000;
+	unsigned long wawait = ppi->longest_allocation_wait[1] / 1000;
+	unsigned long wdwait = ppi->longest_dispatch_wait[1] / 1000;
+	unsigned long wcwait = ppi->longest_completion_wait[1] / 1000;
+
+	fprintf(ofp, " Allocation wait: %'8lu%8c\t", rawait, ' ');
+	fprintf(ofp, " Allocation wait:  %'8lu\n", wawait);
+	fprintf(ofp, " Dispatch wait:   %'8lu%8c\t", rdwait, ' ');
+	fprintf(ofp, " Dispatch wait:    %'8lu\n", wdwait);
+	fprintf(ofp, " Completion wait: %'8lu%8c\t", rcwait, ' ');
+	fprintf(ofp, " Completion wait:  %'8lu\n", wcwait);
+}
+
+static int ppi_name_compare(const void *p1, const void *p2)
+{
+	struct per_process_info *ppi1 = *((struct per_process_info **) p1);
+	struct per_process_info *ppi2 = *((struct per_process_info **) p2);
+	int res;
+
+	res = strverscmp(ppi1->ppm->comm, ppi2->ppm->comm);
+	if (!res)
+		res = ppi1->ppm->pid > ppi2->ppm->pid;
+
+	return res;
+}
+
+static void sort_process_list(void)
+{
+	struct per_process_info **ppis;
+	struct per_process_info *ppi;
+	int i = 0;
+
+	ppis = malloc(ppi_list_entries * sizeof(struct per_process_info *));
+
+	ppi = ppi_list;
+	while (ppi) {
+		ppis[i++] = ppi;
+		ppi = ppi->list_next;
+	}
+
+	qsort(ppis, ppi_list_entries, sizeof(ppi), ppi_name_compare);
+
+	i = ppi_list_entries - 1;
+	ppi_list = NULL;
+	while (i >= 0) {
+		ppi = ppis[i];
+
+		ppi->list_next = ppi_list;
+		ppi_list = ppi;
+		i--;
+	}
+
+	free(ppis);
+}
+
+static void show_process_stats(void)
+{
+	struct per_process_info *ppi;
+
+	sort_process_list();
+
+	ppi = ppi_list;
+	while (ppi) {
+		struct process_pid_map *ppm = ppi->ppm;
+		char name[64];
+
+		if (ppi->more_than_one)
+			sprintf(name, "%s (%u, ...)", ppm->comm, ppm->pid);
+		else
+			sprintf(name, "%s (%u)", ppm->comm, ppm->pid);
+
+		dump_io_stats(NULL, &ppi->io_stats, name);
+		dump_wait_stats(ppi);
+		ppi = ppi->list_next;
+	}
+
+	fprintf(ofp, "\n");
+}
+
+static void show_device_and_cpu_stats(void)
+{
+	struct per_dev_info *pdi;
+	struct per_cpu_info *pci;
+	struct io_stats total, *ios;
+	unsigned long long rrate, wrate, msec;
+	int i, j, pci_events;
+	char line[3 + 8/*cpu*/ + 2 + 32/*dev*/ + 3];
+	char name[32];
+	double ratio;
+
+	for (pdi = devices, i = 0; i < ndevices; i++, pdi++) {
+
+		memset(&total, 0, sizeof(total));
+		pci_events = 0;
+
+		if (i > 0)
+			fprintf(ofp, "\n");
+
+		for (pci = pdi->cpus, j = 0; j < pdi->ncpus; j++, pci++) {
+			if (!pci->nelems)
+				continue;
+
+			ios = &pci->io_stats;
+			total.qreads += ios->qreads;
+			total.qwrites += ios->qwrites;
+			total.creads += ios->creads;
+			total.cwrites += ios->cwrites;
+			total.mreads += ios->mreads;
+			total.mwrites += ios->mwrites;
+			total.ireads += ios->ireads;
+			total.iwrites += ios->iwrites;
+			total.rrqueue += ios->rrqueue;
+			total.wrqueue += ios->wrqueue;
+			total.qread_kb += ios->qread_kb;
+			total.qwrite_kb += ios->qwrite_kb;
+			total.cread_kb += ios->cread_kb;
+			total.cwrite_kb += ios->cwrite_kb;
+			total.iread_kb += ios->iread_kb;
+			total.iwrite_kb += ios->iwrite_kb;
+			total.mread_kb += ios->mread_kb;
+			total.mwrite_kb += ios->mwrite_kb;
+
+			total.qreads_pc += ios->qreads_pc;
+			total.qwrites_pc += ios->qwrites_pc;
+			total.creads_pc += ios->creads_pc;
+			total.cwrites_pc += ios->cwrites_pc;
+			total.ireads_pc += ios->ireads_pc;
+			total.iwrites_pc += ios->iwrites_pc;
+			total.rrqueue_pc += ios->rrqueue_pc;
+			total.wrqueue_pc += ios->wrqueue_pc;
+			total.qread_kb_pc += ios->qread_kb_pc;
+			total.qwrite_kb_pc += ios->qwrite_kb_pc;
+			total.iread_kb_pc += ios->iread_kb_pc;
+			total.iwrite_kb_pc += ios->iwrite_kb_pc;
+
+			total.timer_unplugs += ios->timer_unplugs;
+			total.io_unplugs += ios->io_unplugs;
+
+			snprintf(line, sizeof(line) - 1, "CPU%d (%s):",
+				 j, get_dev_name(pdi, name, sizeof(name)));
+			dump_io_stats(pdi, ios, line);
+			pci_events++;
+		}
+
+		if (pci_events > 1) {
+			fprintf(ofp, "\n");
+			snprintf(line, sizeof(line) - 1, "Total (%s):",
+				 get_dev_name(pdi, name, sizeof(name)));
+			dump_io_stats(NULL, &total, line);
+		}
+
+		wrate = rrate = 0;
+		msec = (pdi->last_reported_time - pdi->first_reported_time) / 1000000;
+		if (msec) {
+			rrate = 1000 * total.cread_kb / msec;
+			wrate = 1000 * total.cwrite_kb / msec;
+		}
+
+		fprintf(ofp, "\nThroughput (R/W): %'LuKiB/s / %'LuKiB/s\n",
+			rrate, wrate);
+		fprintf(ofp, "Events (%s): %'Lu entries\n",
+			get_dev_name(pdi, line, sizeof(line)), pdi->events);
+
+		collect_pdi_skips(pdi);
+		if (!pdi->skips && !pdi->events)
+			ratio = 0.0;
+		else
+			ratio = 100.0 * ((double)pdi->seq_skips /
+					(double)(pdi->events + pdi->seq_skips));
+		fprintf(ofp, "Skips: %'lu forward (%'llu - %5.1lf%%)\n",
+			pdi->skips, pdi->seq_skips, ratio);
+	}
+}
+
+static void find_genesis(void)
+{
+	struct trace *t = trace_list;
+
+	genesis_time = -1ULL;
+	while (t != NULL) {
+		if (t->bit->time < genesis_time)
+			genesis_time = t->bit->time;
+
+		t = t->next;
+	}
+
+	/* The time stamp record will usually be the first
+	 * record in the trace, but not always.
+	 */
+	if (start_timestamp
+	 && start_timestamp != genesis_time) {
+		long delta = genesis_time - start_timestamp;
+
+		abs_start_time.tv_sec  += SECONDS(delta);
+		abs_start_time.tv_nsec += NANO_SECONDS(delta);
+		if (abs_start_time.tv_nsec < 0) {
+			abs_start_time.tv_nsec += 1000000000;
+			abs_start_time.tv_sec -= 1;
+		} else
+		if (abs_start_time.tv_nsec > 1000000000) {
+			abs_start_time.tv_nsec -= 1000000000;
+			abs_start_time.tv_sec += 1;
+		}
+	}
+}
+
+static inline int check_stopwatch(struct blk_io_trace *bit)
+{
+	if (bit->time < stopwatch_end &&
+	    bit->time >= stopwatch_start)
+		return 0;
+
+	return 1;
+}
+
+/*
+ * return youngest entry read
+ */
+static int sort_entries(unsigned long long *youngest)
+{
+	struct per_dev_info *pdi = NULL;
+	struct per_cpu_info *pci = NULL;
+	struct trace *t;
+
+	if (!genesis_time)
+		find_genesis();
+
+	*youngest = 0;
+	while ((t = trace_list) != NULL) {
+		struct blk_io_trace *bit = t->bit;
+
+		trace_list = t->next;
+
+		bit->time -= genesis_time;
+
+		if (bit->time < *youngest || !*youngest)
+			*youngest = bit->time;
+
+		if (!pdi || pdi->dev != bit->device) {
+			pdi = get_dev_info(bit->device);
+			pci = NULL;
+		}
+
+		if (!pci || pci->cpu != bit->cpu)
+			pci = get_cpu_info(pdi, bit->cpu);
+
+		if (bit->sequence < pci->smallest_seq_read)
+			pci->smallest_seq_read = bit->sequence;
+
+		if (check_stopwatch(bit)) {
+			bit_free(bit);
+			t_free(t);
+			continue;
+		}
+
+		if (trace_rb_insert_sort(t))
+			return -1;
+	}
+
+	return 0;
+}
+
+/*
+ * to continue, we must have traces from all online cpus in the tree
+ */
+static int check_cpu_map(struct per_dev_info *pdi)
+{
+	unsigned long *cpu_map;
+	struct rb_node *n;
+	struct trace *__t;
+	unsigned int i;
+	int ret, cpu;
+
+	/*
+	 * create a map of the cpus we have traces for
+	 */
+	cpu_map = malloc(pdi->cpu_map_max / sizeof(long));
+	n = rb_first(&rb_sort_root);
+	while (n) {
+		__t = rb_entry(n, struct trace, rb_node);
+		cpu = __t->bit->cpu;
+
+		cpu_map[CPU_IDX(cpu)] |= (1UL << CPU_BIT(cpu));
+		n = rb_next(n);
+	}
+
+	/*
+	 * we can't continue if pdi->cpu_map has entries set that we don't
+	 * have in the sort rbtree. the opposite is not a problem, though
+	 */
+	ret = 0;
+	for (i = 0; i < pdi->cpu_map_max / CPUS_PER_LONG; i++) {
+		if (pdi->cpu_map[i] & ~(cpu_map[i])) {
+			ret = 1;
+			break;
+		}
+	}
+
+	free(cpu_map);
+	return ret;
+}
+
+static int check_sequence(struct per_dev_info *pdi, struct trace *t, int force)
+{
+	struct blk_io_trace *bit = t->bit;
+	unsigned long expected_sequence;
+	struct per_cpu_info *pci;
+	struct trace *__t;
+
+	pci = get_cpu_info(pdi, bit->cpu);
+	expected_sequence = pci->last_sequence + 1;
+
+	if (!expected_sequence) {
+		/*
+		 * 1 should be the first entry, just allow it
+		 */
+		if (bit->sequence == 1)
+			return 0;
+		if (bit->sequence == pci->smallest_seq_read)
+			return 0;
+
+		return check_cpu_map(pdi);
+	}
+
+	if (bit->sequence == expected_sequence)
+		return 0;
+
+	/*
+	 * we may not have seen that sequence yet. if we are not doing
+	 * the final run, break and wait for more entries.
+	 */
+	if (expected_sequence < pci->smallest_seq_read) {
+		__t = trace_rb_find_last(pdi, pci, expected_sequence);
+		if (!__t)
+			goto skip;
+
+		__put_trace_last(pdi, __t);
+		return 0;
+	} else if (!force) {
+		return 1;
+	} else {
+skip:
+		if (check_current_skips(pci, bit->sequence))
+			return 0;
+
+		if (expected_sequence < bit->sequence)
+			insert_skip(pci, expected_sequence, bit->sequence - 1);
+		return 0;
+	}
+}
+
+static void show_entries_rb(int force)
+{
+	struct per_dev_info *pdi = NULL;
+	struct per_cpu_info *pci = NULL;
+	struct blk_io_trace *bit;
+	struct rb_node *n;
+	struct trace *t;
+
+	while ((n = rb_first(&rb_sort_root)) != NULL) {
+		if (is_done() && !force && !pipeline)
+			break;
+
+		t = rb_entry(n, struct trace, rb_node);
+		bit = t->bit;
+
+		if (read_sequence - t->read_sequence < 1 && !force)
+			break;
+
+		if (!pdi || pdi->dev != bit->device) {
+			pdi = get_dev_info(bit->device);
+			pci = NULL;
+		}
+
+		if (!pdi) {
+			fprintf(stderr, "Unknown device ID? (%d,%d)\n",
+				MAJOR(bit->device), MINOR(bit->device));
+			break;
+		}
+
+		if (check_sequence(pdi, t, force))
+			break;
+
+		if (!force && bit->time > last_allowed_time)
+			break;
+
+		check_time(pdi, bit);
+
+		if (!pci || pci->cpu != bit->cpu)
+			pci = get_cpu_info(pdi, bit->cpu);
+
+		pci->last_sequence = bit->sequence;
+
+		pci->nelems++;
+
+		if (bit->action & (act_mask << BLK_TC_SHIFT))
+			dump_trace(bit, pci, pdi);
+
+		put_trace(pdi, t);
+	}
+}
+
+static int read_data(int fd, void *buffer, int bytes, int block, int *fdblock)
+{
+	int ret, bytes_left, fl;
+	void *p;
+
+	if (block != *fdblock) {
+		fl = fcntl(fd, F_GETFL);
+
+		if (!block) {
+			*fdblock = 0;
+			fcntl(fd, F_SETFL, fl | O_NONBLOCK);
+		} else {
+			*fdblock = 1;
+			fcntl(fd, F_SETFL, fl & ~O_NONBLOCK);
+		}
+	}
+
+	bytes_left = bytes;
+	p = buffer;
+	while (bytes_left > 0) {
+		ret = read(fd, p, bytes_left);
+		if (!ret)
+			return 1;
+		else if (ret < 0) {
+			if (errno != EAGAIN) {
+				perror("read");
+				return -1;
+			}
+
+			/*
+			 * never do partial reads. we can return if we
+			 * didn't read anything and we should not block,
+			 * otherwise wait for data
+			 */
+			if ((bytes_left == bytes) && !block)
+				return 1;
+
+			usleep(10);
+			continue;
+		} else {
+			p += ret;
+			bytes_left -= ret;
+		}
+	}
+
+	return 0;
+}
+
+static inline __u16 get_pdulen(struct blk_io_trace *bit)
+{
+	if (data_is_native)
+		return bit->pdu_len;
+
+	return __bswap_16(bit->pdu_len);
+}
+
+static inline __u32 get_magic(struct blk_io_trace *bit)
+{
+	if (data_is_native)
+		return bit->magic;
+
+	return __bswap_32(bit->magic);
+}
+
+static int read_events(int fd, int always_block, int *fdblock)
+{
+	struct per_dev_info *pdi = NULL;
+	unsigned int events = 0;
+
+	while (!is_done() && events < rb_batch) {
+		struct blk_io_trace *bit;
+		struct trace *t;
+		int pdu_len, should_block, ret;
+		__u32 magic;
+
+		bit = bit_alloc();
+
+		should_block = !events || always_block;
+
+		ret = read_data(fd, bit, sizeof(*bit), should_block, fdblock);
+		if (ret) {
+			bit_free(bit);
+			if (!events && ret < 0)
+				events = ret;
+			break;
+		}
+
+		/*
+		 * look at first trace to check whether we need to convert
+		 * data in the future
+		 */
+		if (data_is_native == -1 && check_data_endianness(bit->magic))
+			break;
+
+		magic = get_magic(bit);
+		if ((magic & 0xffffff00) != BLK_IO_TRACE_MAGIC) {
+			fprintf(stderr, "Bad magic %x\n", magic);
+			break;
+		}
+
+		pdu_len = get_pdulen(bit);
+		if (pdu_len) {
+			void *ptr = realloc(bit, sizeof(*bit) + pdu_len);
+
+			if (read_data(fd, ptr + sizeof(*bit), pdu_len, 1, fdblock)) {
+				bit_free(ptr);
+				break;
+			}
+
+			bit = ptr;
+		}
+
+		trace_to_cpu(bit);
+
+		if (verify_trace(bit)) {
+			bit_free(bit);
+			continue;
+		}
+
+		/*
+		 * not a real trace, so grab and handle it here
+		 */
+		if (bit->action & BLK_TC_ACT(BLK_TC_NOTIFY) && bit->action != BLK_TN_MESSAGE) {
+			handle_notify(bit);
+			output_binary(bit, sizeof(*bit) + bit->pdu_len);
+			continue;
+		}
+
+		t = t_alloc();
+		memset(t, 0, sizeof(*t));
+		t->bit = bit;
+		t->read_sequence = read_sequence;
+
+		t->next = trace_list;
+		trace_list = t;
+
+		if (!pdi || pdi->dev != bit->device)
+			pdi = get_dev_info(bit->device);
+
+		if (bit->time > pdi->last_read_time)
+			pdi->last_read_time = bit->time;
+
+		events++;
+	}
+
+	return events;
+}
+
+/*
+ * Managing input streams
+ */
+
+struct ms_stream {
+	struct ms_stream *next;
+	struct trace *first, *last;
+	struct per_dev_info *pdi;
+	unsigned int cpu;
+};
+
+#define MS_HASH(d, c) ((MAJOR(d) & 0xff) ^ (MINOR(d) & 0xff) ^ (cpu & 0xff))
+
+struct ms_stream *ms_head;
+struct ms_stream *ms_hash[256];
+
+static void ms_sort(struct ms_stream *msp);
+static int ms_prime(struct ms_stream *msp);
+
+static inline struct trace *ms_peek(struct ms_stream *msp)
+{
+	return (msp == NULL) ? NULL : msp->first;
+}
+
+static inline __u64 ms_peek_time(struct ms_stream *msp)
+{
+	return ms_peek(msp)->bit->time;
+}
+
+static inline void ms_resort(struct ms_stream *msp)
+{
+	if (msp->next && ms_peek_time(msp) > ms_peek_time(msp->next)) {
+		ms_head = msp->next;
+		msp->next = NULL;
+		ms_sort(msp);
+	}
+}
+
+static inline void ms_deq(struct ms_stream *msp)
+{
+	msp->first = msp->first->next;
+	if (!msp->first) {
+		msp->last = NULL;
+		if (!ms_prime(msp)) {
+			ms_head = msp->next;
+			msp->next = NULL;
+			return;
+		}
+	}
+
+	ms_resort(msp);
+}
+
+static void ms_sort(struct ms_stream *msp)
+{
+	__u64 msp_t = ms_peek_time(msp);
+	struct ms_stream *this_msp = ms_head;
+
+	if (this_msp == NULL)
+		ms_head = msp;
+	else if (msp_t < ms_peek_time(this_msp)) {
+		msp->next = this_msp;
+		ms_head = msp;
+	}
+	else {
+		while (this_msp->next && ms_peek_time(this_msp->next) < msp_t)
+			this_msp = this_msp->next;
+
+		msp->next = this_msp->next;
+		this_msp->next = msp;
+	}
+}
+
+static int ms_prime(struct ms_stream *msp)
+{
+	__u32 magic;
+	unsigned int i;
+	struct trace *t;
+	struct per_dev_info *pdi = msp->pdi;
+	struct per_cpu_info *pci = get_cpu_info(pdi, msp->cpu);
+	struct blk_io_trace *bit = NULL;
+	int ret, pdu_len, ndone = 0;
+
+	for (i = 0; !is_done() && pci->fd >= 0 && i < rb_batch; i++) {
+		bit = bit_alloc();
+		ret = read_data(pci->fd, bit, sizeof(*bit), 1, &pci->fdblock);
+		if (ret)
+			goto err;
+
+		if (data_is_native == -1 && check_data_endianness(bit->magic))
+			goto err;
+
+		magic = get_magic(bit);
+		if ((magic & 0xffffff00) != BLK_IO_TRACE_MAGIC) {
+			fprintf(stderr, "Bad magic %x\n", magic);
+			goto err;
+
+		}
+
+		pdu_len = get_pdulen(bit);
+		if (pdu_len) {
+			void *ptr = realloc(bit, sizeof(*bit) + pdu_len);
+			ret = read_data(pci->fd, ptr + sizeof(*bit), pdu_len,
+							     1, &pci->fdblock);
+			if (ret) {
+				free(ptr);
+				bit = NULL;
+				goto err;
+			}
+
+			bit = ptr;
+		}
+
+		trace_to_cpu(bit);
+		if (verify_trace(bit))
+			goto err;
+
+		if (bit->action & BLK_TC_ACT(BLK_TC_NOTIFY) && bit->action != BLK_TN_MESSAGE) {
+			handle_notify(bit);
+			output_binary(bit, sizeof(*bit) + bit->pdu_len);
+			bit_free(bit);
+
+			i -= 1;
+			continue;
+		}
+
+		if (bit->time > pdi->last_read_time)
+			pdi->last_read_time = bit->time;
+
+		t = t_alloc();
+		memset(t, 0, sizeof(*t));
+		t->bit = bit;
+
+		if (msp->first == NULL)
+			msp->first = msp->last = t;
+		else {
+			msp->last->next = t;
+			msp->last = t;
+		}
+
+		ndone++;
+	}
+
+	return ndone;
+
+err:
+	if (bit) bit_free(bit);
+
+	cpu_mark_offline(pdi, pci->cpu);
+	close(pci->fd);
+	pci->fd = -1;
+
+	return ndone;
+}
+
+static struct ms_stream *ms_alloc(struct per_dev_info *pdi, int cpu)
+{
+	struct ms_stream *msp = malloc(sizeof(*msp));
+
+	msp->next = NULL;
+	msp->first = msp->last = NULL;
+	msp->pdi = pdi;
+	msp->cpu = cpu;
+
+	if (ms_prime(msp))
+		ms_sort(msp);
+
+	return msp;
+}
+
+static int setup_file(struct per_dev_info *pdi, int cpu)
+{
+	int len = 0;
+	struct stat st;
+	char *p, *dname;
+	struct per_cpu_info *pci = get_cpu_info(pdi, cpu);
+
+	pci->cpu = cpu;
+	pci->fdblock = -1;
+
+	p = strdup(pdi->name);
+	dname = dirname(p);
+	if (strcmp(dname, ".")) {
+		input_dir = dname;
+		p = strdup(pdi->name);
+		strcpy(pdi->name, basename(p));
+	}
+	free(p);
+
+	if (input_dir)
+		len = sprintf(pci->fname, "%s/", input_dir);
+
+	snprintf(pci->fname + len, sizeof(pci->fname)-1-len,
+		 "%s.blktrace.%d", pdi->name, pci->cpu);
+	if (stat(pci->fname, &st) < 0)
+		return 0;
+	if (!st.st_size)
+		return 1;
+
+	pci->fd = open(pci->fname, O_RDONLY);
+	if (pci->fd < 0) {
+		perror(pci->fname);
+		return 0;
+	}
+
+	printf("Input file %s added\n", pci->fname);
+	cpu_mark_online(pdi, pci->cpu);
+
+	pdi->nfiles++;
+	ms_alloc(pdi, pci->cpu);
+
+	return 1;
+}
+
+static int handle(struct ms_stream *msp)
+{
+	struct trace *t;
+	struct per_dev_info *pdi;
+	struct per_cpu_info *pci;
+	struct blk_io_trace *bit;
+
+	t = ms_peek(msp);
+
+	bit = t->bit;
+	pdi = msp->pdi;
+	pci = get_cpu_info(pdi, msp->cpu);
+	pci->nelems++;
+	bit->time -= genesis_time;
+
+	if (t->bit->time > stopwatch_end)
+		return 0;
+
+	pdi->last_reported_time = bit->time;
+	if ((bit->action & (act_mask << BLK_TC_SHIFT))&&
+	    t->bit->time >= stopwatch_start)
+		dump_trace(bit, pci, pdi);
+
+	ms_deq(msp);
+
+	if (text_output)
+		trace_rb_insert_last(pdi, t);
+	else {
+		bit_free(t->bit);
+		t_free(t);
+	}
+
+	return 1;
+}
+
+/*
+ * Check if we need to sanitize the name. We allow 'foo', or if foo.blktrace.X
+ * is given, then strip back down to 'foo' to avoid missing files.
+ */
+static int name_fixup(char *name)
+{
+	char *b;
+
+	if (!name)
+		return 1;
+
+	b = strstr(name, ".blktrace.");
+	if (b)
+		*b = '\0';
+
+	return 0;
+}
+
+static int do_file(void)
+{
+	int i, cpu, ret;
+	struct per_dev_info *pdi;
+
+	/*
+	 * first prepare all files for reading
+	 */
+	for (i = 0; i < ndevices; i++) {
+		pdi = &devices[i];
+		ret = name_fixup(pdi->name);
+		if (ret)
+			return ret;
+
+		for (cpu = 0; setup_file(pdi, cpu); cpu++)
+			;
+	}
+
+	/*
+	 * Get the initial time stamp
+	 */
+	if (ms_head)
+		genesis_time = ms_peek_time(ms_head);
+
+	/*
+	 * Keep processing traces while any are left
+	 */
+	while (!is_done() && ms_head && handle(ms_head))
+		;
+
+	return 0;
+}
+
+static void do_pipe(int fd)
+{
+	unsigned long long youngest;
+	int events, fdblock;
+
+	last_allowed_time = -1ULL;
+	fdblock = -1;
+	while ((events = read_events(fd, 0, &fdblock)) > 0) {
+		read_sequence++;
+	
+#if 0
+		smallest_seq_read = -1U;
+#endif
+
+		if (sort_entries(&youngest))
+			break;
+
+		if (youngest > stopwatch_end)
+			break;
+
+		show_entries_rb(0);
+	}
+
+	if (rb_sort_entries)
+		show_entries_rb(1);
+}
+
+static int do_fifo(void)
+{
+	int fd;
+
+	if (!strcmp(pipename, "-"))
+		fd = dup(STDIN_FILENO);
+	else
+		fd = open(pipename, O_RDONLY);
+
+	if (fd == -1) {
+		perror("dup stdin");
+		return -1;
+	}
+
+	do_pipe(fd);
+	close(fd);
+	return 0;
+}
+
+static void show_stats(void)
+{
+	if (!ofp)
+		return;
+	if (stats_printed)
+		return;
+
+	stats_printed = 1;
+
+	if (per_process_stats)
+		show_process_stats();
+
+	if (per_device_and_cpu_stats)
+		show_device_and_cpu_stats();
+
+	fflush(ofp);
+}
+
+static void handle_sigint(__attribute__((__unused__)) int sig)
+{
+	done = 1;
+}
+
+/*
+ * Extract start and duration times from a string, allowing
+ * us to specify a time interval of interest within a trace.
+ * Format: "duration" (start is zero) or "start:duration".
+ */
+static int find_stopwatch_interval(char *string)
+{
+	double value;
+	char *sp;
+
+	value = strtod(string, &sp);
+	if (sp == string) {
+		fprintf(stderr,"Invalid stopwatch timer: %s\n", string);
+		return 1;
+	}
+	if (*sp == ':') {
+		stopwatch_start = DOUBLE_TO_NANO_ULL(value);
+		string = sp + 1;
+		value = strtod(string, &sp);
+		if (sp == string || *sp != '\0') {
+			fprintf(stderr,"Invalid stopwatch duration time: %s\n",
+				string);
+			return 1;
+		}
+	} else if (*sp != '\0') {
+		fprintf(stderr,"Invalid stopwatch start timer: %s\n", string);
+		return 1;
+	}
+	stopwatch_end = DOUBLE_TO_NANO_ULL(value);
+	if (stopwatch_end <= stopwatch_start) {
+		fprintf(stderr, "Invalid stopwatch interval: %Lu -> %Lu\n",
+			stopwatch_start, stopwatch_end);
+		return 1;
+	}
+
+	return 0;
+}
+
+static int is_pipe(const char *str)
+{
+	struct stat st;
+
+	if (!strcmp(str, "-"))
+		return 1;
+	if (!stat(str, &st) && S_ISFIFO(st.st_mode))
+		return 1;
+
+	return 0;
+}
+
+#define S_OPTS  "a:A:b:D:d:f:F:hi:o:Oqstw:vVM"
+static char usage_str[] =    "\n\n" \
+	"-i <file>           | --input=<file>\n" \
+	"[ -a <action field> | --act-mask=<action field> ]\n" \
+	"[ -A <action mask>  | --set-mask=<action mask> ]\n" \
+	"[ -b <traces>       | --batch=<traces> ]\n" \
+	"[ -d <file>         | --dump-binary=<file> ]\n" \
+	"[ -D <dir>          | --input-directory=<dir> ]\n" \
+	"[ -f <format>       | --format=<format> ]\n" \
+	"[ -F <spec>         | --format-spec=<spec> ]\n" \
+	"[ -h                | --hash-by-name ]\n" \
+	"[ -o <file>         | --output=<file> ]\n" \
+	"[ -O                | --no-text-output ]\n" \
+	"[ -q                | --quiet ]\n" \
+	"[ -s                | --per-program-stats ]\n" \
+	"[ -t                | --track-ios ]\n" \
+	"[ -w <time>         | --stopwatch=<time> ]\n" \
+	"[ -M                | --no-msgs\n" \
+	"[ -v                | --verbose ]\n" \
+	"[ -V                | --version ]\n\n" \
+	"\t-b stdin read batching\n" \
+	"\t-d Output file. If specified, binary data is written to file\n" \
+	"\t-D Directory to prepend to input file names\n" \
+	"\t-f Output format. Customize the output format. The format field\n" \
+	"\t   identifies can be found in the documentation\n" \
+	"\t-F Format specification. Can be found in the documentation\n" \
+	"\t-h Hash processes by name, not pid\n" \
+	"\t-i Input file containing trace data, or '-' for stdin\n" \
+	"\t-o Output file. If not given, output is stdout\n" \
+	"\t-O Do NOT output text data\n" \
+	"\t-q Quiet. Don't display any stats at the end of the trace\n" \
+	"\t-s Show per-program io statistics\n" \
+	"\t-t Track individual ios. Will tell you the time a request took\n" \
+	"\t   to get queued, to get dispatched, and to get completed\n" \
+	"\t-w Only parse data between the given time interval in seconds.\n" \
+	"\t   If 'start' isn't given, blkparse defaults the start time to 0\n" \
+	"\t-M Do not output messages to binary file\n" \
+	"\t-v More verbose for marginal errors\n" \
+	"\t-V Print program version info\n\n";
+
+static void usage(char *prog)
+{
+	fprintf(stderr, "Usage: %s %s %s", prog, blkparse_version, usage_str);
+}
+
+int main(int argc, char *argv[])
+{
+	int i, c, ret, mode;
+	int act_mask_tmp = 0;
+	char *ofp_buffer = NULL;
+	char *bin_ofp_buffer = NULL;
+
+	while ((c = getopt_long(argc, argv, S_OPTS, l_opts, NULL)) != -1) {
+		switch (c) {
+		case 'a':
+			i = find_mask_map(optarg);
+			if (i < 0) {
+				fprintf(stderr,"Invalid action mask %s\n",
+					optarg);
+				return 1;
+			}
+			act_mask_tmp |= i;
+			break;
+
+		case 'A':
+			if ((sscanf(optarg, "%x", &i) != 1) || 
+							!valid_act_opt(i)) {
+				fprintf(stderr,
+					"Invalid set action mask %s/0x%x\n",
+					optarg, i);
+				return 1;
+			}
+			act_mask_tmp = i;
+			break;
+		case 'i':
+			if (is_pipe(optarg) && !pipeline) {
+				pipeline = 1;
+				pipename = strdup(optarg);
+			} else if (resize_devices(optarg) != 0)
+				return 1;
+			break;
+		case 'D':
+			input_dir = optarg;
+			break;
+		case 'o':
+			output_name = optarg;
+			break;
+		case 'O':
+			text_output = 0;
+			break;
+		case 'b':
+			rb_batch = atoi(optarg);
+			if (rb_batch <= 0)
+				rb_batch = RB_BATCH_DEFAULT;
+			break;
+		case 's':
+			per_process_stats = 1;
+			break;
+		case 't':
+			track_ios = 1;
+			break;
+		case 'q':
+			per_device_and_cpu_stats = 0;
+			break;
+		case 'w':
+			if (find_stopwatch_interval(optarg) != 0)
+				return 1;
+			break;
+		case 'f':
+			set_all_format_specs(optarg);
+			break;
+		case 'F':
+			if (add_format_spec(optarg) != 0)
+				return 1;
+			break;
+		case 'h':
+			ppi_hash_by_pid = 0;
+			break;
+		case 'v':
+			verbose++;
+			break;
+		case 'V':
+			printf("%s version %s\n", argv[0], blkparse_version);
+			return 0;
+		case 'd':
+			dump_binary = optarg;
+			break;
+		case 'M':
+			bin_output_msgs = 0;
+			break;
+		default:
+			usage(argv[0]);
+			return 1;
+		}
+	}
+
+	while (optind < argc) {
+		if (is_pipe(argv[optind]) && !pipeline) {
+			pipeline = 1;
+			pipename = strdup(argv[optind]);
+		} else if (resize_devices(argv[optind]) != 0)
+			return 1;
+		optind++;
+	}
+
+	if (!pipeline && !ndevices) {
+		usage(argv[0]);
+		return 1;
+	}
+
+	if (act_mask_tmp != 0)
+		act_mask = act_mask_tmp;
+
+	memset(&rb_sort_root, 0, sizeof(rb_sort_root));
+
+	signal(SIGINT, handle_sigint);
+	signal(SIGHUP, handle_sigint);
+	signal(SIGTERM, handle_sigint);
+
+	setlocale(LC_NUMERIC, "en_US");
+
+	if (text_output) {
+		if (!output_name) {
+			ofp = fdopen(STDOUT_FILENO, "w");
+			mode = _IOLBF;
+		} else {
+			char ofname[128];
+
+			snprintf(ofname, sizeof(ofname) - 1, "%s", output_name);
+			ofp = fopen(ofname, "w");
+			mode = _IOFBF;
+		}
+
+		if (!ofp) {
+			perror("fopen");
+			return 1;
+		}
+
+		ofp_buffer = malloc(4096);
+		if (setvbuf(ofp, ofp_buffer, mode, 4096)) {
+			perror("setvbuf");
+			return 1;
+		}
+	}
+
+	if (dump_binary) {
+		dump_fp = fopen(dump_binary, "w");
+		if (!dump_fp) {
+			perror(dump_binary);
+			dump_binary = NULL;
+			return 1;
+		}
+		bin_ofp_buffer = malloc(128 * 1024);
+		if (setvbuf(dump_fp, bin_ofp_buffer, _IOFBF, 128 * 1024)) {
+			perror("setvbuf binary");
+			return 1;
+		}
+	}
+
+	if (pipeline)
+		ret = do_fifo();
+	else
+		ret = do_file();
+
+	if (!ret)
+		show_stats();
+
+	if (have_drv_data && !dump_binary)
+		printf("\ndiscarded traces containing low-level device driver "
+		       "specific data (only available in binary output)\n");
+
+	if (ofp_buffer) {
+		fflush(ofp);
+		free(ofp_buffer);
+	}
+	if (bin_ofp_buffer) {
+		fflush(dump_fp);
+		free(bin_ofp_buffer);
+	}
+	return ret;
+}
diff --git a/blkparse_fmt.c b/blkparse_fmt.c
new file mode 100644
index 0000000..ed6cd5c
--- /dev/null
+++ b/blkparse_fmt.c
@@ -0,0 +1,464 @@
+/*
+ * This file contains format parsing code for blkparse, allowing you to
+ * customize the individual action format and generel output format.
+ */
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <ctype.h>
+#include <time.h>
+
+#include "blktrace.h"
+
+#define VALID_SPECS	"ABCDFGIMPQRSTUWX"
+
+#define HEADER		"%D %2c %8s %5T.%9t %5p %2a %3d "
+
+static char *override_format[256];
+
+static inline int valid_spec(int spec)
+{
+	return strchr(VALID_SPECS, spec) != NULL;
+}
+
+void set_all_format_specs(char *option)
+{
+	char *p;
+
+	for (p = VALID_SPECS; *p; p++)
+		if (override_format[(int)(*p)] == NULL)
+			override_format[(int)(*p)] = strdup(option);
+}
+
+int add_format_spec(char *option)
+{
+	int spec = optarg[0];
+
+	if (!valid_spec(spec)) {
+		fprintf(stderr,"Bad format specifier %c\n", spec);
+		return 1;
+	}
+	if (optarg[1] != ',') {
+		fprintf(stderr,"Bad format specifier - need ',' %s\n", option);
+		return 1;
+	}
+	option += 2;
+
+	override_format[spec] = strdup(option);
+
+	return 0;
+}
+
+static inline void fill_rwbs(char *rwbs, struct blk_io_trace *t)
+{
+	int w = t->action & BLK_TC_ACT(BLK_TC_WRITE);
+	int a = t->action & BLK_TC_ACT(BLK_TC_AHEAD);
+	int b = t->action & BLK_TC_ACT(BLK_TC_BARRIER);
+	int s = t->action & BLK_TC_ACT(BLK_TC_SYNC);
+	int m = t->action & BLK_TC_ACT(BLK_TC_META);
+	int d = t->action & BLK_TC_ACT(BLK_TC_DISCARD);
+	int i = 0;
+
+	if (d)
+		rwbs[i++] = 'D';
+	else if (w)
+		rwbs[i++] = 'W';
+	else if (t->bytes)
+		rwbs[i++] = 'R';
+	else
+		rwbs[i++] = 'N';
+	if (a)
+		rwbs[i++] = 'A';
+	if (b)
+		rwbs[i++] = 'B';
+	if (s)
+		rwbs[i++] = 'S';
+	if (m)
+		rwbs[i++] = 'M';
+
+	rwbs[i] = '\0';
+}
+
+static const char *
+print_time(unsigned long long timestamp)
+{
+	static char	timebuf[128];
+	struct tm	*tm;
+	time_t		sec;
+	unsigned long	nsec;
+
+	sec  = abs_start_time.tv_sec + SECONDS(timestamp);
+	nsec = abs_start_time.tv_nsec + NANO_SECONDS(timestamp);
+	if (nsec >= 1000000000) {
+		nsec -= 1000000000;
+		sec += 1;
+	}
+
+	tm = localtime(&sec);
+	snprintf(timebuf, sizeof(timebuf),
+			"%02u:%02u:%02u.%06lu",
+			tm->tm_hour,
+			tm->tm_min,
+			tm->tm_sec,
+			nsec / 1000);
+	return timebuf;
+}
+
+static inline int pdu_rest_is_zero(unsigned char *pdu, int len)
+{
+	static char zero[4096];
+
+	return !memcmp(pdu, zero, len);
+}
+
+static char *dump_pdu(unsigned char *pdu_buf, int pdu_len)
+{
+	static char p[4096];
+	int i, len;
+
+	if (!pdu_buf || !pdu_len)
+		return NULL;
+
+	for (len = 0, i = 0; i < pdu_len; i++) {
+		if (i)
+			len += sprintf(p + len, " ");
+
+		len += sprintf(p + len, "%02x", pdu_buf[i]);
+
+		/*
+		 * usually dump for cdb dumps where we can see lots of
+		 * zeroes, stop when the rest is just zeroes and indicate
+		 * so with a .. appended
+		 */
+		if (!pdu_buf[i] && pdu_rest_is_zero(pdu_buf + i, pdu_len - i)) {
+			sprintf(p + len, " ..");
+			break;
+		}
+	}
+
+	return p;
+}
+
+#define pdu_start(t)	(((void *) (t) + sizeof(struct blk_io_trace)))
+
+static unsigned int get_pdu_int(struct blk_io_trace *t)
+{
+	__u64 *val = pdu_start(t);
+
+	return be64_to_cpu(*val);
+}
+
+static void get_pdu_remap(struct blk_io_trace *t, struct blk_io_trace_remap *r)
+{
+	struct blk_io_trace_remap *__r = pdu_start(t);
+	__u64 sector_from = __r->sector_from;
+
+	r->device_from = be32_to_cpu(__r->device_from);
+	r->device_to   = be32_to_cpu(__r->device_to);
+	r->sector_from = be64_to_cpu(sector_from);
+}
+
+static void print_field(char *act, struct per_cpu_info *pci,
+			struct blk_io_trace *t, unsigned long long elapsed,
+			int pdu_len, unsigned char *pdu_buf, char field,
+			int minus, int has_w, int width)
+{
+	char format[64];
+
+	if (has_w) {
+		if (minus)
+			sprintf(format, "%%-%d", width);
+		else
+			sprintf(format, "%%%d", width);
+	} else
+		sprintf(format, "%%");
+
+	switch (field) {
+	case 'a':
+		fprintf(ofp, strcat(format, "s"), act);
+		break;
+	case 'c':
+		fprintf(ofp, strcat(format, "d"), pci->cpu);
+		break;
+	case 'C': {
+		char *name = find_process_name(t->pid);
+
+		fprintf(ofp, strcat(format, "s"), name);
+		break;
+	}
+	case 'd': {
+		char rwbs[6];
+
+		fill_rwbs(rwbs, t);
+		fprintf(ofp, strcat(format, "s"), rwbs);
+		break;
+	}
+	case 'D':	/* format width ignored */
+		fprintf(ofp,"%3d,%-3d", MAJOR(t->device), MINOR(t->device));
+		break;
+	case 'e':
+		fprintf(ofp, strcat(format, "d"), t->error);
+		break;
+	case 'M':
+		fprintf(ofp, strcat(format, "d"), MAJOR(t->device));
+		break;
+	case 'm':
+		fprintf(ofp, strcat(format, "d"), MINOR(t->device));
+		break;
+	case 'n':
+		fprintf(ofp, strcat(format, "u"), t_sec(t));
+		break;
+	case 'N':
+		fprintf(ofp, strcat(format, "u"), t->bytes);
+		break;
+	case 'p':
+		fprintf(ofp, strcat(format, "u"), t->pid);
+		break;
+	case 'P': { /* format width ignored */
+		char *p = dump_pdu(pdu_buf, pdu_len);
+		if (p)
+			fprintf(ofp, "%s", p);
+		break;
+	}
+	case 's':
+		fprintf(ofp, strcat(format, "ld"), t->sequence);
+		break;
+	case 'S':
+		fprintf(ofp, strcat(format, "lu"), t->sector);
+		break;
+	case 't':
+		sprintf(format, "%%0%dlu", has_w ? width : 9);
+		fprintf(ofp, format, NANO_SECONDS(t->time));
+		break;
+	case 'T':
+		fprintf(ofp, strcat(format, "d"), SECONDS(t->time));
+		break;
+	case 'u':
+		if (elapsed == -1ULL) {
+			fprintf(stderr, "Expecting elapsed value\n");
+			exit(1);
+		}
+		fprintf(ofp, strcat(format, "llu"), elapsed / 1000);
+		break;
+	case 'U':
+		fprintf(ofp, strcat(format, "u"), get_pdu_int(t));
+		break;
+	case 'z':
+		fprintf(ofp, strcat(format, "s"), print_time(t->time));
+		break;
+	default:
+		fprintf(ofp,strcat(format, "c"), field);
+		break;
+	}
+}
+
+static char *parse_field(char *act, struct per_cpu_info *pci,
+			 struct blk_io_trace *t, unsigned long long elapsed,
+			 int pdu_len, unsigned char *pdu_buf,
+			 char *master_format)
+{
+	int minus = 0;
+	int has_w = 0;
+	int width = 0;
+	char *p = master_format;
+
+	if (*p == '-') {
+		minus = 1;
+		p++;
+	}
+	if (isdigit(*p)) {
+		has_w = 1;
+		do {
+			width = (width * 10) + (*p++ - '0');
+		} while ((*p) && (isdigit(*p)));
+	}
+	if (*p) {
+		print_field(act, pci, t, elapsed, pdu_len, pdu_buf, *p++,
+			    minus, has_w, width);
+	}
+	return p;
+}
+
+static void process_default(char *act, struct per_cpu_info *pci,
+			    struct blk_io_trace *t, unsigned long long elapsed,
+			    int pdu_len, unsigned char *pdu_buf)
+{
+	struct blk_io_trace_remap r = { .device_from = 0, };
+	char rwbs[6];
+	char *name;
+
+	fill_rwbs(rwbs, t);
+
+	 /*
+	  * For remaps we have to modify the device using the remap structure
+	  * passed up.
+	  */
+	 if (act[0] == 'A') {
+		 get_pdu_remap(t, &r);
+		 t->device = r.device_to;
+	 }
+
+	/*
+	 * The header is always the same
+	 */
+	fprintf(ofp, "%3d,%-3d %2d %8d %5d.%09lu %5u %2s %3s ",
+		MAJOR(t->device), MINOR(t->device), pci->cpu, t->sequence,
+		(int) SECONDS(t->time), (unsigned long) NANO_SECONDS(t->time),
+		t->pid, act, rwbs);
+
+	name = find_process_name(t->pid);
+
+	switch (act[0]) {
+	case 'R':	/* Requeue */
+	case 'C': 	/* Complete */
+		if (t->action & BLK_TC_ACT(BLK_TC_PC)) {
+			char *p = dump_pdu(pdu_buf, pdu_len);
+			if (p)
+				fprintf(ofp, "(%s) ", p);
+			fprintf(ofp, "[%d]\n", t->error);
+		} else {
+			if (elapsed != -1ULL) {
+				if (t_sec(t))
+					fprintf(ofp, "%llu + %u (%8llu) [%d]\n",
+						(unsigned long long) t->sector,
+						t_sec(t), elapsed, t->error);
+				else
+					fprintf(ofp, "%llu (%8llu) [%d]\n",
+						(unsigned long long) t->sector,
+						elapsed, t->error);
+			} else {
+				if (t_sec(t))
+					fprintf(ofp, "%llu + %u [%d]\n",
+						(unsigned long long) t->sector,
+						t_sec(t), t->error);
+				else
+					fprintf(ofp, "%llu [%d]\n",
+						(unsigned long long) t->sector,
+						t->error);
+			}
+		}
+		break;
+
+	case 'D': 	/* Issue */
+	case 'I': 	/* Insert */
+	case 'Q': 	/* Queue */
+	case 'B':	/* Bounce */
+		if (t->action & BLK_TC_ACT(BLK_TC_PC)) {
+			char *p;
+			fprintf(ofp, "%u ", t->bytes);
+			p = dump_pdu(pdu_buf, pdu_len);
+			if (p)
+				fprintf(ofp, "(%s) ", p);
+			fprintf(ofp, "[%s]\n", name);
+		} else {
+			if (elapsed != -1ULL) {
+				if (t_sec(t))
+					fprintf(ofp, "%llu + %u (%8llu) [%s]\n",
+						(unsigned long long) t->sector,
+						t_sec(t), elapsed, name);
+				else
+					fprintf(ofp, "(%8llu) [%s]\n", elapsed,
+						name);
+			} else {
+				if (t_sec(t))
+					fprintf(ofp, "%llu + %u [%s]\n",
+						(unsigned long long) t->sector,
+						t_sec(t), name);
+				else
+					fprintf(ofp, "[%s]\n", name);
+			}
+		}
+		break;
+
+	case 'M':	/* Back merge */
+	case 'F':	/* Front merge */
+	case 'G':	/* Get request */
+	case 'S':	/* Sleep request */
+		if (t_sec(t))
+			fprintf(ofp, "%llu + %u [%s]\n",
+				(unsigned long long) t->sector, t_sec(t), name);
+		else
+			fprintf(ofp, "[%s]\n", name);
+		break;
+
+	case 'P':	/* Plug */
+		fprintf(ofp, "[%s]\n", name);
+		break;
+
+	case 'U':	/* Unplug IO */
+	case 'T': 	/* Unplug timer */
+		fprintf(ofp, "[%s] %u\n", name, get_pdu_int(t));
+		break;
+
+	case 'A': 	/* remap */
+		get_pdu_remap(t, &r);
+		fprintf(ofp, "%llu + %u <- (%d,%d) %llu\n",
+			(unsigned long long) t->sector, t_sec(t),
+			MAJOR(r.device_from), MINOR(r.device_from),
+			(unsigned long long) r.sector_from);
+		break;
+
+	case 'X': 	/* Split */
+		fprintf(ofp, "%llu / %u [%s]\n", (unsigned long long) t->sector,
+			get_pdu_int(t), name);
+		break;
+
+	case 'm':	/* Message */
+		fprintf(ofp, "%*s\n", pdu_len, pdu_buf);
+		break;
+
+	default:
+		fprintf(stderr, "Unknown action %c\n", act[0]);
+		break;
+	}
+
+}
+
+void process_fmt(char *act, struct per_cpu_info *pci, struct blk_io_trace *t,
+		 unsigned long long elapsed, int pdu_len,
+		 unsigned char *pdu_buf)
+{
+	char *p = override_format[(int) *act];
+
+	if (!p) {
+		process_default(act, pci, t, elapsed, pdu_len, pdu_buf);
+		return;
+	}
+
+	while (*p) {
+		switch (*p) {
+		case '%': 	/* Field specifier */
+			p++;
+			if (*p == '%')
+				fprintf(ofp, "%c", *p++);
+			else if (!*p)
+				fprintf(ofp, "%c", '%');
+			else
+				p = parse_field(act, pci, t, elapsed,
+						pdu_len, pdu_buf, p);
+			break;
+		case '\\': {	/* escape */
+			switch (p[1]) {
+			case 'b': fprintf(ofp, "\b"); break;
+			case 'n': fprintf(ofp, "\n"); break;
+			case 'r': fprintf(ofp, "\r"); break;
+			case 't': fprintf(ofp, "\t"); break;
+			default:
+				fprintf(stderr,	
+					"Invalid escape char in format %c\n",
+					p[1]);
+				exit(1);
+				/*NOTREACHED*/
+			}
+			p += 2;
+			break;
+		}
+		default:
+			fprintf(ofp, "%c", *p++);
+			break;
+		}
+	}
+}
+
+
diff --git a/blkrawverify.c b/blkrawverify.c
new file mode 100644
index 0000000..e669179
--- /dev/null
+++ b/blkrawverify.c
@@ -0,0 +1,322 @@
+/*
+ * block queue tracing application
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "blktrace.h"
+
+struct trace_info {
+	int bit_field;
+	char *string;
+};
+
+int data_is_native = -1;
+
+#define TRACE_TO_STRING(f)	{.bit_field = f, .string = #f}
+static struct trace_info traces[] = {
+	TRACE_TO_STRING( BLK_TC_READ ),
+	TRACE_TO_STRING( BLK_TC_WRITE ),
+	TRACE_TO_STRING( BLK_TC_BARRIER ),
+	TRACE_TO_STRING( BLK_TC_SYNC ),
+	TRACE_TO_STRING( BLK_TC_QUEUE ),
+	TRACE_TO_STRING( BLK_TC_REQUEUE ),
+	TRACE_TO_STRING( BLK_TC_ISSUE ),
+	TRACE_TO_STRING( BLK_TC_COMPLETE ),
+	TRACE_TO_STRING( BLK_TC_FS ),
+	TRACE_TO_STRING( BLK_TC_PC ),
+	TRACE_TO_STRING( BLK_TC_AHEAD ),
+	TRACE_TO_STRING( BLK_TC_META ),
+	TRACE_TO_STRING( BLK_TC_DISCARD ),
+};
+#define N_TRACES (sizeof(traces) / sizeof(struct trace_info))
+
+struct act_info {
+	__u32 val;
+	char *string;
+};
+
+#define ACT_TO_STRING(f)	{.val = f, .string = #f}
+static struct act_info acts[] = {
+	ACT_TO_STRING( __BLK_TA_QUEUE ),
+	ACT_TO_STRING( __BLK_TA_QUEUE ),
+	ACT_TO_STRING( __BLK_TA_BACKMERGE ),
+	ACT_TO_STRING( __BLK_TA_FRONTMERGE ),
+	ACT_TO_STRING( __BLK_TA_GETRQ ),
+	ACT_TO_STRING( __BLK_TA_SLEEPRQ ),
+	ACT_TO_STRING( __BLK_TA_REQUEUE ),
+	ACT_TO_STRING( __BLK_TA_ISSUE ),
+	ACT_TO_STRING( __BLK_TA_COMPLETE ),
+	ACT_TO_STRING( __BLK_TA_PLUG ),
+	ACT_TO_STRING( __BLK_TA_UNPLUG_IO ),
+	ACT_TO_STRING( __BLK_TA_UNPLUG_TIMER ),
+	ACT_TO_STRING( __BLK_TA_INSERT ),
+	ACT_TO_STRING( __BLK_TA_SPLIT ),
+	ACT_TO_STRING( __BLK_TA_BOUNCE ),
+	ACT_TO_STRING( __BLK_TA_REMAP )
+};
+#define N_ACTS (sizeof(acts) / sizeof(struct act_info))
+
+static char *act_to_str(__u32 action)
+{
+	static char buf[1024];
+	unsigned int i;
+	unsigned int act = action & 0xffff;
+	unsigned int trace = (action >> BLK_TC_SHIFT) & 0xffff;
+
+	if (act <= N_ACTS) {
+		sprintf(buf, "%s ", acts[act].string);
+		for (i = 0; i < N_TRACES; i++)
+			if (trace & (1 << i)) {
+				char buf2[1024];
+				sprintf(buf2, "| %s ", traces[i].string);
+				strcat(buf, buf2);
+			}
+	}
+	else
+		sprintf(buf, "Invalid action=%08x", action);
+
+	return buf;
+}
+
+static void dump_trace(FILE *ofp, char *prefix, struct blk_io_trace *bit)
+{
+	fprintf(ofp, "    Dump %s\n", prefix);
+	fprintf(ofp, "        %8s: %08x\n", "magic", bit->magic);
+	fprintf(ofp, "        %8s: %u\n", "sequence", bit->sequence);
+	fprintf(ofp, "        %8s: %llu\n", "time", (unsigned long long) bit->time);
+	fprintf(ofp, "        %8s: %llu\n", "sector", (unsigned long long) bit->sector);
+	fprintf(ofp, "        %8s: %u\n", "bytes", bit->bytes);
+	fprintf(ofp, "        %8s: %s\n", "action", act_to_str(bit->action));
+	fprintf(ofp, "        %8s: %u\n", "bytes", bit->bytes);
+	fprintf(ofp, "        %8s: %u\n", "cpu", bit->cpu);
+	fprintf(ofp, "        %8s: %u\n", "error", bit->error);
+	fprintf(ofp, "        %8s: %u\n", "pdu_len", bit->pdu_len);
+	fprintf(ofp, "        %8s: (%u,%u)\n\n", "device", MAJOR(bit->device),
+						           MINOR(bit->device));
+}
+
+static int process(FILE **fp, char *devname, char *file, unsigned int cpu)
+{
+#	define SWAP_BITS() do {						\
+		if (bit_save) {						\
+			struct blk_io_trace *tmp = bit_save;		\
+			bit_save = bit;					\
+			bit = tmp;					\
+		}							\
+		else {							\
+			bit_save = bit;					\
+			bit = malloc(sizeof(struct blk_io_trace));	\
+		}							\
+	} while (0)
+
+#	define INC_BAD(str) do {					\
+		nbad++;							\
+		fprintf(ofp, "    ----------------\n");			\
+		if (bit_save) dump_trace(ofp,"seq-1",bit_save);		\
+		dump_trace(ofp, str, bit);				\
+		SWAP_BITS();						\
+	} while (0)
+
+	size_t n;
+	FILE *ifp, *ofp;
+	__u32 save_device = 0, save_sequence = 0;
+	__u64 save_time = 0;
+	struct blk_io_trace *bit_save = NULL;
+	struct blk_io_trace *bit = malloc(sizeof(struct blk_io_trace));
+	unsigned int ngood = 0;
+	unsigned int nbad = 0;
+	unsigned int nbad_trace = 0, nbad_pdu = 0, nbad_cpu = 0;
+	unsigned int nbad_seq = 0, nbad_dev = 0, nbad_time = 0;
+	char ofname[1024];
+
+	ifp = fopen(file, "r");
+	if (!ifp)
+		return 0;
+
+	sprintf(ofname, "%s.verify.out", devname);
+
+	if (!*fp) {
+		*fp = fopen(ofname, "w");
+		if (*fp == NULL) {
+			fprintf(stderr,"Failed to open %s (%s), skipping\n",
+				ofname, strerror(errno));
+			fclose(ifp);
+			return 0;
+		}
+		fprintf(*fp, "\n---------------\n" );
+		fprintf(*fp, "Verifying %s\n", devname);
+	}
+
+	ofp = *fp;
+	while ((n = fread(bit, sizeof(struct blk_io_trace), 1, ifp)) == 1) {
+		if (ferror(ifp)) {
+			clearerr(ifp);
+			perror("fread");
+			break;
+		}
+		if (data_is_native == -1)
+			check_data_endianness(bit->magic);
+
+		trace_to_cpu(bit);
+
+		if (!CHECK_MAGIC(bit)) {
+			INC_BAD("bad trace");
+			continue;
+		}
+
+		if ((bit->magic & 0xff) != SUPPORTED_VERSION) {
+			fprintf(stderr, "unsupported trace version\n");
+			break;
+		}
+
+		if (bit->pdu_len) {
+			char *pdu_buf;
+
+			pdu_buf = malloc(bit->pdu_len);
+			n = fread(pdu_buf, bit->pdu_len, 1, ifp);
+			if (n == 0) {
+				INC_BAD("bad pdu");
+				nbad_seq++;
+				break;
+			}
+			free(pdu_buf);
+		}
+
+		if (bit->cpu != cpu) {
+			INC_BAD("bad cpu");
+			nbad_cpu++;
+			continue;
+		}
+
+		/*
+		 * skip notify traces, they don't have valid sequences
+		 */
+		if (bit->action & BLK_TC_ACT(BLK_TC_NOTIFY))
+			continue;
+
+		if (ngood) {
+			if (bit->sequence <= save_sequence) {
+				INC_BAD("bad seq");
+				nbad_seq++;
+				continue;
+			}
+			else if (bit->time <= save_time) {
+				INC_BAD("time regression");
+				nbad_time++;
+				continue;
+			}
+			else if (bit->device != save_device) {
+				INC_BAD("bad dev");
+				nbad_dev++;
+				continue;
+			}
+		}
+
+		save_sequence = bit->sequence;
+		save_time = bit->time;
+		save_device = bit->device;
+
+		ngood++;
+		SWAP_BITS();
+	}
+
+	if (n == 0 && !feof(ifp))
+		fprintf(stderr,"%s: fread failed %d/%s\n",
+		        file, errno, strerror(errno));
+	fclose(ifp);
+
+	fprintf(ofp, "    ---------------------\n");
+	fprintf(ofp, "    Summary for cpu %d:\n", cpu);
+	fprintf(ofp, "    %10d valid + %10d invalid (%5.1f%%) processed\n\n",
+		ngood, nbad,
+		ngood ? 100.0 * (float)ngood / (float)(ngood + nbad) : 0.0);
+
+	if (nbad) {
+		if (nbad_trace)
+			fprintf(ofp, "%8s %d traces\n", "", nbad_trace);
+		if (nbad_trace)
+			fprintf(ofp, "%8s %d pdu\n", "", nbad_pdu);
+		if (nbad_cpu)
+			fprintf(ofp, "%8s %d cpu\n", "", nbad_cpu);
+		if (nbad_seq)
+			fprintf(ofp, "%8s %d seq\n", "", nbad_seq);
+		if (nbad_dev)
+			fprintf(ofp, "%8s %d dev\n", "", nbad_dev);
+		if (nbad_time)
+			fprintf(ofp, "%8s %d time\n", "", nbad_time);
+		fprintf(ofp,"\n");
+	}
+
+	return nbad;
+}
+
+int main(int argc, char *argv[])
+{
+	char *devname;
+	struct stat st;
+	int i, cpu, nbad, rval = 0;
+	FILE *ofp;
+	char *ofname = malloc(1024);
+	char *fname = malloc(1024);
+
+	if (argc < 2) {
+		fprintf(stderr,"FATAL: Need device name(s)\n");
+		fprintf(stderr,"Usage: blkrawverify <dev> [<dev>...]\n");
+		exit(1);
+	}
+
+	for (i = 1; i < argc; i++) {
+		devname = argv[i];
+		sprintf(ofname, "%s.verify.out", devname);
+		ofp = NULL;
+
+		printf("Verifying %s\n", devname); fflush(stdout);
+		for (cpu = 0; ; cpu++) {
+			sprintf(fname, "%s.blktrace.%d", devname, cpu);
+			if (stat(fname, &st) < 0) {
+				if (cpu == 0) {
+					fprintf(stderr, "No tracefiles found for %s\n",
+						devname);
+					rval = 1;
+				}
+				break;
+			}
+			printf("    CPU %d ", cpu); fflush(stdout);
+			nbad = process(&ofp, devname, fname, cpu);
+			if (nbad) {
+				printf("-- %d bad", nbad);
+				rval = 1;
+			}
+			printf("\n");
+		}
+		if (ofp) {
+			fclose(ofp);
+			fprintf(stdout, "Wrote output to %s\n", ofname);
+		}
+	}
+
+	return rval;
+}
diff --git a/blktrace.c b/blktrace.c
new file mode 100644
index 0000000..4a4c255
--- /dev/null
+++ b/blktrace.c
@@ -0,0 +1,2664 @@
+/*
+ * block queue tracing application
+ *
+ * Copyright (C) 2005 Jens Axboe <axboe@suse.de>
+ * Copyright (C) 2006 Jens Axboe <axboe@kernel.dk>
+ *
+ * Rewrite to have a single thread per CPU (managing all devices on that CPU)
+ *	Alan D. Brunelle <alan.brunelle@hp.com> - January 2009
+ *
+ *  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
+ *
+ */
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <fcntl.h>
+#include <getopt.h>
+#include <sched.h>
+#include <unistd.h>
+#include <poll.h>
+#include <signal.h>
+#include <pthread.h>
+#include <locale.h>
+#include <sys/ioctl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/vfs.h>
+#include <sys/mman.h>
+#include <sys/param.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <netdb.h>
+#include <sys/sendfile.h>
+
+#include "btt/list.h"
+#include "blktrace.h"
+
+/*
+ * You may want to increase this even more, if you are logging at a high
+ * rate and see skipped/missed events
+ */
+#define BUF_SIZE		(512 * 1024)
+#define BUF_NR			(4)
+
+#define FILE_VBUF_SIZE		(128 * 1024)
+
+#define DEBUGFS_TYPE		(0x64626720)
+#define TRACE_NET_PORT		(8462)
+
+enum {
+	Net_none = 0,
+	Net_server,
+	Net_client,
+};
+
+enum thread_status {
+	Th_running,
+	Th_leaving,
+	Th_error
+};
+
+/*
+ * Generic stats collected: nevents can be _roughly_ estimated by data_read
+ * (discounting pdu...)
+ *
+ * These fields are updated w/ pdc_dr_update & pdc_nev_update below.
+ */
+struct pdc_stats {
+	unsigned long long data_read;
+	unsigned long long nevents;
+};
+
+struct devpath {
+	struct list_head head;
+	char *path;			/* path to device special file */
+	char *buts_name;		/* name returned from bt kernel code */
+	struct pdc_stats *stats;
+	int fd, idx, ncpus;
+	unsigned long long drops;
+
+	/*
+	 * For piped output only:
+	 *
+	 * Each tracer will have a tracer_devpath_head that it will add new
+	 * data onto. It's list is protected above (tracer_devpath_head.mutex)
+	 * and it will signal the processing thread using the dp_cond,
+	 * dp_mutex & dp_entries variables above.
+	 */
+	struct tracer_devpath_head *heads;
+
+	/*
+	 * For network server mode only:
+	 */
+	struct cl_host *ch;
+	u32 cl_id;
+	time_t cl_connect_time;
+	struct io_info *ios;
+};
+
+/*
+ * For piped output to stdout we will have each tracer thread (one per dev)
+ * tack buffers read from the relay queues on a per-device list.
+ *
+ * The main thread will then collect trace buffers from each of lists in turn.
+ *
+ * We will use a mutex to guard each of the trace_buf list. The tracers
+ * can then signal the main thread using <dp_cond,dp_mutex> and
+ * dp_entries. (When dp_entries is 0, and a tracer adds an entry it will
+ * signal. When dp_entries is 0, the main thread will wait for that condition
+ * to be signalled.)
+ *
+ * adb: It may be better just to have a large buffer per tracer per dev,
+ * and then use it as a ring-buffer. This would certainly cut down a lot
+ * of malloc/free thrashing, at the cost of more memory movements (potentially).
+ */
+struct trace_buf {
+	struct list_head head;
+	struct devpath *dpp;
+	void *buf;
+	int cpu, len;
+};
+
+struct tracer_devpath_head {
+	pthread_mutex_t mutex;
+	struct list_head head;
+	struct trace_buf *prev;
+};
+
+/*
+ * Used to handle the mmap() interfaces for output file (containing traces)
+ */
+struct mmap_info {
+	void *fs_buf;
+	unsigned long long fs_size, fs_max_size, fs_off, fs_buf_len;
+	unsigned long buf_size, buf_nr;
+	int pagesize;
+};
+
+/*
+ * Each thread doing work on a (client) side of blktrace will have one
+ * of these. The ios array contains input/output information, pfds holds
+ * poll() data. The volatile's provide flags to/from the main executing
+ * thread.
+ */
+struct tracer {
+	struct list_head head;
+	struct io_info *ios;
+	struct pollfd *pfds;
+	pthread_t thread;
+	int cpu, nios;
+	volatile int status, is_done;
+};
+
+/*
+ * networking stuff follows. we include a magic number so we know whether
+ * to endianness convert or not.
+ *
+ * The len field is overloaded:
+ *	0 - Indicates an "open" - allowing the server to set up for a dev/cpu
+ *	1 - Indicates a "close" - Shut down connection orderly
+ *
+ * The cpu field is overloaded on close: it will contain the number of drops.
+ */
+struct blktrace_net_hdr {
+	u32 magic;		/* same as trace magic */
+	char buts_name[32];	/* trace name */
+	u32 cpu;		/* for which cpu */
+	u32 max_cpus;
+	u32 len;		/* length of following trace data */
+	u32 cl_id;		/* id for set of client per-cpu connections */
+	u32 buf_size;		/* client buf_size for this trace  */
+	u32 buf_nr;		/* client buf_nr for this trace  */
+	u32 page_size;		/* client page_size for this trace  */
+};
+
+/*
+ * Each host encountered has one of these. The head is used to link this
+ * on to the network server's ch_list. Connections associated with this
+ * host are linked on conn_list, and any devices traced on that host
+ * are connected on the devpaths list.
+ */
+struct cl_host {
+	struct list_head head;
+	struct list_head conn_list;
+	struct list_head devpaths;
+	struct net_server_s *ns;
+	char *hostname;
+	struct in_addr cl_in_addr;
+	int connects, ndevs, cl_opens;
+};
+
+/*
+ * Each connection (client to server socket ('fd')) has one of these. A
+ * back reference to the host ('ch'), and lists headers (for the host
+ * list, and the network server conn_list) are also included.
+ */
+struct cl_conn {
+	struct list_head ch_head, ns_head;
+	struct cl_host *ch;
+	int fd, ncpus;
+	time_t connect_time;
+};
+
+/*
+ * The network server requires some poll structures to be maintained -
+ * one per conection currently on conn_list. The nchs/ch_list values
+ * are for each host connected to this server. The addr field is used
+ * for scratch as new connections are established.
+ */
+struct net_server_s {
+	struct list_head conn_list;
+	struct list_head ch_list;
+	struct pollfd *pfds;
+	int listen_fd, connects, nchs;
+	struct sockaddr_in addr;
+};
+
+/*
+ * This structure is (generically) used to providide information
+ * for a read-to-write set of values.
+ *
+ * ifn & ifd represent input information
+ *
+ * ofn, ofd, ofp, obuf & mmap_info are used for output file (optionally).
+ */
+struct io_info {
+	struct devpath *dpp;
+	FILE *ofp;
+	char *obuf;
+	struct cl_conn *nc;	/* Server network connection */
+
+	/*
+	 * mmap controlled output files
+	 */
+	struct mmap_info mmap_info;
+
+	/*
+	 * Client network fields
+	 */
+	unsigned int ready;
+	unsigned long long data_queued;
+
+	/*
+	 * Input/output file descriptors & names
+	 */
+	int ifd, ofd;
+	char ifn[MAXPATHLEN + 64];
+	char ofn[MAXPATHLEN + 64];
+};
+
+static char blktrace_version[] = "2.0.0";
+
+/*
+ * Linkage to blktrace helper routines (trace conversions)
+ */
+int data_is_native = -1;
+
+static int ndevs;
+static int ncpus;
+static int pagesize;
+static int act_mask = ~0U;
+static int kill_running_trace;
+static int stop_watch;
+static int piped_output;
+
+static char *debugfs_path = "/sys/kernel/debug";
+static char *output_name;
+static char *output_dir;
+
+static unsigned long buf_size = BUF_SIZE;
+static unsigned long buf_nr = BUF_NR;
+
+static FILE *pfp;
+
+static LIST_HEAD(devpaths);
+static LIST_HEAD(tracers);
+
+static volatile int done;
+
+/*
+ * tracer threads add entries, the main thread takes them off and processes
+ * them. These protect the dp_entries variable.
+ */
+static pthread_cond_t dp_cond = PTHREAD_COND_INITIALIZER;
+static pthread_mutex_t dp_mutex = PTHREAD_MUTEX_INITIALIZER;
+static volatile int dp_entries;
+
+/*
+ * These synchronize master / thread interactions.
+ */
+static pthread_cond_t mt_cond = PTHREAD_COND_INITIALIZER;
+static pthread_mutex_t mt_mutex = PTHREAD_MUTEX_INITIALIZER;
+static volatile int nthreads_running;
+static volatile int nthreads_leaving;
+static volatile int nthreads_error;
+static volatile int tracers_run;
+
+/*
+ * network cmd line params
+ */
+static struct sockaddr_in hostname_addr;
+static char hostname[MAXHOSTNAMELEN];
+static int net_port = TRACE_NET_PORT;
+static int net_use_sendfile = 1;
+static int net_mode;
+static int *cl_fds;
+
+static int (*handle_pfds)(struct tracer *, int, int);
+static int (*handle_list)(struct tracer_devpath_head *, struct list_head *);
+
+#define S_OPTS	"d:a:A:r:o:kw:vVb:n:D:lh:p:sI:"
+static struct option l_opts[] = {
+	{
+		.name = "dev",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'd'
+	},
+	{
+		.name = "input-devs",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'I'
+	},
+	{
+		.name = "act-mask",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'a'
+	},
+	{
+		.name = "set-mask",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'A'
+	},
+	{
+		.name = "relay",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'r'
+	},
+	{
+		.name = "output",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'o'
+	},
+	{
+		.name = "kill",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'k'
+	},
+	{
+		.name = "stopwatch",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'w'
+	},
+	{
+		.name = "version",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'v'
+	},
+	{
+		.name = "version",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'V'
+	},
+	{
+		.name = "buffer-size",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'b'
+	},
+	{
+		.name = "num-sub-buffers",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'n'
+	},
+	{
+		.name = "output-dir",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'D'
+	},
+	{
+		.name = "listen",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'l'
+	},
+	{
+		.name = "host",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'h'
+	},
+	{
+		.name = "port",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'p'
+	},
+	{
+		.name = "no-sendfile",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 's'
+	},
+	{
+		.name = NULL,
+	}
+};
+
+static char usage_str[] = \
+	"-d <dev> [ -r debugfs path ] [ -o <output> ] [-k ] [ -w time ]\n" \
+	"[ -a action ] [ -A action mask ] [ -I  <devs file> ] [ -v ]\n\n" \
+	"\t-d Use specified device. May also be given last after options\n" \
+	"\t-r Path to mounted debugfs, defaults to /sys/kernel/debug\n" \
+	"\t-o File(s) to send output to\n" \
+	"\t-D Directory to prepend to output file names\n" \
+	"\t-k Kill a running trace\n" \
+	"\t-w Stop after defined time, in seconds\n" \
+	"\t-a Only trace specified actions. See documentation\n" \
+	"\t-A Give trace mask as a single value. See documentation\n" \
+	"\t-b Sub buffer size in KiB\n" \
+	"\t-n Number of sub buffers\n" \
+	"\t-l Run in network listen mode (blktrace server)\n" \
+	"\t-h Run in network client mode, connecting to the given host\n" \
+	"\t-p Network port to use (default 8462)\n" \
+	"\t-s Make the network client NOT use sendfile() to transfer data\n" \
+	"\t-I Add devices found in <devs file>\n" \
+	"\t-V Print program version info\n\n";
+
+static void clear_events(struct pollfd *pfd)
+{
+	pfd->events = 0;
+	pfd->revents = 0;
+}
+
+static inline int net_client_use_sendfile(void)
+{
+	return net_mode == Net_client && net_use_sendfile;
+}
+
+static inline int net_client_use_send(void)
+{
+	return net_mode == Net_client && !net_use_sendfile;
+}
+
+static inline int use_tracer_devpaths(void)
+{
+	return piped_output || net_client_use_send();
+}
+
+static inline int in_addr_eq(struct in_addr a, struct in_addr b)
+{
+	return a.s_addr == b.s_addr;
+}
+
+static inline void pdc_dr_update(struct devpath *dpp, int cpu, int data_read)
+{
+	dpp->stats[cpu].data_read += data_read;
+}
+
+static inline void pdc_nev_update(struct devpath *dpp, int cpu, int nevents)
+{
+	dpp->stats[cpu].nevents += nevents;
+}
+
+static void show_usage(char *prog)
+{
+	fprintf(stderr, "Usage: %s %s %s", prog, blktrace_version, usage_str);
+}
+
+/*
+ * Create a timespec 'msec' milliseconds into the future
+ */
+static inline void make_timespec(struct timespec *tsp, long delta_msec)
+{
+	struct timeval now;
+
+	gettimeofday(&now, NULL);
+	tsp->tv_sec = now.tv_sec;
+	tsp->tv_nsec = 1000L * now.tv_usec;
+
+	tsp->tv_nsec += (delta_msec * 1000000L);
+	if (tsp->tv_nsec > 1000000000L) {
+		long secs = tsp->tv_nsec / 1000000000L;
+
+		tsp->tv_sec += secs;
+		tsp->tv_nsec -= (secs * 1000000000L);
+	}
+}
+
+/*
+ * Add a timer to ensure wait ends
+ */
+static void t_pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)
+{
+	struct timespec ts;
+
+	make_timespec(&ts, 50);
+	pthread_cond_timedwait(cond, mutex, &ts);
+}
+
+static void unblock_tracers(void)
+{
+	pthread_mutex_lock(&mt_mutex);
+	tracers_run = 1;
+	pthread_cond_broadcast(&mt_cond);
+	pthread_mutex_unlock(&mt_mutex);
+}
+
+static void tracer_wait_unblock(struct tracer *tp)
+{
+	pthread_mutex_lock(&mt_mutex);
+	while (!tp->is_done && !tracers_run)
+		pthread_cond_wait(&mt_cond, &mt_mutex);
+	pthread_mutex_unlock(&mt_mutex);
+}
+
+static void tracer_signal_ready(struct tracer *tp,
+				enum thread_status th_status,
+				int status)
+{
+	pthread_mutex_lock(&mt_mutex);
+	tp->status = status;
+
+	if (th_status == Th_running)
+		nthreads_running++;
+	else if (th_status == Th_error)
+		nthreads_error++;
+	else
+		nthreads_leaving++;
+
+	pthread_cond_signal(&mt_cond);
+	pthread_mutex_unlock(&mt_mutex);
+}
+
+static void wait_tracers_ready(int ncpus_started)
+{
+	pthread_mutex_lock(&mt_mutex);
+	while ((nthreads_running + nthreads_error) < ncpus_started)
+		t_pthread_cond_wait(&mt_cond, &mt_mutex);
+	pthread_mutex_unlock(&mt_mutex);
+}
+
+static void wait_tracers_leaving(void)
+{
+	pthread_mutex_lock(&mt_mutex);
+	while (nthreads_leaving < nthreads_running)
+		t_pthread_cond_wait(&mt_cond, &mt_mutex);
+	pthread_mutex_unlock(&mt_mutex);
+}
+
+static void init_mmap_info(struct mmap_info *mip)
+{
+	mip->buf_size = buf_size;
+	mip->buf_nr = buf_nr;
+	mip->pagesize = pagesize;
+}
+
+static void net_close_connection(int *fd)
+{
+	shutdown(*fd, SHUT_RDWR);
+	close(*fd);
+	*fd = -1;
+}
+
+static void dpp_free(struct devpath *dpp)
+{
+	if (dpp->stats)
+		free(dpp->stats);
+	if (dpp->ios)
+		free(dpp->ios);
+	if (dpp->path)
+		free(dpp->path);
+	if (dpp->buts_name)
+		free(dpp->buts_name);
+	free(dpp);
+}
+
+static int lock_on_cpu(int cpu)
+{
+#ifndef _ANDROID_
+	cpu_set_t cpu_mask;
+
+	CPU_ZERO(&cpu_mask);
+	CPU_SET(cpu, &cpu_mask);
+	if (sched_setaffinity(0, sizeof(cpu_mask), &cpu_mask) < 0)
+		return errno;
+#endif
+
+	return 0;
+}
+
+#ifndef _ANDROID_
+static int increase_limit(int resource, rlim_t increase)
+{
+	struct rlimit rlim;
+	int save_errno = errno;
+
+	if (!getrlimit(resource, &rlim)) {
+		rlim.rlim_cur += increase;
+		if (rlim.rlim_cur >= rlim.rlim_max)
+			rlim.rlim_max = rlim.rlim_cur + increase;
+
+		if (!setrlimit(resource, &rlim))
+			return 1;
+	}
+
+	errno = save_errno;
+	return 0;
+}
+#endif
+
+static int handle_open_failure(void)
+{
+	if (errno == ENFILE || errno == EMFILE)
+#ifndef _ANDROID_
+		return increase_limit(RLIMIT_NOFILE, 16);
+#else
+		return -ENOSYS;
+#endif
+	return 0;
+}
+
+static int handle_mem_failure(size_t length)
+{
+	if (errno == ENFILE)
+		return handle_open_failure();
+	else if (errno == ENOMEM)
+#ifndef _ANDROID_
+		return increase_limit(RLIMIT_MEMLOCK, 2 * length);
+#else
+		return -ENOSYS;
+#endif
+	return 0;
+}
+
+static FILE *my_fopen(const char *path, const char *mode)
+{
+	FILE *fp;
+
+	do {
+		fp = fopen(path, mode);
+	} while (fp == NULL && handle_open_failure());
+
+	return fp;
+}
+
+static int my_open(const char *path, int flags)
+{
+	int fd;
+
+	do {
+		fd = open(path, flags);
+	} while (fd < 0 && handle_open_failure());
+
+	return fd;
+}
+
+static int my_socket(int domain, int type, int protocol)
+{
+	int fd;
+
+	do {
+		fd = socket(domain, type, protocol);
+	} while (fd < 0 && handle_open_failure());
+
+	return fd;
+}
+
+static int my_accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
+{
+	int fd;
+
+	do {
+		fd = accept(sockfd, addr, addrlen);
+	} while (fd < 0 && handle_open_failure());
+
+	return fd;
+}
+
+static void *my_mmap(void *addr, size_t length, int prot, int flags, int fd,
+		     off_t offset)
+{
+	void *new;
+
+	do {
+		new = mmap(addr, length, prot, flags, fd, offset);
+	} while (new == MAP_FAILED && handle_mem_failure(length));
+
+	return new;
+}
+
+static int my_mlock(const void *addr, size_t len)
+{
+	int ret;
+
+	do {
+		ret = mlock(addr, len);
+	} while (ret < 0 && handle_mem_failure(len));
+
+	return ret;
+}
+
+static int setup_mmap(int fd, unsigned int maxlen, struct mmap_info *mip)
+{
+	if (mip->fs_off + maxlen > mip->fs_buf_len) {
+		unsigned long nr = max(16, mip->buf_nr);
+
+		if (mip->fs_buf) {
+			munlock(mip->fs_buf, mip->fs_buf_len);
+			munmap(mip->fs_buf, mip->fs_buf_len);
+			mip->fs_buf = NULL;
+		}
+
+		mip->fs_off = mip->fs_size & (mip->pagesize - 1);
+		mip->fs_buf_len = (nr * mip->buf_size) - mip->fs_off;
+		mip->fs_max_size += mip->fs_buf_len;
+
+		if (ftruncate(fd, mip->fs_max_size) < 0) {
+			perror("setup_mmap: ftruncate");
+			return 1;
+		}
+
+		mip->fs_buf = my_mmap(NULL, mip->fs_buf_len, PROT_WRITE,
+				      MAP_SHARED, fd,
+				      mip->fs_size - mip->fs_off);
+		if (mip->fs_buf == MAP_FAILED) {
+			perror("setup_mmap: mmap");
+			return 1;
+		}
+		my_mlock(mip->fs_buf, mip->fs_buf_len);
+	}
+
+	return 0;
+}
+
+static int __stop_trace(int fd)
+{
+	/*
+	 * Should be stopped, don't complain if it isn't
+	 */
+	ioctl(fd, BLKTRACESTOP);
+	return ioctl(fd, BLKTRACETEARDOWN);
+}
+
+static int write_data(char *buf, int len)
+{
+	int ret;
+
+rewrite:
+	ret = fwrite(buf, len, 1, pfp);
+	if (ferror(pfp) || ret != 1) {
+		if (errno == EINTR) {
+			clearerr(pfp);
+			goto rewrite;
+		}
+
+		if (!piped_output || (errno != EPIPE && errno != EBADF)) {
+			fprintf(stderr, "write(%d) failed: %d/%s\n",
+				len, errno, strerror(errno));
+		}
+		goto err;
+	}
+
+	fflush(pfp);
+	return 0;
+
+err:
+	clearerr(pfp);
+	return 1;
+}
+
+/*
+ * Returns the number of bytes read (successfully)
+ */
+static int __net_recv_data(int fd, void *buf, unsigned int len)
+{
+	unsigned int bytes_left = len;
+
+	while (bytes_left && !done) {
+		int ret = recv(fd, buf, bytes_left, MSG_WAITALL);
+
+		if (ret == 0)
+			break;
+		else if (ret < 0) {
+			if (errno == EAGAIN) {
+				usleep(50);
+				continue;
+			}
+			perror("server: net_recv_data: recv failed");
+			break;
+		} else {
+			buf += ret;
+			bytes_left -= ret;
+		}
+	}
+
+	return len - bytes_left;
+}
+
+static int net_recv_data(int fd, void *buf, unsigned int len)
+{
+	return __net_recv_data(fd, buf, len);
+}
+
+/*
+ * Returns number of bytes written
+ */
+static int net_send_data(int fd, void *buf, unsigned int buf_len)
+{
+	int ret;
+	unsigned int bytes_left = buf_len;
+
+	while (bytes_left) {
+		ret = send(fd, buf, bytes_left, 0);
+		if (ret < 0) {
+			perror("send");
+			break;
+		}
+
+		buf += ret;
+		bytes_left -= ret;
+	}
+
+	return buf_len - bytes_left;
+}
+
+static int net_send_header(int fd, int cpu, char *buts_name, int len)
+{
+	struct blktrace_net_hdr hdr;
+
+	memset(&hdr, 0, sizeof(hdr));
+
+	hdr.magic = BLK_IO_TRACE_MAGIC;
+	strncpy(hdr.buts_name, buts_name, sizeof(hdr.buts_name));
+	hdr.buts_name[sizeof(hdr.buts_name)-1] = '\0';
+	hdr.cpu = cpu;
+	hdr.max_cpus = ncpus;
+	hdr.len = len;
+	hdr.cl_id = getpid();
+	hdr.buf_size = buf_size;
+	hdr.buf_nr = buf_nr;
+	hdr.page_size = pagesize;
+
+	return net_send_data(fd, &hdr, sizeof(hdr)) != sizeof(hdr);
+}
+
+static void net_send_open_close(int fd, int cpu, char *buts_name, int len)
+{
+	struct blktrace_net_hdr ret_hdr;
+
+	net_send_header(fd, cpu, buts_name, len);
+	net_recv_data(fd, &ret_hdr, sizeof(ret_hdr));
+}
+
+static void net_send_open(int fd, int cpu, char *buts_name)
+{
+	net_send_open_close(fd, cpu, buts_name, 0);
+}
+
+static void net_send_close(int fd, char *buts_name, int drops)
+{
+	/*
+	 * Overload CPU w/ number of drops
+	 *
+	 * XXX: Need to clear/set done around call - done=1 (which
+	 * is true here) stops reads from happening... :-(
+	 */
+	done = 0;
+	net_send_open_close(fd, drops, buts_name, 1);
+	done = 1;
+}
+
+static void ack_open_close(int fd, char *buts_name)
+{
+	net_send_header(fd, 0, buts_name, 2);
+}
+
+static void net_send_drops(int fd)
+{
+	struct list_head *p;
+
+	__list_for_each(p, &devpaths) {
+		struct devpath *dpp = list_entry(p, struct devpath, head);
+
+		net_send_close(fd, dpp->buts_name, dpp->drops);
+	}
+}
+
+/*
+ * Returns:
+ *	 0: "EOF"
+ *	 1: OK
+ *	-1: Error
+ */
+static int net_get_header(struct cl_conn *nc, struct blktrace_net_hdr *bnh)
+{
+	int bytes_read;
+	int fl = fcntl(nc->fd, F_GETFL);
+
+	fcntl(nc->fd, F_SETFL, fl | O_NONBLOCK);
+	bytes_read = __net_recv_data(nc->fd, bnh, sizeof(*bnh));
+	fcntl(nc->fd, F_SETFL, fl & ~O_NONBLOCK);
+
+	if (bytes_read == sizeof(*bnh))
+		return 1;
+	else if (bytes_read == 0)
+		return 0;
+	else
+		return -1;
+}
+
+static int net_setup_addr(void)
+{
+	struct sockaddr_in *addr = &hostname_addr;
+
+	memset(addr, 0, sizeof(*addr));
+	addr->sin_family = AF_INET;
+	addr->sin_port = htons(net_port);
+
+	if (inet_aton(hostname, &addr->sin_addr) != 1) {
+		struct hostent *hent;
+retry:
+		hent = gethostbyname(hostname);
+		if (!hent) {
+			if (h_errno == TRY_AGAIN) {
+				usleep(100);
+				goto retry;
+			} else if (h_errno == NO_RECOVERY) {
+				fprintf(stderr, "gethostbyname(%s)"
+					"non-recoverable error encountered\n",
+					hostname);
+			} else {
+				/*
+				 * HOST_NOT_FOUND, NO_ADDRESS or NO_DATA
+				 */
+				fprintf(stderr, "Host %s not found\n",
+					hostname);
+			}
+			return 1;
+		}
+
+		memcpy(&addr->sin_addr, hent->h_addr, 4);
+		strcpy(hostname, hent->h_name);
+	}
+
+	return 0;
+}
+
+static int net_setup_client(void)
+{
+	int fd;
+	struct sockaddr_in *addr = &hostname_addr;
+
+	fd = my_socket(AF_INET, SOCK_STREAM, 0);
+	if (fd < 0) {
+		perror("client: socket");
+		return -1;
+	}
+
+	if (connect(fd, (struct sockaddr *)addr, sizeof(*addr)) < 0) {
+		if (errno == ECONNREFUSED)
+			fprintf(stderr,
+				"\nclient: Connection to %s refused, "
+				"perhaps the server is not started?\n\n",
+				hostname);
+		else
+			perror("client: connect");
+
+		close(fd);
+		return -1;
+	}
+
+	return fd;
+}
+
+static int open_client_connections(void)
+{
+	int cpu;
+
+	cl_fds = calloc(ncpus, sizeof(*cl_fds));
+	for (cpu = 0; cpu < ncpus; cpu++) {
+		cl_fds[cpu] = net_setup_client();
+		if (cl_fds[cpu] < 0)
+			goto err;
+	}
+	return 0;
+
+err:
+	while (cpu > 0)
+		close(cl_fds[cpu--]);
+	free(cl_fds);
+	return 1;
+}
+
+static void close_client_connections(void)
+{
+	if (cl_fds) {
+		int cpu, *fdp;
+
+		for (cpu = 0, fdp = cl_fds; cpu < ncpus; cpu++, fdp++) {
+			if (*fdp >= 0) {
+				net_send_drops(*fdp);
+				net_close_connection(fdp);
+			}
+		}
+		free(cl_fds);
+	}
+}
+
+static void setup_buts(void)
+{
+	struct list_head *p;
+
+	__list_for_each(p, &devpaths) {
+		struct blk_user_trace_setup buts;
+		struct devpath *dpp = list_entry(p, struct devpath, head);
+
+		memset(&buts, 0, sizeof(buts));
+		buts.buf_size = buf_size;
+		buts.buf_nr = buf_nr;
+		buts.act_mask = act_mask;
+		if (ioctl(dpp->fd, BLKTRACESETUP, &buts) >= 0) {
+			dpp->ncpus = ncpus;
+			dpp->buts_name = strdup(buts.name);
+			if (dpp->stats)
+				free(dpp->stats);
+			dpp->stats = calloc(dpp->ncpus, sizeof(*dpp->stats));
+			memset(dpp->stats, 0, dpp->ncpus * sizeof(*dpp->stats));
+		} else
+			fprintf(stderr, "BLKTRACESETUP(2) %s failed: %d/%s\n",
+				dpp->path, errno, strerror(errno));
+	}
+}
+
+static void start_buts(void)
+{
+	struct list_head *p;
+
+	__list_for_each(p, &devpaths) {
+		struct devpath *dpp = list_entry(p, struct devpath, head);
+
+		if (ioctl(dpp->fd, BLKTRACESTART) < 0) {
+			fprintf(stderr, "BLKTRACESTART %s failed: %d/%s\n",
+				dpp->path, errno, strerror(errno));
+		}
+	}
+}
+
+static int get_drops(struct devpath *dpp)
+{
+	int fd, drops = 0;
+	char fn[MAXPATHLEN + 64], tmp[256];
+
+	snprintf(fn, sizeof(fn), "%s/block/%s/dropped", debugfs_path,
+		 dpp->buts_name);
+
+	fd = my_open(fn, O_RDONLY);
+	if (fd < 0) {
+		/*
+		 * This may be ok: the kernel may not support
+		 * dropped counts.
+		 */
+		if (errno != ENOENT)
+			fprintf(stderr, "Could not open %s: %d/%s\n",
+				fn, errno, strerror(errno));
+		return 0;
+	} else if (read(fd, tmp, sizeof(tmp)) < 0) {
+		fprintf(stderr, "Could not read %s: %d/%s\n",
+			fn, errno, strerror(errno));
+	} else
+		drops = atoi(tmp);
+	close(fd);
+
+	return drops;
+}
+
+static void get_all_drops(void)
+{
+	struct list_head *p;
+
+	__list_for_each(p, &devpaths) {
+		struct devpath *dpp = list_entry(p, struct devpath, head);
+
+		dpp->drops = get_drops(dpp);
+	}
+}
+
+static inline struct trace_buf *alloc_trace_buf(int cpu, int bufsize)
+{
+	struct trace_buf *tbp;
+
+	tbp = malloc(sizeof(*tbp) + bufsize);
+	INIT_LIST_HEAD(&tbp->head);
+	tbp->len = 0;
+	tbp->buf = (void *)(tbp + 1);
+	tbp->cpu = cpu;
+	tbp->dpp = NULL;	/* Will be set when tbp is added */
+
+	return tbp;
+}
+
+static void free_tracer_heads(struct devpath *dpp)
+{
+	int cpu;
+	struct tracer_devpath_head *hd;
+
+	for (cpu = 0, hd = dpp->heads; cpu < ncpus; cpu++, hd++) {
+		if (hd->prev)
+			free(hd->prev);
+
+		pthread_mutex_destroy(&hd->mutex);
+	}
+	free(dpp->heads);
+}
+
+static int setup_tracer_devpaths(void)
+{
+	struct list_head *p;
+
+	if (net_client_use_send())
+		if (open_client_connections())
+			return 1;
+
+	__list_for_each(p, &devpaths) {
+		int cpu;
+		struct tracer_devpath_head *hd;
+		struct devpath *dpp = list_entry(p, struct devpath, head);
+
+		dpp->heads = calloc(ncpus, sizeof(struct tracer_devpath_head));
+		for (cpu = 0, hd = dpp->heads; cpu < ncpus; cpu++, hd++) {
+			INIT_LIST_HEAD(&hd->head);
+			pthread_mutex_init(&hd->mutex, NULL);
+			hd->prev = NULL;
+		}
+	}
+
+	return 0;
+}
+
+static inline void add_trace_buf(struct devpath *dpp, int cpu,
+						struct trace_buf **tbpp)
+{
+	struct trace_buf *tbp = *tbpp;
+	struct tracer_devpath_head *hd = &dpp->heads[cpu];
+
+	tbp->dpp = dpp;
+
+	pthread_mutex_lock(&hd->mutex);
+	list_add_tail(&tbp->head, &hd->head);
+	pthread_mutex_unlock(&hd->mutex);
+
+	*tbpp = alloc_trace_buf(cpu, buf_size);
+}
+
+static inline void incr_entries(int entries_handled)
+{
+	pthread_mutex_lock(&dp_mutex);
+	if (dp_entries == 0)
+		pthread_cond_signal(&dp_cond);
+	dp_entries += entries_handled;
+	pthread_mutex_unlock(&dp_mutex);
+}
+
+static void decr_entries(int handled)
+{
+	pthread_mutex_lock(&dp_mutex);
+	dp_entries -= handled;
+	pthread_mutex_unlock(&dp_mutex);
+}
+
+static int wait_empty_entries(void)
+{
+	pthread_mutex_lock(&dp_mutex);
+	while (!done && dp_entries == 0)
+		t_pthread_cond_wait(&dp_cond, &dp_mutex);
+	pthread_mutex_unlock(&dp_mutex);
+
+	return !done;
+}
+
+static int add_devpath(char *path)
+{
+	int fd;
+	struct devpath *dpp;
+
+	/*
+	 * Verify device is valid before going too far
+	 */
+	fd = my_open(path, O_RDONLY | O_NONBLOCK);
+	if (fd < 0) {
+		fprintf(stderr, "Invalid path %s specified: %d/%s\n",
+			path, errno, strerror(errno));
+		return 1;
+	}
+
+	dpp = malloc(sizeof(*dpp));
+	memset(dpp, 0, sizeof(*dpp));
+	dpp->path = strdup(path);
+	dpp->fd = fd;
+	dpp->idx = ndevs++;
+	list_add_tail(&dpp->head, &devpaths);
+
+	return 0;
+}
+
+static void rel_devpaths(void)
+{
+	struct list_head *p, *q;
+
+	list_for_each_safe(p, q, &devpaths) {
+		struct devpath *dpp = list_entry(p, struct devpath, head);
+
+		list_del(&dpp->head);
+		__stop_trace(dpp->fd);
+		close(dpp->fd);
+
+		if (dpp->heads)
+			free_tracer_heads(dpp);
+
+		dpp_free(dpp);
+		ndevs--;
+	}
+}
+
+static int flush_subbuf_net(struct trace_buf *tbp)
+{
+	int fd = cl_fds[tbp->cpu];
+	struct devpath *dpp = tbp->dpp;
+
+	if (net_send_header(fd, tbp->cpu, dpp->buts_name, tbp->len))
+		return 1;
+	else if (net_send_data(fd, tbp->buf, tbp->len) != tbp->len)
+		return 1;
+
+	return 0;
+}
+
+static int
+handle_list_net(__attribute__((__unused__))struct tracer_devpath_head *hd,
+		struct list_head *list)
+{
+	struct trace_buf *tbp;
+	struct list_head *p, *q;
+	int entries_handled = 0;
+
+	list_for_each_safe(p, q, list) {
+		tbp = list_entry(p, struct trace_buf, head);
+
+		list_del(&tbp->head);
+		entries_handled++;
+
+		if (cl_fds[tbp->cpu] >= 0) {
+			if (flush_subbuf_net(tbp)) {
+				close(cl_fds[tbp->cpu]);
+				cl_fds[tbp->cpu] = -1;
+			}
+		}
+
+		free(tbp);
+	}
+
+	return entries_handled;
+}
+
+/*
+ * Tack 'tbp's buf onto the tail of 'prev's buf
+ */
+static struct trace_buf *tb_combine(struct trace_buf *prev,
+				    struct trace_buf *tbp)
+{
+	unsigned long tot_len;
+
+	tot_len = prev->len + tbp->len;
+	if (tot_len > buf_size) {
+		/*
+		 * tbp->head isn't connected (it was 'prev'
+		 * so it had been taken off of the list
+		 * before). Therefore, we can realloc
+		 * the whole structures, as the other fields
+		 * are "static".
+		 */
+		prev = realloc(prev->buf, sizeof(*prev) + tot_len);
+		prev->buf = (void *)(prev + 1);
+	}
+
+	memcpy(prev->buf + prev->len, tbp->buf, tbp->len);
+	prev->len = tot_len;
+
+	free(tbp);
+	return prev;
+}
+
+static int handle_list_file(struct tracer_devpath_head *hd,
+			    struct list_head *list)
+{
+	int off, t_len, nevents;
+	struct blk_io_trace *t;
+	struct list_head *p, *q;
+	int entries_handled = 0;
+	struct trace_buf *tbp, *prev;
+
+	prev = hd->prev;
+	list_for_each_safe(p, q, list) {
+		tbp = list_entry(p, struct trace_buf, head);
+		list_del(&tbp->head);
+		entries_handled++;
+
+		/*
+		 * If there was some leftover before, tack this new
+		 * entry onto the tail of the previous one.
+		 */
+		if (prev)
+			tbp = tb_combine(prev, tbp);
+
+		/*
+		 * See how many whole traces there are - send them
+		 * all out in one go.
+		 */
+		off = 0;
+		nevents = 0;
+		while (off + (int)sizeof(*t) <= tbp->len) {
+			t = (struct blk_io_trace *)(tbp->buf + off);
+			t_len = sizeof(*t) + t->pdu_len;
+			if (off + t_len > tbp->len)
+				break;
+
+			off += t_len;
+			nevents++;
+		}
+		if (nevents)
+			pdc_nev_update(tbp->dpp, tbp->cpu, nevents);
+
+		/*
+		 * Write any full set of traces, any remaining data is kept
+		 * for the next pass.
+		 */
+		if (off) {
+			if (write_data(tbp->buf, off) || off == tbp->len) {
+				free(tbp);
+				prev = NULL;
+			}
+			else {
+				/*
+				 * Move valid data to beginning of buffer
+				 */
+				tbp->len -= off;
+				memmove(tbp->buf, tbp->buf + off, tbp->len);
+				prev = tbp;
+			}
+		} else
+			prev = tbp;
+	}
+	hd->prev = prev;
+
+	return entries_handled;
+}
+
+static void __process_trace_bufs(void)
+{
+	int cpu;
+	struct list_head *p;
+	struct list_head list;
+	int handled = 0;
+
+	__list_for_each(p, &devpaths) {
+		struct devpath *dpp = list_entry(p, struct devpath, head);
+		struct tracer_devpath_head *hd = dpp->heads;
+
+		for (cpu = 0; cpu < ncpus; cpu++, hd++) {
+			pthread_mutex_lock(&hd->mutex);
+			if (list_empty(&hd->head)) {
+				pthread_mutex_unlock(&hd->mutex);
+				continue;
+			}
+
+			list_replace_init(&hd->head, &list);
+			pthread_mutex_unlock(&hd->mutex);
+
+			handled += handle_list(hd, &list);
+		}
+	}
+
+	if (handled)
+		decr_entries(handled);
+}
+
+static void process_trace_bufs(void)
+{
+	while (wait_empty_entries())
+		__process_trace_bufs();
+}
+
+static void clean_trace_bufs(void)
+{
+	/*
+	 * No mutex needed here: we're only reading from the lists,
+	 * tracers are done
+	 */
+	while (dp_entries)
+		__process_trace_bufs();
+}
+
+static inline void read_err(int cpu, char *ifn)
+{
+	if (errno != EAGAIN)
+		fprintf(stderr, "Thread %d failed read of %s: %d/%s\n",
+			cpu, ifn, errno, strerror(errno));
+}
+
+static int net_sendfile(struct io_info *iop)
+{
+	int ret;
+
+	ret = sendfile(iop->ofd, iop->ifd, NULL, iop->ready);
+	if (ret < 0) {
+		perror("sendfile");
+		return 1;
+	} else if (ret < (int)iop->ready) {
+		fprintf(stderr, "short sendfile send (%d of %d)\n",
+			ret, iop->ready);
+		return 1;
+	}
+
+	return 0;
+}
+
+static inline int net_sendfile_data(struct tracer *tp, struct io_info *iop)
+{
+	struct devpath *dpp = iop->dpp;
+
+	if (net_send_header(iop->ofd, tp->cpu, dpp->buts_name, iop->ready))
+		return 1;
+	return net_sendfile(iop);
+}
+
+static int fill_ofname(struct io_info *iop, int cpu)
+{
+	int len;
+	struct stat sb;
+	char *dst = iop->ofn;
+
+	if (output_dir)
+		len = snprintf(iop->ofn, sizeof(iop->ofn), "%s/", output_dir);
+	else
+		len = snprintf(iop->ofn, sizeof(iop->ofn), "./");
+
+	if (net_mode == Net_server) {
+		struct cl_conn *nc = iop->nc;
+
+		len += sprintf(dst + len, "%s-", nc->ch->hostname);
+		len += strftime(dst + len, 64, "%F-%T/",
+				gmtime(&iop->dpp->cl_connect_time));
+	}
+
+	if (stat(iop->ofn, &sb) < 0) {
+		if (errno != ENOENT) {
+			fprintf(stderr,
+				"Destination dir %s stat failed: %d/%s\n",
+				iop->ofn, errno, strerror(errno));
+			return 1;
+		}
+		/*
+		 * There is no synchronization between multiple threads
+		 * trying to create the directory at once.  It's harmless
+		 * to let them try, so just detect the problem and move on.
+		 */
+		if (mkdir(iop->ofn, 0755) < 0 && errno != EEXIST) {
+			fprintf(stderr,
+				"Destination dir %s can't be made: %d/%s\n",
+				iop->ofn, errno, strerror(errno));
+			return 1;
+		}
+	}
+
+	if (output_name)
+		snprintf(iop->ofn + len, sizeof(iop->ofn), "%s.blktrace.%d",
+			 output_name, cpu);
+	else
+		snprintf(iop->ofn + len, sizeof(iop->ofn), "%s.blktrace.%d",
+			 iop->dpp->buts_name, cpu);
+
+	return 0;
+}
+
+static int set_vbuf(struct io_info *iop, int mode, size_t size)
+{
+	iop->obuf = malloc(size);
+	if (setvbuf(iop->ofp, iop->obuf, mode, size) < 0) {
+		fprintf(stderr, "setvbuf(%s, %d) failed: %d/%s\n",
+			iop->dpp->path, (int)size, errno,
+			strerror(errno));
+		free(iop->obuf);
+		return 1;
+	}
+
+	return 0;
+}
+
+static int iop_open(struct io_info *iop, int cpu)
+{
+	iop->ofd = -1;
+	if (fill_ofname(iop, cpu))
+		return 1;
+
+	iop->ofp = my_fopen(iop->ofn, "w+");
+	if (iop->ofp == NULL) {
+		fprintf(stderr, "Open output file %s failed: %d/%s\n",
+			iop->ofn, errno, strerror(errno));
+		return 1;
+	}
+
+	if (set_vbuf(iop, _IOLBF, FILE_VBUF_SIZE)) {
+		fprintf(stderr, "set_vbuf for file %s failed: %d/%s\n",
+			iop->ofn, errno, strerror(errno));
+		fclose(iop->ofp);
+		return 1;
+	}
+
+	iop->ofd = fileno(iop->ofp);
+	return 0;
+}
+
+static void close_iop(struct io_info *iop)
+{
+	struct mmap_info *mip = &iop->mmap_info;
+
+	if (mip->fs_buf)
+		munmap(mip->fs_buf, mip->fs_buf_len);
+
+	if (!piped_output) {
+		if (ftruncate(fileno(iop->ofp), mip->fs_size) < 0) {
+			fprintf(stderr,
+				"Ignoring err: ftruncate(%s): %d/%s\n",
+				iop->ofn, errno, strerror(errno));
+		}
+	}
+
+	if (iop->ofp)
+		fclose(iop->ofp);
+	if (iop->obuf)
+		free(iop->obuf);
+}
+
+static void close_ios(struct tracer *tp)
+{
+	while (tp->nios > 0) {
+		struct io_info *iop = &tp->ios[--tp->nios];
+
+		iop->dpp->drops = get_drops(iop->dpp);
+		if (iop->ifd >= 0)
+			close(iop->ifd);
+
+		if (iop->ofp)
+			close_iop(iop);
+		else if (iop->ofd >= 0) {
+			struct devpath *dpp = iop->dpp;
+
+			net_send_close(iop->ofd, dpp->buts_name, dpp->drops);
+			net_close_connection(&iop->ofd);
+		}
+	}
+
+	free(tp->ios);
+	free(tp->pfds);
+}
+
+static int open_ios(struct tracer *tp)
+{
+	struct pollfd *pfd;
+	struct io_info *iop;
+	struct list_head *p;
+
+	tp->ios = calloc(ndevs, sizeof(struct io_info));
+	memset(tp->ios, 0, ndevs * sizeof(struct io_info));
+
+	tp->pfds = calloc(ndevs, sizeof(struct pollfd));
+	memset(tp->pfds, 0, ndevs * sizeof(struct pollfd));
+
+	tp->nios = 0;
+	iop = tp->ios;
+	pfd = tp->pfds;
+	__list_for_each(p, &devpaths) {
+		struct devpath *dpp = list_entry(p, struct devpath, head);
+
+		iop->dpp = dpp;
+		iop->ofd = -1;
+		snprintf(iop->ifn, sizeof(iop->ifn), "%s/block/%s/trace%d",
+			debugfs_path, dpp->buts_name, tp->cpu);
+
+		iop->ifd = my_open(iop->ifn, O_RDONLY | O_NONBLOCK);
+		if (iop->ifd < 0) {
+			fprintf(stderr, "Thread %d failed open %s: %d/%s\n",
+				tp->cpu, iop->ifn, errno, strerror(errno));
+			return 1;
+		}
+
+		init_mmap_info(&iop->mmap_info);
+
+		pfd->fd = iop->ifd;
+		pfd->events = POLLIN;
+
+		if (piped_output)
+			;
+		else if (net_client_use_sendfile()) {
+			iop->ofd = net_setup_client();
+			if (iop->ofd < 0)
+				goto err;
+			net_send_open(iop->ofd, tp->cpu, dpp->buts_name);
+		} else if (net_mode == Net_none) {
+			if (iop_open(iop, tp->cpu))
+				goto err;
+		} else {
+			/*
+			 * This ensures that the server knows about all
+			 * connections & devices before _any_ closes
+			 */
+			net_send_open(cl_fds[tp->cpu], tp->cpu, dpp->buts_name);
+		}
+
+		pfd++;
+		iop++;
+		tp->nios++;
+	}
+
+	return 0;
+
+err:
+	close(iop->ifd);	/* tp->nios _not_ bumped */
+	close_ios(tp);
+	return 1;
+}
+
+static int handle_pfds_file(struct tracer *tp, int nevs, int force_read)
+{
+	struct mmap_info *mip;
+	int i, ret, nentries = 0;
+	struct pollfd *pfd = tp->pfds;
+	struct io_info *iop = tp->ios;
+
+	for (i = 0; nevs > 0 && i < ndevs; i++, pfd++, iop++) {
+		if (pfd->revents & POLLIN || force_read) {
+			mip = &iop->mmap_info;
+
+			ret = setup_mmap(iop->ofd, buf_size, mip);
+			if (ret < 0) {
+				pfd->events = 0;
+				break;
+			}
+
+			ret = read(iop->ifd, mip->fs_buf + mip->fs_off,
+				   buf_size);
+			if (ret > 0) {
+				pdc_dr_update(iop->dpp, tp->cpu, ret);
+				mip->fs_size += ret;
+				mip->fs_off += ret;
+				nentries++;
+			} else if (ret == 0) {
+				/*
+				 * Short reads after we're done stop us
+				 * from trying reads.
+				 */
+				if (tp->is_done)
+					clear_events(pfd);
+			} else {
+				read_err(tp->cpu, iop->ifn);
+				if (errno != EAGAIN || tp->is_done)
+					clear_events(pfd);
+			}
+			nevs--;
+		}
+	}
+
+	return nentries;
+}
+
+static int handle_pfds_netclient(struct tracer *tp, int nevs, int force_read)
+{
+	struct stat sb;
+	int i, nentries = 0;
+	struct pdc_stats *sp;
+	struct pollfd *pfd = tp->pfds;
+	struct io_info *iop = tp->ios;
+
+	for (i = 0; i < ndevs; i++, pfd++, iop++, sp++) {
+		if (pfd->revents & POLLIN || force_read) {
+			if (fstat(iop->ifd, &sb) < 0) {
+				perror(iop->ifn);
+				pfd->events = 0;
+			} else if (sb.st_size > (off_t)iop->data_queued) {
+				iop->ready = sb.st_size - iop->data_queued;
+				iop->data_queued = sb.st_size;
+
+				if (!net_sendfile_data(tp, iop)) {
+					pdc_dr_update(iop->dpp, tp->cpu,
+						      iop->ready);
+					nentries++;
+				} else
+					clear_events(pfd);
+			}
+			if (--nevs == 0)
+				break;
+		}
+	}
+
+	if (nentries)
+		incr_entries(nentries);
+
+	return nentries;
+}
+
+static int handle_pfds_entries(struct tracer *tp, int nevs, int force_read)
+{
+	int i, nentries = 0;
+	struct trace_buf *tbp;
+	struct pollfd *pfd = tp->pfds;
+	struct io_info *iop = tp->ios;
+
+	tbp = alloc_trace_buf(tp->cpu, buf_size);
+	for (i = 0; i < ndevs; i++, pfd++, iop++) {
+		if (pfd->revents & POLLIN || force_read) {
+			tbp->len = read(iop->ifd, tbp->buf, buf_size);
+			if (tbp->len > 0) {
+				pdc_dr_update(iop->dpp, tp->cpu, tbp->len);
+				add_trace_buf(iop->dpp, tp->cpu, &tbp);
+				nentries++;
+			} else if (tbp->len == 0) {
+				/*
+				 * Short reads after we're done stop us
+				 * from trying reads.
+				 */
+				if (tp->is_done)
+					clear_events(pfd);
+			} else {
+				read_err(tp->cpu, iop->ifn);
+				if (errno != EAGAIN || tp->is_done)
+					clear_events(pfd);
+			}
+			if (!piped_output && --nevs == 0)
+				break;
+		}
+	}
+	free(tbp);
+
+	if (nentries)
+		incr_entries(nentries);
+
+	return nentries;
+}
+
+static void *thread_main(void *arg)
+{
+	int ret, ndone, to_val;
+	struct tracer *tp = arg;
+
+	ret = lock_on_cpu(tp->cpu);
+	if (ret)
+		goto err;
+
+	ret = open_ios(tp);
+	if (ret)
+		goto err;
+
+	if (piped_output)
+		to_val = 50;		/* Frequent partial handles */
+	else
+		to_val = 500;		/* 1/2 second intervals */
+
+
+	tracer_signal_ready(tp, Th_running, 0);
+	tracer_wait_unblock(tp);
+
+	while (!tp->is_done) {
+		ndone = poll(tp->pfds, ndevs, to_val);
+		if (ndone || piped_output)
+			(void)handle_pfds(tp, ndone, piped_output);
+		else if (ndone < 0 && errno != EINTR)
+			fprintf(stderr, "Thread %d poll failed: %d/%s\n",
+				tp->cpu, errno, strerror(errno));
+	}
+
+	/*
+	 * Trace is stopped, pull data until we get a short read
+	 */
+	while (handle_pfds(tp, ndevs, 1) > 0)
+		;
+
+	close_ios(tp);
+	tracer_signal_ready(tp, Th_leaving, 0);
+	return NULL;
+
+err:
+	tracer_signal_ready(tp, Th_error, ret);
+	return NULL;
+}
+
+static int start_tracer(int cpu)
+{
+	struct tracer *tp;
+
+	tp = malloc(sizeof(*tp));
+	memset(tp, 0, sizeof(*tp));
+
+	INIT_LIST_HEAD(&tp->head);
+	tp->status = 0;
+	tp->cpu = cpu;
+
+	if (pthread_create(&tp->thread, NULL, thread_main, tp)) {
+		fprintf(stderr, "FAILED to start thread on CPU %d: %d/%s\n",
+			cpu, errno, strerror(errno));
+		free(tp);
+		return 1;
+	}
+
+	list_add_tail(&tp->head, &tracers);
+	return 0;
+}
+
+static void start_tracers(void)
+{
+	int cpu;
+	struct list_head *p;
+
+	for (cpu = 0; cpu < ncpus; cpu++)
+		if (start_tracer(cpu))
+			break;
+
+	wait_tracers_ready(cpu);
+
+	__list_for_each(p, &tracers) {
+		struct tracer *tp = list_entry(p, struct tracer, head);
+		if (tp->status)
+			fprintf(stderr,
+				"FAILED to start thread on CPU %d: %d/%s\n",
+				tp->cpu, tp->status, strerror(tp->status));
+	}
+}
+
+static void stop_tracers(void)
+{
+	struct list_head *p;
+
+	/*
+	 * Stop the tracing - makes the tracer threads clean up quicker.
+	 */
+	__list_for_each(p, &devpaths) {
+		struct devpath *dpp = list_entry(p, struct devpath, head);
+		(void)ioctl(dpp->fd, BLKTRACESTOP);
+	}
+
+	/*
+	 * Tell each tracer to quit
+	 */
+	__list_for_each(p, &tracers) {
+		struct tracer *tp = list_entry(p, struct tracer, head);
+		tp->is_done = 1;
+	}
+}
+
+static void del_tracers(void)
+{
+	struct list_head *p, *q;
+
+	list_for_each_safe(p, q, &tracers) {
+		struct tracer *tp = list_entry(p, struct tracer, head);
+
+		list_del(&tp->head);
+		free(tp);
+	}
+}
+
+static void wait_tracers(void)
+{
+	struct list_head *p;
+
+	if (use_tracer_devpaths())
+		process_trace_bufs();
+
+	wait_tracers_leaving();
+
+	__list_for_each(p, &tracers) {
+		int ret;
+		struct tracer *tp = list_entry(p, struct tracer, head);
+
+		ret = pthread_join(tp->thread, NULL);
+		if (ret)
+			fprintf(stderr, "Thread join %d failed %d\n",
+				tp->cpu, ret);
+	}
+
+	if (use_tracer_devpaths())
+		clean_trace_bufs();
+
+	get_all_drops();
+}
+
+static void exit_tracing(void)
+{
+	signal(SIGINT, SIG_IGN);
+	signal(SIGHUP, SIG_IGN);
+	signal(SIGTERM, SIG_IGN);
+	signal(SIGALRM, SIG_IGN);
+
+	stop_tracers();
+	wait_tracers();
+	del_tracers();
+	rel_devpaths();
+}
+
+static void handle_sigint(__attribute__((__unused__)) int sig)
+{
+	done = 1;
+	stop_tracers();
+}
+
+static void show_stats(struct list_head *devpaths)
+{
+	FILE *ofp;
+	struct list_head *p;
+	unsigned long long nevents, data_read;
+	unsigned long long total_drops = 0;
+	unsigned long long total_events = 0;
+
+	if (piped_output)
+		ofp = my_fopen("/dev/null", "w");
+	else
+		ofp = stdout;
+
+	__list_for_each(p, devpaths) {
+		int cpu;
+		struct pdc_stats *sp;
+		struct devpath *dpp = list_entry(p, struct devpath, head);
+
+		if (net_mode == Net_server)
+			printf("server: end of run for %s:%s\n",
+				dpp->ch->hostname, dpp->buts_name);
+
+		data_read = 0;
+		nevents = 0;
+
+		fprintf(ofp, "=== %s ===\n", dpp->buts_name);
+		for (cpu = 0, sp = dpp->stats; cpu < dpp->ncpus; cpu++, sp++) {
+			/*
+			 * Estimate events if not known...
+			 */
+			if (sp->nevents == 0) {
+				sp->nevents = sp->data_read /
+						sizeof(struct blk_io_trace);
+			}
+
+			fprintf(ofp,
+				"  CPU%3d: %20llu events, %8llu KiB data\n",
+				cpu, sp->nevents, (sp->data_read + 1023) >> 10);
+
+			data_read += sp->data_read;
+			nevents += sp->nevents;
+		}
+
+		fprintf(ofp, "  Total:  %20llu events (dropped %llu),"
+			     " %8llu KiB data\n", nevents,
+			     dpp->drops, (data_read + 1024) >> 10);
+
+		total_drops += dpp->drops;
+		total_events += (nevents + dpp->drops);
+	}
+
+	fflush(ofp);
+	if (piped_output)
+		fclose(ofp);
+
+	if (total_drops) {
+		double drops_ratio = 1.0;
+
+		if (total_events)
+			drops_ratio = (double)total_drops/(double)total_events;
+
+		fprintf(stderr, "\nYou have %llu (%5.1lf%%) dropped events\n"
+				"Consider using a larger buffer size (-b) "
+				"and/or more buffers (-n)\n",
+			total_drops, 100.0 * drops_ratio);
+	}
+}
+
+static int handle_args(int argc, char *argv[])
+{
+	int c, i;
+	struct statfs st;
+	int act_mask_tmp = 0;
+
+	while ((c = getopt_long(argc, argv, S_OPTS, l_opts, NULL)) >= 0) {
+		switch (c) {
+		case 'a':
+			i = find_mask_map(optarg);
+			if (i < 0) {
+				fprintf(stderr, "Invalid action mask %s\n",
+					optarg);
+				return 1;
+			}
+			act_mask_tmp |= i;
+			break;
+
+		case 'A':
+			if ((sscanf(optarg, "%x", &i) != 1) ||
+							!valid_act_opt(i)) {
+				fprintf(stderr,
+					"Invalid set action mask %s/0x%x\n",
+					optarg, i);
+				return 1;
+			}
+			act_mask_tmp = i;
+			break;
+
+		case 'd':
+			if (add_devpath(optarg) != 0)
+				return 1;
+			break;
+
+		case 'I': {
+			char dev_line[256];
+			FILE *ifp = my_fopen(optarg, "r");
+
+			if (!ifp) {
+				fprintf(stderr,
+					"Invalid file for devices %s\n",
+					optarg);
+				return 1;
+			}
+
+			while (fscanf(ifp, "%s\n", dev_line) == 1)
+				if (add_devpath(dev_line) != 0)
+					return 1;
+			break;
+		}
+
+		case 'r':
+			debugfs_path = optarg;
+			break;
+
+		case 'o':
+			output_name = optarg;
+			break;
+		case 'k':
+			kill_running_trace = 1;
+			break;
+		case 'w':
+			stop_watch = atoi(optarg);
+			if (stop_watch <= 0) {
+				fprintf(stderr,
+					"Invalid stopwatch value (%d secs)\n",
+					stop_watch);
+				return 1;
+			}
+			break;
+		case 'V':
+		case 'v':
+			printf("%s version %s\n", argv[0], blktrace_version);
+			exit(0);
+			/*NOTREACHED*/
+		case 'b':
+			buf_size = strtoul(optarg, NULL, 10);
+			if (buf_size <= 0 || buf_size > 16*1024) {
+				fprintf(stderr, "Invalid buffer size (%lu)\n",
+					buf_size);
+				return 1;
+			}
+			buf_size <<= 10;
+			break;
+		case 'n':
+			buf_nr = strtoul(optarg, NULL, 10);
+			if (buf_nr <= 0) {
+				fprintf(stderr,
+					"Invalid buffer nr (%lu)\n", buf_nr);
+				return 1;
+			}
+			break;
+		case 'D':
+			output_dir = optarg;
+			break;
+		case 'h':
+			net_mode = Net_client;
+			strcpy(hostname, optarg);
+			break;
+		case 'l':
+			net_mode = Net_server;
+			break;
+		case 'p':
+			net_port = atoi(optarg);
+			break;
+		case 's':
+			net_use_sendfile = 0;
+			break;
+		default:
+			show_usage(argv[0]);
+			exit(1);
+			/*NOTREACHED*/
+		}
+	}
+
+	while (optind < argc)
+		if (add_devpath(argv[optind++]) != 0)
+			return 1;
+
+	if (net_mode != Net_server && ndevs == 0) {
+		show_usage(argv[0]);
+		return 1;
+	}
+
+	if (statfs(debugfs_path, &st) < 0 || st.f_type != (long)DEBUGFS_TYPE) {
+		fprintf(stderr, "Invalid debug path %s: %d/%s\n",
+			debugfs_path, errno, strerror(errno));
+		return 1;
+	}
+
+	if (act_mask_tmp != 0)
+		act_mask = act_mask_tmp;
+
+	if (net_mode == Net_client && net_setup_addr())
+		return 1;
+
+	/*
+	 * Set up for appropriate PFD handler based upon output name.
+	 */
+	if (net_client_use_sendfile())
+		handle_pfds = handle_pfds_netclient;
+	else if (net_client_use_send())
+		handle_pfds = handle_pfds_entries;
+	else if (output_name && (strcmp(output_name, "-") == 0)) {
+		piped_output = 1;
+		handle_pfds = handle_pfds_entries;
+		pfp = stdout;
+		setvbuf(pfp, NULL, _IONBF, 0);
+	} else
+		handle_pfds = handle_pfds_file;
+	return 0;
+}
+
+static void ch_add_connection(struct net_server_s *ns, struct cl_host *ch,
+			      int fd)
+{
+	struct cl_conn *nc;
+
+	nc = malloc(sizeof(*nc));
+	memset(nc, 0, sizeof(*nc));
+
+	time(&nc->connect_time);
+	nc->ch = ch;
+	nc->fd = fd;
+	nc->ncpus = -1;
+
+	list_add_tail(&nc->ch_head, &ch->conn_list);
+	ch->connects++;
+
+	list_add_tail(&nc->ns_head, &ns->conn_list);
+	ns->connects++;
+	ns->pfds = realloc(ns->pfds, (ns->connects+1) * sizeof(struct pollfd));
+}
+
+static void ch_rem_connection(struct net_server_s *ns, struct cl_host *ch,
+			      struct cl_conn *nc)
+{
+	net_close_connection(&nc->fd);
+
+	list_del(&nc->ch_head);
+	ch->connects--;
+
+	list_del(&nc->ns_head);
+	ns->connects--;
+	ns->pfds = realloc(ns->pfds, (ns->connects+1) * sizeof(struct pollfd));
+
+	free(nc);
+}
+
+static struct cl_host *net_find_client_host(struct net_server_s *ns,
+					    struct in_addr cl_in_addr)
+{
+	struct list_head *p;
+
+	__list_for_each(p, &ns->ch_list) {
+		struct cl_host *ch = list_entry(p, struct cl_host, head);
+
+		if (in_addr_eq(ch->cl_in_addr, cl_in_addr))
+			return ch;
+	}
+
+	return NULL;
+}
+
+static struct cl_host *net_add_client_host(struct net_server_s *ns,
+					   struct sockaddr_in *addr)
+{
+	struct cl_host *ch;
+
+	ch = malloc(sizeof(*ch));
+	memset(ch, 0, sizeof(*ch));
+
+	ch->ns = ns;
+	ch->cl_in_addr = addr->sin_addr;
+	list_add_tail(&ch->head, &ns->ch_list);
+	ns->nchs++;
+
+	ch->hostname = strdup(inet_ntoa(addr->sin_addr));
+	printf("server: connection from %s\n", ch->hostname);
+
+	INIT_LIST_HEAD(&ch->conn_list);
+	INIT_LIST_HEAD(&ch->devpaths);
+
+	return ch;
+}
+
+static void device_done(struct devpath *dpp, int ncpus)
+{
+	int cpu;
+	struct io_info *iop;
+
+	for (cpu = 0, iop = dpp->ios; cpu < ncpus; cpu++, iop++)
+		close_iop(iop);
+
+	list_del(&dpp->head);
+	dpp_free(dpp);
+}
+
+static void net_ch_remove(struct cl_host *ch, int ncpus)
+{
+	struct list_head *p, *q;
+	struct net_server_s *ns = ch->ns;
+
+	list_for_each_safe(p, q, &ch->devpaths) {
+		struct devpath *dpp = list_entry(p, struct devpath, head);
+		device_done(dpp, ncpus);
+	}
+
+	list_for_each_safe(p, q, &ch->conn_list) {
+		struct cl_conn *nc = list_entry(p, struct cl_conn, ch_head);
+
+		ch_rem_connection(ns, ch, nc);
+	}
+
+	list_del(&ch->head);
+	ns->nchs--;
+
+	if (ch->hostname)
+		free(ch->hostname);
+	free(ch);
+}
+
+static void net_add_connection(struct net_server_s *ns)
+{
+	int fd;
+	struct cl_host *ch;
+	socklen_t socklen = sizeof(ns->addr);
+
+	fd = my_accept(ns->listen_fd, (struct sockaddr *)&ns->addr, &socklen);
+	if (fd < 0) {
+		/*
+		 * This is OK: we just won't accept this connection,
+		 * nothing fatal.
+		 */
+		perror("accept");
+	} else {
+		ch = net_find_client_host(ns, ns->addr.sin_addr);
+		if (!ch)
+			ch = net_add_client_host(ns, &ns->addr);
+
+		ch_add_connection(ns, ch, fd);
+	}
+}
+
+static struct devpath *nc_add_dpp(struct cl_conn *nc,
+				  struct blktrace_net_hdr *bnh,
+				  time_t connect_time)
+{
+	int cpu;
+	struct io_info *iop;
+	struct devpath *dpp;
+
+	dpp = malloc(sizeof(*dpp));
+	memset(dpp, 0, sizeof(*dpp));
+
+	dpp->buts_name = strdup(bnh->buts_name);
+	dpp->path = strdup(bnh->buts_name);
+	dpp->fd = -1;
+	dpp->ch = nc->ch;
+	dpp->cl_id = bnh->cl_id;
+	dpp->cl_connect_time = connect_time;
+	dpp->ncpus = nc->ncpus;
+	dpp->stats = calloc(dpp->ncpus, sizeof(*dpp->stats));
+	memset(dpp->stats, 0, dpp->ncpus * sizeof(*dpp->stats));
+
+	list_add_tail(&dpp->head, &nc->ch->devpaths);
+	nc->ch->ndevs++;
+
+	dpp->ios = calloc(nc->ncpus, sizeof(*iop));
+	memset(dpp->ios, 0, ndevs * sizeof(*iop));
+
+	for (cpu = 0, iop = dpp->ios; cpu < nc->ncpus; cpu++, iop++) {
+		iop->dpp = dpp;
+		iop->nc = nc;
+		init_mmap_info(&iop->mmap_info);
+
+		if (iop_open(iop, cpu))
+			goto err;
+	}
+
+	return dpp;
+
+err:
+	/*
+	 * Need to unravel what's been done...
+	 */
+	while (cpu >= 0)
+		close_iop(&dpp->ios[cpu--]);
+	dpp_free(dpp);
+
+	return NULL;
+}
+
+static struct devpath *nc_find_dpp(struct cl_conn *nc,
+				   struct blktrace_net_hdr *bnh)
+{
+	struct list_head *p;
+	time_t connect_time = nc->connect_time;
+
+	__list_for_each(p, &nc->ch->devpaths) {
+		struct devpath *dpp = list_entry(p, struct devpath, head);
+
+		if (!strcmp(dpp->buts_name, bnh->buts_name))
+			return dpp;
+
+		if (dpp->cl_id == bnh->cl_id)
+			connect_time = dpp->cl_connect_time;
+	}
+
+	return nc_add_dpp(nc, bnh, connect_time);
+}
+
+static void net_client_read_data(struct cl_conn *nc, struct devpath *dpp,
+				 struct blktrace_net_hdr *bnh)
+{
+	int ret;
+	struct io_info *iop = &dpp->ios[bnh->cpu];
+	struct mmap_info *mip = &iop->mmap_info;
+
+	if (setup_mmap(iop->ofd, bnh->len, &iop->mmap_info)) {
+		fprintf(stderr, "ncd(%s:%d): mmap failed\n",
+			nc->ch->hostname, nc->fd);
+		exit(1);
+	}
+
+	ret = net_recv_data(nc->fd, mip->fs_buf + mip->fs_off, bnh->len);
+	if (ret > 0) {
+		pdc_dr_update(dpp, bnh->cpu, ret);
+		mip->fs_size += ret;
+		mip->fs_off += ret;
+	} else if (ret < 0)
+		exit(1);
+}
+
+/*
+ * Returns 1 if we closed a host - invalidates other polling information
+ * that may be present.
+ */
+static int net_client_data(struct cl_conn *nc)
+{
+	int ret;
+	struct devpath *dpp;
+	struct blktrace_net_hdr bnh;
+
+	ret = net_get_header(nc, &bnh);
+	if (ret == 0)
+		return 0;
+
+	if (ret < 0) {
+		fprintf(stderr, "ncd(%d): header read failed\n", nc->fd);
+		exit(1);
+	}
+
+	if (data_is_native == -1 && check_data_endianness(bnh.magic)) {
+		fprintf(stderr, "ncd(%d): received data is bad\n", nc->fd);
+		exit(1);
+	}
+
+	if (!data_is_native) {
+		bnh.magic = be32_to_cpu(bnh.magic);
+		bnh.cpu = be32_to_cpu(bnh.cpu);
+		bnh.max_cpus = be32_to_cpu(bnh.max_cpus);
+		bnh.len = be32_to_cpu(bnh.len);
+		bnh.cl_id = be32_to_cpu(bnh.cl_id);
+		bnh.buf_size = be32_to_cpu(bnh.buf_size);
+		bnh.buf_nr = be32_to_cpu(bnh.buf_nr);
+		bnh.page_size = be32_to_cpu(bnh.page_size);
+	}
+
+	if ((bnh.magic & 0xffffff00) != BLK_IO_TRACE_MAGIC) {
+		fprintf(stderr, "ncd(%s:%d): bad data magic\n",
+			nc->ch->hostname, nc->fd);
+		exit(1);
+	}
+
+	if (nc->ncpus == -1)
+		nc->ncpus = bnh.max_cpus;
+
+	/*
+	 * len == 0 means the other end is sending us a new connection/dpp
+	 * len == 1 means that the other end signalled end-of-run
+	 */
+	dpp = nc_find_dpp(nc, &bnh);
+	if (bnh.len == 0) {
+		/*
+		 * Just adding in the dpp above is enough
+		 */
+		ack_open_close(nc->fd, dpp->buts_name);
+		nc->ch->cl_opens++;
+	} else if (bnh.len == 1) {
+		/*
+		 * overload cpu count with dropped events
+		 */
+		dpp->drops = bnh.cpu;
+
+		ack_open_close(nc->fd, dpp->buts_name);
+		if (--nc->ch->cl_opens == 0) {
+			show_stats(&nc->ch->devpaths);
+			net_ch_remove(nc->ch, nc->ncpus);
+			return 1;
+		}
+	} else
+		net_client_read_data(nc, dpp, &bnh);
+
+	return 0;
+}
+
+static void handle_client_data(struct net_server_s *ns, int events)
+{
+	struct cl_conn *nc;
+	struct pollfd *pfd;
+	struct list_head *p, *q;
+
+	pfd = &ns->pfds[1];
+	list_for_each_safe(p, q, &ns->conn_list) {
+		if (pfd->revents & POLLIN) {
+			nc = list_entry(p, struct cl_conn, ns_head);
+
+			if (net_client_data(nc) || --events == 0)
+				break;
+		}
+		pfd++;
+	}
+}
+
+static void net_setup_pfds(struct net_server_s *ns)
+{
+	struct pollfd *pfd;
+	struct list_head *p;
+
+	ns->pfds[0].fd = ns->listen_fd;
+	ns->pfds[0].events = POLLIN;
+
+	pfd = &ns->pfds[1];
+	__list_for_each(p, &ns->conn_list) {
+		struct cl_conn *nc = list_entry(p, struct cl_conn, ns_head);
+
+		pfd->fd = nc->fd;
+		pfd->events = POLLIN;
+		pfd++;
+	}
+}
+
+static int net_server_handle_connections(struct net_server_s *ns)
+{
+	int events;
+
+	printf("server: waiting for connections...\n");
+
+	while (!done) {
+		net_setup_pfds(ns);
+		events = poll(ns->pfds, ns->connects + 1, -1);
+		if (events < 0) {
+			if (errno != EINTR) {
+				perror("FATAL: poll error");
+				return 1;
+			}
+		} else if (events > 0) {
+			if (ns->pfds[0].revents & POLLIN) {
+				net_add_connection(ns);
+				events--;
+			}
+
+			if (events)
+				handle_client_data(ns, events);
+		}
+	}
+
+	return 0;
+}
+
+static int net_server(void)
+{
+	int fd, opt;
+	int ret = 1;
+	struct net_server_s net_server;
+	struct net_server_s *ns = &net_server;
+
+	memset(ns, 0, sizeof(*ns));
+	INIT_LIST_HEAD(&ns->ch_list);
+	INIT_LIST_HEAD(&ns->conn_list);
+	ns->pfds = malloc(sizeof(struct pollfd));
+
+	fd = my_socket(AF_INET, SOCK_STREAM, 0);
+	if (fd < 0) {
+		perror("server: socket");
+		goto out;
+	}
+
+	opt = 1;
+	if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) < 0) {
+		perror("setsockopt");
+		goto out;
+	}
+
+	memset(&ns->addr, 0, sizeof(ns->addr));
+	ns->addr.sin_family = AF_INET;
+	ns->addr.sin_addr.s_addr = htonl(INADDR_ANY);
+	ns->addr.sin_port = htons(net_port);
+
+	if (bind(fd, (struct sockaddr *) &ns->addr, sizeof(ns->addr)) < 0) {
+		perror("bind");
+		goto out;
+	}
+
+	if (listen(fd, 1) < 0) {
+		perror("listen");
+		goto out;
+	}
+
+	/*
+	 * The actual server looping is done here:
+	 */
+	ns->listen_fd = fd;
+	ret = net_server_handle_connections(ns);
+
+	/*
+	 * Clean up and return...
+	 */
+out:
+	free(ns->pfds);
+	return ret;
+}
+
+static int run_tracers(void)
+{
+	atexit(exit_tracing);
+	if (net_mode == Net_client)
+		printf("blktrace: connecting to %s\n", hostname);
+
+	setup_buts();
+
+	if (use_tracer_devpaths()) {
+		if (setup_tracer_devpaths())
+			return 1;
+
+		if (piped_output)
+			handle_list = handle_list_file;
+		else
+			handle_list = handle_list_net;
+	}
+
+	start_tracers();
+	if (nthreads_running == ncpus) {
+		unblock_tracers();
+		start_buts();
+		if (net_mode == Net_client)
+			printf("blktrace: connected!\n");
+		if (stop_watch)
+			alarm(stop_watch);
+	} else
+		stop_tracers();
+
+	wait_tracers();
+	if (nthreads_running == ncpus)
+		show_stats(&devpaths);
+	if (net_client_use_send())
+		close_client_connections();
+	del_tracers();
+
+	return 0;
+}
+
+int main(int argc, char *argv[])
+{
+	int ret = 0;
+
+	setlocale(LC_NUMERIC, "en_US");
+	pagesize = getpagesize();
+	ncpus = sysconf(_SC_NPROCESSORS_ONLN);
+	if (ncpus < 0) {
+		fprintf(stderr, "sysconf(_SC_NPROCESSORS_ONLN) failed %d/%s\n",
+			errno, strerror(errno));
+		ret = 1;
+		goto out;
+	} else if (handle_args(argc, argv)) {
+		ret = 1;
+		goto out;
+	}
+
+	signal(SIGINT, handle_sigint);
+	signal(SIGHUP, handle_sigint);
+	signal(SIGTERM, handle_sigint);
+	signal(SIGALRM, handle_sigint);
+	signal(SIGPIPE, SIG_IGN);
+
+	if (kill_running_trace) {
+		struct devpath *dpp;
+		struct list_head *p;
+
+		__list_for_each(p, &devpaths) {
+			dpp = list_entry(p, struct devpath, head);
+			if (__stop_trace(dpp->fd)) {
+				fprintf(stderr,
+					"BLKTRACETEARDOWN %s failed: %d/%s\n",
+					dpp->path, errno, strerror(errno));
+			}
+		}
+	} else if (net_mode == Net_server) {
+		if (output_name) {
+			fprintf(stderr, "-o ignored in server mode\n");
+			output_name = NULL;
+		}
+		ret = net_server();
+	} else
+		ret = run_tracers();
+
+out:
+	if (pfp)
+		fclose(pfp);
+	rel_devpaths();
+	return ret;
+}
diff --git a/blktrace.h b/blktrace.h
new file mode 100644
index 0000000..8f33682
--- /dev/null
+++ b/blktrace.h
@@ -0,0 +1,149 @@
+#ifndef BLKTRACE_H
+#define BLKTRACE_H
+
+#include <stdio.h>
+#include <byteswap.h>
+#include <endian.h>
+
+#include "blktrace_api.h"
+#include "rbtree.h"
+
+#define MINORBITS	20
+#define MINORMASK	((1U << MINORBITS) - 1)
+#define MAJOR(dev)	((unsigned int) ((dev) >> MINORBITS))
+#define MINOR(dev)	((unsigned int) ((dev) & MINORMASK))
+
+#define SECONDS(x) 		((unsigned long long)(x) / 1000000000)
+#define NANO_SECONDS(x)		((unsigned long long)(x) % 1000000000)
+#define DOUBLE_TO_NANO_ULL(d)	((unsigned long long)((d) * 1000000000))
+
+#define min(a, b)	((a) < (b) ? (a) : (b))
+#define max(a, b)	((a) > (b) ? (a) : (b))
+
+#define t_sec(t)	((t)->bytes >> 9)
+#define t_kb(t)		((t)->bytes >> 10)
+
+typedef __u32 u32;
+typedef __u8 u8;
+
+struct io_stats {
+	unsigned long qreads, qwrites, creads, cwrites, mreads, mwrites;
+	unsigned long ireads, iwrites, rrqueue, wrqueue;
+	unsigned long long qread_kb, qwrite_kb, cread_kb, cwrite_kb;
+	unsigned long long iread_kb, iwrite_kb;
+	unsigned long long mread_kb, mwrite_kb;
+	unsigned long qreads_pc, qwrites_pc, ireads_pc, iwrites_pc;
+	unsigned long rrqueue_pc, wrqueue_pc, creads_pc, cwrites_pc;
+	unsigned long long qread_kb_pc, qwrite_kb_pc, iread_kb_pc, iwrite_kb_pc;
+	unsigned long io_unplugs, timer_unplugs;
+};
+
+struct per_cpu_info {
+	unsigned int cpu;
+	unsigned int nelems;
+
+	int fd;
+	int fdblock;
+	char fname[128];
+
+	struct io_stats io_stats;
+
+	struct rb_root rb_last;
+	unsigned long rb_last_entries;
+	unsigned long last_sequence;
+	unsigned long smallest_seq_read;
+
+	struct skip_info *skips_head;
+	struct skip_info *skips_tail;
+};
+
+extern FILE *ofp;
+extern int data_is_native;
+extern struct timespec abs_start_time;
+
+#define CHECK_MAGIC(t)		(((t)->magic & 0xffffff00) == BLK_IO_TRACE_MAGIC)
+#define SUPPORTED_VERSION	(0x07)
+
+#define __bswap_16 bswap_16
+#define __bswap_32 bswap_32
+#define __bswap_64 bswap_64
+
+#if __BYTE_ORDER == __LITTLE_ENDIAN
+#define be16_to_cpu(x)		__bswap_16(x)
+#define be32_to_cpu(x)		__bswap_32(x)
+#define be64_to_cpu(x)		__bswap_64(x)
+#define cpu_to_be16(x)		__bswap_16(x)
+#define cpu_to_be32(x)		__bswap_32(x)
+#define cpu_to_be64(x)		__bswap_64(x)
+#elif __BYTE_ORDER == __BIG_ENDIAN
+#define be16_to_cpu(x)		(x)
+#define be32_to_cpu(x)		(x)
+#define be64_to_cpu(x)		(x)
+#define cpu_to_be16(x)		(x)
+#define cpu_to_be32(x)		(x)
+#define cpu_to_be64(x)		(x)
+#else
+#error "Bad arch"
+#endif
+
+static inline int verify_trace(struct blk_io_trace *t)
+{
+	if (!CHECK_MAGIC(t)) {
+		fprintf(stderr, "bad trace magic %x\n", t->magic);
+		return 1;
+	}
+	if ((t->magic & 0xff) != SUPPORTED_VERSION) {
+		fprintf(stderr, "unsupported trace version %x\n", 
+			t->magic & 0xff);
+		return 1;
+	}
+
+	return 0;
+}
+
+static inline void trace_to_cpu(struct blk_io_trace *t)
+{
+	if (data_is_native)
+		return;
+
+	t->magic	= be32_to_cpu(t->magic);
+	t->sequence	= be32_to_cpu(t->sequence);
+	t->time		= be64_to_cpu(t->time);
+	t->sector	= be64_to_cpu(t->sector);
+	t->bytes	= be32_to_cpu(t->bytes);
+	t->action	= be32_to_cpu(t->action);
+	t->pid		= be32_to_cpu(t->pid);
+	t->device	= be32_to_cpu(t->device);
+	t->cpu		= be16_to_cpu(t->cpu);
+	t->error	= be16_to_cpu(t->error);
+	t->pdu_len	= be16_to_cpu(t->pdu_len);
+}
+
+/*
+ * check whether data is native or not
+ */
+static inline int check_data_endianness(u32 magic)
+{
+	if ((magic & 0xffffff00) == BLK_IO_TRACE_MAGIC) {
+		data_is_native = 1;
+		return 0;
+	}
+
+	magic = __bswap_32(magic);
+	if ((magic & 0xffffff00) == BLK_IO_TRACE_MAGIC) {
+		data_is_native = 0;
+		return 0;
+	}
+
+	return 1;
+}
+
+extern void set_all_format_specs(char *);
+extern int add_format_spec(char *);
+extern void process_fmt(char *, struct per_cpu_info *, struct blk_io_trace *,
+			unsigned long long, int, unsigned char *);
+extern int valid_act_opt(int);
+extern int find_mask_map(char *);
+extern char *find_process_name(pid_t);
+
+#endif
diff --git a/blktrace_api.h b/blktrace_api.h
new file mode 100644
index 0000000..ba9ee60
--- /dev/null
+++ b/blktrace_api.h
@@ -0,0 +1,136 @@
+#ifndef BLKTRACEAPI_H
+#define BLKTRACEAPI_H
+
+#include <asm/types.h>
+
+/*
+ * Trace categories
+ */
+enum {
+	BLK_TC_READ	= 1 << 0,	/* reads */
+	BLK_TC_WRITE	= 1 << 1,	/* writes */
+	BLK_TC_BARRIER	= 1 << 2,	/* barrier */
+	BLK_TC_SYNC	= 1 << 3,	/* sync */
+	BLK_TC_QUEUE	= 1 << 4,	/* queueing/merging */
+	BLK_TC_REQUEUE	= 1 << 5,	/* requeueing */
+	BLK_TC_ISSUE	= 1 << 6,	/* issue */
+	BLK_TC_COMPLETE	= 1 << 7,	/* completions */
+	BLK_TC_FS	= 1 << 8,	/* fs requests */
+	BLK_TC_PC	= 1 << 9,	/* pc requests */
+	BLK_TC_NOTIFY	= 1 << 10,	/* special message */
+	BLK_TC_AHEAD	= 1 << 11,	/* readahead */
+	BLK_TC_META	= 1 << 12,	/* metadata */
+	BLK_TC_DISCARD	= 1 << 13,	/* discard requests */
+	BLK_TC_DRV_DATA	= 1 << 14,	/* binary driver data */
+
+	BLK_TC_END	= 1 << 15,	/* only 16-bits, reminder */
+};
+
+#define BLK_TC_SHIFT		(16)
+#define BLK_TC_ACT(act)		((act) << BLK_TC_SHIFT)
+
+/*
+ * Basic trace actions
+ */
+enum {
+	__BLK_TA_QUEUE = 1,		/* queued */
+	__BLK_TA_BACKMERGE,		/* back merged to existing rq */
+	__BLK_TA_FRONTMERGE,		/* front merge to existing rq */
+	__BLK_TA_GETRQ,			/* allocated new request */
+	__BLK_TA_SLEEPRQ,		/* sleeping on rq allocation */
+	__BLK_TA_REQUEUE,		/* request requeued */
+	__BLK_TA_ISSUE,			/* sent to driver */
+	__BLK_TA_COMPLETE,		/* completed by driver */
+	__BLK_TA_PLUG,			/* queue was plugged */
+	__BLK_TA_UNPLUG_IO,		/* queue was unplugged by io */
+	__BLK_TA_UNPLUG_TIMER,		/* queue was unplugged by timer */
+	__BLK_TA_INSERT,		/* insert request */
+	__BLK_TA_SPLIT,			/* bio was split */
+	__BLK_TA_BOUNCE,		/* bio was bounced */
+	__BLK_TA_REMAP,			/* bio was remapped */
+	__BLK_TA_ABORT,			/* request aborted */
+	__BLK_TA_DRV_DATA,		/* binary driver data */
+};
+
+/*
+ * Notify events.
+ */
+enum blktrace_notify {
+	__BLK_TN_PROCESS = 0,		/* establish pid/name mapping */
+	__BLK_TN_TIMESTAMP,		/* include system clock */
+	__BLK_TN_MESSAGE,               /* Character string message */
+};
+
+/*
+ * Trace actions in full. Additionally, read or write is masked
+ */
+#define BLK_TA_QUEUE		(__BLK_TA_QUEUE | BLK_TC_ACT(BLK_TC_QUEUE))
+#define BLK_TA_BACKMERGE	(__BLK_TA_BACKMERGE | BLK_TC_ACT(BLK_TC_QUEUE))
+#define BLK_TA_FRONTMERGE	(__BLK_TA_FRONTMERGE | BLK_TC_ACT(BLK_TC_QUEUE))
+#define	BLK_TA_GETRQ		(__BLK_TA_GETRQ | BLK_TC_ACT(BLK_TC_QUEUE))
+#define	BLK_TA_SLEEPRQ		(__BLK_TA_SLEEPRQ | BLK_TC_ACT(BLK_TC_QUEUE))
+#define	BLK_TA_REQUEUE		(__BLK_TA_REQUEUE | BLK_TC_ACT(BLK_TC_REQUEUE))
+#define BLK_TA_ISSUE		(__BLK_TA_ISSUE | BLK_TC_ACT(BLK_TC_ISSUE))
+#define BLK_TA_COMPLETE		(__BLK_TA_COMPLETE| BLK_TC_ACT(BLK_TC_COMPLETE))
+#define BLK_TA_PLUG		(__BLK_TA_PLUG | BLK_TC_ACT(BLK_TC_QUEUE))
+#define BLK_TA_UNPLUG_IO	(__BLK_TA_UNPLUG_IO | BLK_TC_ACT(BLK_TC_QUEUE))
+#define BLK_TA_UNPLUG_TIMER	(__BLK_TA_UNPLUG_TIMER | BLK_TC_ACT(BLK_TC_QUEUE))
+#define BLK_TA_INSERT		(__BLK_TA_INSERT | BLK_TC_ACT(BLK_TC_QUEUE))
+#define BLK_TA_SPLIT		(__BLK_TA_SPLIT)
+#define BLK_TA_BOUNCE		(__BLK_TA_BOUNCE)
+#define BLK_TA_REMAP		(__BLK_TA_REMAP | BLK_TC_ACT(BLK_TC_QUEUE))
+#define BLK_TA_ABORT		(__BLK_TA_ABORT | BLK_TC_ACT(BLK_TC_QUEUE))
+#define BLK_TA_DRV_DATA		(__BLK_TA_DRV_DATA | BLK_TC_ACT(BLK_TC_DRV_DATA))
+
+#define BLK_TN_PROCESS		(__BLK_TN_PROCESS | BLK_TC_ACT(BLK_TC_NOTIFY))
+#define BLK_TN_TIMESTAMP	(__BLK_TN_TIMESTAMP | BLK_TC_ACT(BLK_TC_NOTIFY))
+#define BLK_TN_MESSAGE		(__BLK_TN_MESSAGE | BLK_TC_ACT(BLK_TC_NOTIFY))
+
+#define BLK_IO_TRACE_MAGIC	0x65617400
+#define BLK_IO_TRACE_VERSION	0x07
+
+/*
+ * The trace itself
+ */
+struct blk_io_trace {
+	__u32 magic;		/* MAGIC << 8 | version */
+	__u32 sequence;		/* event number */
+	__u64 time;		/* in nanoseconds */
+	__u64 sector;		/* disk offset */
+	__u32 bytes;		/* transfer length */
+	__u32 action;		/* what happened */
+	__u32 pid;		/* who did it */
+	__u32 device;		/* device identifier (dev_t) */
+	__u32 cpu;		/* on what cpu did it happen */
+	__u16 error;		/* completion error */
+	__u16 pdu_len;		/* length of data after this trace */
+};
+
+/*
+ * The remap event
+ */
+struct blk_io_trace_remap {
+	__u32 device_from;
+	__u32 device_to;
+	__u64 sector_from;
+};
+
+/*
+ * User setup structure passed with BLKSTARTTRACE
+ */
+struct blk_user_trace_setup {
+	char name[32];			/* output */
+	__u16 act_mask;			/* input */
+	__u32 buf_size;			/* input */
+	__u32 buf_nr;			/* input */
+	__u64 start_lba;
+	__u64 end_lba;
+	__u32 pid;
+};
+
+#define BLKTRACESETUP _IOWR(0x12,115,struct blk_user_trace_setup)
+#define BLKTRACESTART _IO(0x12,116)
+#define BLKTRACESTOP _IO(0x12,117)
+#define BLKTRACETEARDOWN _IO(0x12,118)
+
+#endif
diff --git a/btrace b/btrace
new file mode 100644
index 0000000..45c10cf
--- /dev/null
+++ b/btrace
@@ -0,0 +1,38 @@
+#!/bin/sh
+# Copyright (c) 2005 Silicon Graphics, Inc.
+# All rights reserved.
+# 
+#	Nathan Scott <nathans@sgi.com>
+#	14 Sep 2005	Initial version
+# 
+
+TRACEOPTS=""
+PARSEOPTS="-b100000"
+USAGE="Usage: btrace [-s] [-t] [-w N] [-n N] [-b N] [-a <trace>...] [-r <dbg mnt>] <dev>..."
+DIRNAME=`dirname $0`
+
+while getopts "a:w:n:b:r:sthv" c
+do
+	case $c in
+	a)	TRACEOPTS=$TRACEOPTS" -a "$OPTARG" ";;
+	w)	TRACEOPTS=$TRACEOPTS" -w "$OPTARG" ";;
+	n)	TRACEOPTS=$TRACEOPTS" -n "$OPTARG" ";;
+	b)	TRACEOPTS=$TRACEOPTS" -b "$OPTARG" ";;
+	r)	TRACEOPTS=$TRACEOPTS" -r "$OPTARG" ";;
+	s)	PARSEOPTS=$PARSEOPTS" -s";;
+	t)	PARSEOPTS=$PARSEOPTS" -t";;
+	h)	PARSEOPTS=$PARSEOPTS" -h";;
+	v)	PARSEOPTS=$PARSEOPTS" -v";;
+	\?)	echo $USAGE 1>&2
+		exit 2
+		;;
+	esac
+done
+
+shift `expr $OPTIND - 1`
+if [ $# -eq 0 ]; then
+	echo $USAGE 1>&2
+	exit 2
+fi
+
+${DIRNAME}/blktrace ${TRACEOPTS} -o- $@ | ${DIRNAME}/blkparse ${PARSEOPTS} -i-
diff --git a/btrace.spec b/btrace.spec
new file mode 100644
index 0000000..90f88d8
--- /dev/null
+++ b/btrace.spec
@@ -0,0 +1,55 @@
+#
+# spec file for package btrace (Version 1.0)
+#
+# Copyright (c) 2005 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# This file and all modifications and additions to the pristine
+# package are under the same license as the package itself.
+#
+# Please submit bugfixes or comments via http://www.suse.de/feedback/
+#
+
+# norootforbuild
+# neededforbuild tetex te_latex gcc
+
+Name:         btrace
+License:      GPL
+Group:        foo
+Version:      1.0
+Release:      1
+URL:          http://brick.kernel.dk/snaps
+Summary:      Block IO tracer
+Source0:      %name-%version.tar.bz2
+BuildRoot:    %{_tmppath}/%{name}-%{version}-build
+
+%description
+btrace can show detailed info about what is happening on a block
+device io queue. This is valuable for diagnosing and fixing
+performance or application problems relating to block layer io.
+
+
+Authors:
+--------
+    Jens Axboe <axboe@kernel.dk>
+
+%prep
+%setup -q
+
+%build
+make CFLAGS="$RPM_OPT_FLAGS" all docs
+
+%install
+rm -rf $RPM_BUILD_ROOT
+make dest=$RPM_BUILD_ROOT prefix=$RPM_BUILD_ROOT/%{_prefix} install
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(-,root,root)
+%doc README doc/blktrace.pdf
+/usr/bin/*
+/usr/man/*
+
+%changelog -n btrace
+* Mon Oct 10 2005 - axboe@suse.de
+- Initial version
diff --git a/btreplay/Makefile b/btreplay/Makefile
new file mode 100644
index 0000000..d027afb
--- /dev/null
+++ b/btreplay/Makefile
@@ -0,0 +1,45 @@
+#
+# OCFLAGS:
+# 	COUNT_IOS	- Counts struct io's left at end
+# 	DEBUG		- Various and sundy debug asserts
+# 	NDEBUG		- Defined: no asserts, Undefined: asserts
+#
+
+CC	= gcc
+CFLAGS	= -Wall -W -O2 -g
+INCS	= -I. -I.. -I../btt
+OCFLAGS	= -UCOUNT_IOS -UDEBUG -DNDEBUG
+XCFLAGS	= -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+override CFLAGS += $(INCS) $(XCFLAGS) $(OCFLAGS)
+
+PROGS	= btrecord btreplay
+LIBS	= -laio -lrt
+
+all: depend $(PROGS)
+
+$(PROGS): | depend
+
+docs:
+	$(MAKE) -C doc all
+
+docsclean:
+	$(MAKE) -C doc clean
+
+clean: docsclean
+	-rm -f *.o $(PROGS) .depend
+
+%.o: %.c
+	$(CC) $(CFLAGS) -c -o $*.o $<
+
+btrecord: btrecord.o
+	$(CC) $(CFLAGS) -o $@ $(filter %.o,$^)
+
+btreplay: btreplay.o
+	$(CC) $(CFLAGS) -o $@ $(filter %.o,$^) $(LIBS)
+
+depend:
+	@$(CC) -MM $(CFLAGS) *.c 1> .depend
+
+ifneq ($(wildcard .depend),)
+include .depend
+endif
diff --git a/btreplay/btrecord.c b/btreplay/btrecord.c
new file mode 100644
index 0000000..88ab806
--- /dev/null
+++ b/btreplay/btrecord.c
@@ -0,0 +1,789 @@
+/*
+ * Blktrace record utility - Convert binary trace data into bunches of IOs
+ *
+ * Copyright (C) 2007 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ */
+
+static char build_date[] = __DATE__ " at "__TIME__;
+
+#include <assert.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/param.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <stdarg.h>
+
+#if !defined(_GNU_SOURCE)
+#	define _GNU_SOURCE
+#endif
+#include <getopt.h>
+
+#include "list.h"
+#include "btrecord.h"
+#include "blktrace.h"
+
+/*
+ * Per input file information
+ *
+ * @head: 	Used to link up on input_files
+ * @devnm: 	Device name portion of this input file
+ * @file_name: 	Fully qualified name for this input file
+ * @cpu: 	CPU that this file was collected on
+ * @ifd: 	Input file descriptor (when opened)
+ * @tpkts: 	Total number of packets processed.
+ */
+struct ifile_info {
+	struct list_head head;
+	char *devnm, *file_name;
+	int cpu, ifd;
+	__u64 tpkts, genesis;
+};
+
+/*
+ * Per IO trace information
+ *
+ * @time: 	Time stamp when trace was emitted
+ * @sector: 	IO sector identifier
+ * @bytes: 	Number of bytes transferred
+ * @rw: 	Read (1) or write (0) 
+ */
+struct io_spec {
+	__u64 time;
+	__u64 sector;
+	__u32 bytes;
+	int rw;
+};
+
+/*
+ * Per output file information
+ *
+ * @ofp: 	Output file 
+ * @vfp:	Verbose output file
+ * @file_name: 	Fully qualified name for this file
+ * @vfn:	Fully qualified name for this file
+ * @cur: 	Current IO bunch being collected
+ * @iip: 	Input file this is associated with
+ * @start_time: Start time of th ecurrent bunch
+ * @last_time: 	Time of last packet put in
+ * @bunches: 	Number of bunches processed
+ * @pkts: 	Number of packets stored in bunches
+ */
+struct io_stream {
+	FILE *ofp, *vfp;
+	char *file_name, *vfn;
+	struct io_bunch *cur;
+	struct ifile_info *iip;
+	__u64 start_time, last_time, bunches, pkts;
+};
+
+int data_is_native;				// Indicates whether to swap
+static LIST_HEAD(input_files);			// List of all input files
+static char *idir = ".";			// Input directory base
+static char *odir = ".";			// Output directory base
+static char *obase = "replay";			// Output file base
+static __u64 max_bunch_tm = (10 * 1000 * 1000);	// 10 milliseconds
+static __u64 max_pkts_per_bunch = 8;		// Default # of pkts per bunch
+static int verbose = 0;				// Boolean: output stats
+static int find_traces = 0;			// Boolean: Find traces in dir
+
+static char usage_str[] =                                                  \
+        "\n"                                                               \
+	"\t[ -d <dir>  : --input-directory=<dir> ] Default: .\n"           \
+	"\t[ -D <dir>  : --output-directory=<dir>] Default: .\n"           \
+	"\t[ -F        : --find-traces           ] Default: Off\n"         \
+        "\t[ -h        : --help                  ] Default: Off\n"         \
+        "\t[ -m <nsec> : --max-bunch-time=<nsec> ] Default: 10 msec\n"     \
+	"\t[ -M <pkts> : --max-pkts=<pkts>       ] Default: 8\n"           \
+        "\t[ -o <base> : --output-base=<base>    ] Default: replay\n"      \
+        "\t[ -v        : --verbose               ] Default: Off\n"         \
+        "\t[ -V        : --version               ] Default: Off\n"         \
+	"\t<dev>...                                Default: None\n"	   \
+        "\n";
+
+#define S_OPTS	"d:D:Fhm:M:o:vV"
+static struct option l_opts[] = {
+	{
+		.name = "input-directory",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'd'
+	},
+	{
+		.name = "output-directory",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'D'
+	},
+	{
+		.name = "find-traces",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'F'
+	},
+	{
+		.name = "help",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'h'
+	},
+	{
+		.name = "max-bunch-time",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'm'
+	},
+	{
+		.name = "max-pkts",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'M'
+	},
+	{
+		.name = "output-base",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'o'
+	},
+	{
+		.name = "verbose",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'v'
+	},
+	{
+		.name = "version",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'V'
+	},
+	{
+		.name = NULL
+	}
+};
+
+#define ERR_ARGS			1
+#define ERR_SYSCALL			2
+static inline void fatal(const char *errstring, const int exitval,
+			 const char *fmt, ...)
+{
+	va_list ap;
+
+	if (errstring)
+		perror(errstring);
+
+	va_start(ap, fmt);
+	vfprintf(stderr, fmt, ap);
+	va_end(ap);
+
+	exit(exitval);
+	/*NOTREACHED*/
+}
+
+/**
+ * match - Return true if this trace is a proper QUEUE transaction
+ * @action: Action field from trace
+ */
+static inline int match(__u32 action)
+{
+	return ((action & 0xffff) == __BLK_TA_QUEUE) &&
+				       (action & BLK_TC_ACT(BLK_TC_QUEUE));
+}
+
+/**
+ * usage - Display usage string and version
+ */
+static void usage(void)
+{
+	fprintf(stderr, "Usage: btrecord -- version %s\n%s", 
+		my_btversion, usage_str);
+}
+
+/**
+ * write_file_hdr - Seek to and write btrecord file header
+ * @stream: Output file information
+ * @hdr: Header to write
+ */
+static void write_file_hdr(struct io_stream *stream, struct io_file_hdr *hdr)
+{
+	hdr->version = mk_btversion(btver_mjr, btver_mnr, btver_sub);
+
+	if (verbose) {
+		fprintf(stderr, "\t%s: %llx %llx %llx %llx\n", 
+			stream->file_name,
+			(long long unsigned)hdr->version,
+			(long long unsigned)hdr->genesis,
+			(long long unsigned)hdr->nbunches,
+			(long long unsigned)hdr->total_pkts);
+	}
+
+	fseek(stream->ofp, 0, SEEK_SET);
+	if (fwrite(hdr, sizeof(*hdr), 1, stream->ofp) != 1) {
+		fatal(stream->file_name, ERR_SYSCALL, "Hdr write failed\n");
+		/*NOTREACHED*/
+	}
+}
+
+/**
+ * io_bunch_create - Allocate & initialize an io_bunch
+ * @io_stream: IO stream being added to
+ * @pre_stall: Amount of time that this bunch should be delayed by
+ * @start_time: Records current start 
+ */
+static inline void io_bunch_create(struct io_stream *stream, __u64 start_time)
+{
+	struct io_bunch *cur = malloc(sizeof(*cur));
+
+	memset(cur, 0, sizeof(*cur));
+
+	cur->hdr.npkts = 0;
+	cur->hdr.time_stamp = stream->start_time = start_time;
+
+	stream->cur = cur;
+}
+
+/**
+ * io_bunch_add - Add an IO to the current bunch of IOs
+ * @stream: Per-output file stream information
+ * @spec: IO trace specification
+ *
+ * Returns update bunch information
+ */
+static void io_bunch_add(struct io_stream *stream, struct io_spec *spec)
+{
+	struct io_bunch *cur = stream->cur;
+	struct io_pkt iop = {
+		.sector = spec->sector,
+		.nbytes = spec->bytes,
+		.rw = spec->rw
+	};
+
+	assert(cur != NULL);
+	assert(cur->hdr.npkts < BT_MAX_PKTS);
+	assert(stream->last_time == 0 || stream->last_time <= spec->time);
+
+	cur->pkts[cur->hdr.npkts++] = iop;	// Struct copy
+	stream->last_time = spec->time;
+}
+
+/**
+ * rem_input_file - Release resources associated with an input file
+ * @iip: Per-input file information
+ */
+static void rem_input_file(struct ifile_info *iip)
+{
+	list_del(&iip->head);
+
+	close(iip->ifd);
+	free(iip->file_name);
+	free(iip->devnm);
+	free(iip);
+}
+
+/**
+ * __add_input_file - Allocate and initialize per-input file structure
+ * @cpu: CPU for this file
+ * @devnm: Device name for this file
+ * @file_name: Fully qualifed input file name
+ */
+static void __add_input_file(int cpu, char *devnm, char *file_name)
+{
+	struct ifile_info *iip = malloc(sizeof(*iip));
+
+	iip->cpu = cpu;
+	iip->tpkts = 0;
+	iip->genesis = 0;
+	iip->devnm = strdup(devnm);
+	iip->file_name = strdup(file_name);
+	iip->ifd = open(file_name, O_RDONLY);
+	if (iip->ifd < 0) {
+		fatal(file_name, ERR_ARGS, "Unable to open\n");
+		/*NOTREACHED*/
+	}
+
+	list_add_tail(&iip->head, &input_files);
+}
+
+/**
+ * add_input_file - Set up the input file name
+ * @devnm: Device name to use
+ */
+static void add_input_file(char *devnm)
+{
+	struct list_head *p;
+	int cpu, found = 0;
+
+	__list_for_each(p, &input_files) {
+		struct ifile_info *iip = list_entry(p, struct ifile_info, head);
+		if (strcmp(iip->devnm, devnm) == 0)
+			return;
+	}
+
+	for (cpu = 0; ; cpu++) {
+		char full_name[MAXPATHLEN];
+
+		sprintf(full_name, "%s/%s.blktrace.%d", idir, devnm, cpu);
+		if (access(full_name, R_OK) != 0)
+			break;
+
+		__add_input_file(cpu, devnm, full_name);
+		found++;
+	}
+
+	if (!found) {
+		fatal(NULL, ERR_ARGS, "No traces found for %s\n", devnm);
+		/*NOTREACHED*/
+	}
+}
+
+static void find_input_files(char *idir)
+{
+	struct dirent *ent;
+	DIR *dir = opendir(idir);
+
+	if (dir == NULL) {
+		fatal(idir, ERR_ARGS, "Unable to open %s\n", idir);
+		/*NOTREACHED*/
+	}
+
+	while ((ent = readdir(dir)) != NULL) {
+		char *p, *dsf = malloc(256);
+
+		if (strstr(ent->d_name, ".blktrace.") == NULL)
+			continue;
+
+		dsf = strdup(ent->d_name);
+		p = index(dsf, '.');
+		assert(p != NULL);
+		*p = '\0';
+		add_input_file(dsf);
+		free(dsf);
+	}
+
+	closedir(dir);
+}
+
+/**
+ * handle_args - Parse passed in argument list
+ * @argc: Number of arguments in argv
+ * @argv: Arguments passed in
+ *
+ * Does rudimentary parameter verification as well.
+ */
+void handle_args(int argc, char *argv[])
+{
+	int c;
+
+	while ((c = getopt_long(argc, argv, S_OPTS, l_opts, NULL)) != -1) {
+		switch (c) {
+		case 'd':
+			idir = optarg;
+			if (access(idir, R_OK | X_OK) != 0) {
+				fatal(idir, ERR_ARGS, 
+				      "Invalid input directory specified\n");
+				/*NOTREACHED*/
+			}
+			break;
+
+		case 'D':
+			odir = optarg;
+			if (access(odir, R_OK | X_OK) != 0) {
+				fatal(odir, ERR_ARGS, 
+				      "Invalid output directory specified\n");
+				/*NOTREACHED*/
+			}
+			break;
+
+		case 'F': 
+			find_traces = 1;
+			break;
+
+		case 'h': 
+			usage(); 
+			exit(0);
+			/*NOTREACHED*/
+
+		case 'm':
+			max_bunch_tm = (__u64)atoll(optarg);
+			if (max_bunch_tm < 1) {
+				fprintf(stderr, "Invalid bunch time %llu\n",
+					(unsigned long long)max_bunch_tm);
+				exit(ERR_ARGS);
+				/*NOTREACHED*/
+			}
+			break;
+
+		case 'M':
+			max_pkts_per_bunch = (__u64)atoll(optarg);
+			if (!((1 <= max_pkts_per_bunch) && 
+						(max_pkts_per_bunch < 513))) {
+				fprintf(stderr, "Invalid max pkts %llu\n",
+					(unsigned long long)max_pkts_per_bunch);
+				exit(ERR_ARGS);
+				/*NOTREACHED*/
+			}
+			break;
+
+		case 'o':
+			obase = optarg;
+			break;
+
+		case 'V':
+			fprintf(stderr, "btrecord -- version %s\n", 
+				my_btversion);
+			fprintf(stderr, "            Built on %s\n", build_date);
+			exit(0);
+			/*NOTREACHED*/
+
+		case 'v':
+			verbose++;
+			break;
+
+		default:
+			usage();
+			fatal(NULL, ERR_ARGS, "Invalid command line\n");
+			/*NOTREACHED*/
+		}
+	}
+
+	while (optind < argc)
+		add_input_file(argv[optind++]);
+
+	if (find_traces)
+		find_input_files(idir);
+
+	if (list_len(&input_files) == 0) {
+		fatal(NULL, ERR_ARGS, "Missing required input file name(s)\n");
+		/*NOTREACHED*/
+	}
+}
+
+/**
+ * next_io - Retrieve next Q trace from input stream
+ * @iip: Per-input file information
+ * @spec: IO specifier for trace
+ *
+ * Returns 0 on end of file, 1 if valid data returned.
+ */
+static int next_io(struct ifile_info *iip, struct io_spec *spec)
+{
+	ssize_t ret;
+	__u32 action;
+	__u16 pdu_len;
+	struct blk_io_trace t;
+
+again:
+	ret = read(iip->ifd, &t, sizeof(t));
+	if (ret < 0) {
+		fatal(iip->file_name, ERR_SYSCALL, "Read failed\n");
+		/*NOTREACHED*/
+	}
+	else if (ret == 0)
+		return 0;
+	else if (ret < (ssize_t)sizeof(t)) {
+		fprintf(stderr, "WARNING: Short read on %s (%d)\n", 
+			iip->file_name, (int)ret);
+		return 0;
+	}
+
+	if (data_is_native == -1)
+		check_data_endianness(t.magic);
+
+	assert(data_is_native >= 0);
+	if (data_is_native) {
+		spec->time = t.time;
+		spec->sector = t.sector;
+		spec->bytes = t.bytes;
+		action = t.action;
+		pdu_len = t.pdu_len;
+	}
+	else {
+		spec->time = be64_to_cpu(t.time);
+		spec->sector = be64_to_cpu(t.sector);
+		spec->bytes = be32_to_cpu(t.bytes);
+		action = be32_to_cpu(t.action);
+		pdu_len = be16_to_cpu(t.pdu_len);
+	}
+
+
+	if (pdu_len) {
+		char buf[pdu_len];
+
+		ret = read(iip->ifd, buf, pdu_len);
+		if (ret < 0) {
+			fatal(iip->file_name, ERR_SYSCALL, "Read PDU failed\n");
+			/*NOTREACHED*/
+		}
+		else if (ret < (ssize_t)pdu_len) {
+			fprintf(stderr, "WARNING: Short PDU read on %s (%d)\n", 
+				iip->file_name, (int)ret);
+			return 0;
+		}
+	}
+
+	iip->tpkts++;
+	if (!match(action))
+		goto again;
+
+	spec->rw = (action & BLK_TC_ACT(BLK_TC_READ)) ? 1 : 0;
+	if (verbose > 1)
+		fprintf(stderr, "%2d: %10llu+%10llu (%d) @ %10llx\n",
+			iip->cpu, (long long unsigned)spec->sector,
+			(long long unsigned)spec->bytes / 512LLU,
+			spec->rw, (long long unsigned)spec->time);
+
+	if (iip->genesis == 0) {
+		iip->genesis = spec->time;
+		if (verbose > 1)
+			fprintf(stderr, "\tSetting new genesis: %llx(%d)\n",
+				(long long unsigned)iip->genesis, iip->cpu);
+	}
+	else if (iip->genesis > spec->time)
+		fatal(NULL, ERR_SYSCALL, 
+			"Time inversion? %llu ... %llu\n",
+			(long long unsigned )iip->genesis, 
+			(long long unsigned )spec->time);
+
+	return 1;
+}
+
+/**
+ * bunch_output_hdr - Output bunch header
+ */
+static inline void bunch_output_hdr(struct io_stream *stream)
+{
+	struct io_bunch_hdr *hdrp = &stream->cur->hdr;
+
+	assert(0 < hdrp->npkts && hdrp->npkts <= BT_MAX_PKTS);
+	if (fwrite(hdrp, sizeof(struct io_bunch_hdr), 1, stream->ofp) != 1) {
+		fatal(stream->file_name, ERR_SYSCALL, "fwrite(hdr) failed\n");
+		/*NOTREACHED*/
+	}
+
+	if (verbose) {
+		__u64 off = hdrp->time_stamp - stream->iip->genesis;
+
+		assert(stream->vfp);
+		fprintf(stream->vfp, "------------------\n");
+		fprintf(stream->vfp, "%4llu.%09llu %3llu\n", 
+			(unsigned long long)off / (1000 * 1000 * 1000),
+			(unsigned long long)off % (1000 * 1000 * 1000), 
+			(unsigned long long)hdrp->npkts);
+		fprintf(stream->vfp, "------------------\n");
+	}
+}
+
+/**
+ * bunch_output_pkt - Output IO packets
+ */
+static inline void bunch_output_pkts(struct io_stream *stream)
+{
+	struct io_pkt *p = stream->cur->pkts;
+	size_t npkts = stream->cur->hdr.npkts;
+
+	assert(0 < npkts && npkts <= BT_MAX_PKTS);
+	if (fwrite(p, sizeof(struct io_pkt), npkts, stream->ofp) != npkts) {
+		fatal(stream->file_name, ERR_SYSCALL, "fwrite(pkts) failed\n");
+		/*NOTREACHED*/
+	}
+
+	if (verbose) {
+		size_t i;
+
+		assert(stream->vfp);
+		for (i = 0; i < npkts; i++, p++)
+			fprintf(stream->vfp, "\t%1d %10llu\t%10llu\n",
+				p->rw, 
+				(unsigned long long)p->sector,
+				(unsigned long long)p->nbytes / 512);
+	}
+}
+
+/**
+ * stream_flush - Flush current bunch of IOs out to the output stream
+ * @stream: Per-output file stream information
+ */
+static void stream_flush(struct io_stream *stream)
+{
+	struct io_bunch *cur = stream->cur;
+
+	if (cur) {
+		if (cur->hdr.npkts) {
+			assert(cur->hdr.npkts <= BT_MAX_PKTS);
+			bunch_output_hdr(stream);
+			bunch_output_pkts(stream);
+
+			stream->bunches++;
+			stream->pkts += cur->hdr.npkts;
+		}
+		free(cur);
+	}
+}
+
+/**
+ * bunch_done - Returns true if current bunch is either full, or next IO is late
+ * @stream: Output stream information
+ * @spec: IO trace specification
+ */
+static inline int bunch_done(struct io_stream *stream, struct io_spec *spec)
+{
+	if (stream->cur->hdr.npkts >= max_pkts_per_bunch)
+		return 1;
+
+	if ((spec->time - stream->start_time) > max_bunch_tm)
+		return 1;
+
+	return 0;
+}
+
+/**
+ * stream_add_io - Add an IO trace to the current stream
+ * @stream: Output stream information
+ * @spec: IO trace specification
+ */
+static void stream_add_io(struct io_stream *stream, struct io_spec *spec)
+{
+
+	if (stream->cur == NULL)
+		io_bunch_create(stream, spec->time);
+	else if (bunch_done(stream, spec)) {
+		stream_flush(stream);
+		io_bunch_create(stream, spec->time);
+	}
+
+	io_bunch_add(stream, spec);
+}
+
+/**
+ * stream_open - Open output stream for specified input stream
+ * @iip: Per-input file information
+ */
+static struct io_stream *stream_open(struct ifile_info *iip)
+{
+	char ofile_name[MAXPATHLEN];
+	struct io_stream *stream = malloc(sizeof(*stream));
+	struct io_file_hdr io_file_hdr = {
+		.genesis = 0,
+		.nbunches = 0,
+		.total_pkts = 0
+	};
+
+	memset(stream, 0, sizeof(*stream));
+
+	sprintf(ofile_name, "%s/%s.%s.%d", odir, iip->devnm, obase, iip->cpu);
+	stream->ofp = fopen(ofile_name, "w");
+	if (!stream->ofp) {
+		fatal(ofile_name, ERR_SYSCALL, "Open failed\n");
+		/*NOTREACHED*/
+	}
+
+	stream->iip = iip;
+	stream->cur = NULL;
+	stream->bunches = stream->pkts = 0;
+	stream->last_time = 0;
+	stream->file_name = strdup(ofile_name);
+
+	write_file_hdr(stream, &io_file_hdr);
+
+	if (verbose) {
+		char vfile_name[MAXPATHLEN];
+
+		sprintf(vfile_name, "%s/%s.%s.%d.rec", odir, iip->devnm,
+			obase, iip->cpu);
+		stream->vfp = fopen(vfile_name, "w");
+		if (!stream->vfp) {
+			fatal(vfile_name, ERR_SYSCALL, "Open failed\n");
+			/*NOTREACHED*/
+		}
+
+		stream->vfn = strdup(vfile_name);
+	}
+
+	data_is_native = -1;
+	return stream;
+}
+
+/**
+ * stream_close - Release resources associated with an output stream
+ * @stream: Stream to release
+ */
+static void stream_close(struct io_stream *stream)
+{
+	struct io_file_hdr io_file_hdr = {
+		.genesis = stream->iip->genesis,
+		.nbunches = stream->bunches,
+		.total_pkts = stream->pkts
+	};
+
+	stream_flush(stream);
+	write_file_hdr(stream, &io_file_hdr);
+	fclose(stream->ofp);
+
+	if (verbose && stream->bunches) {
+		fprintf(stderr, 
+			"%s:%d: %llu pkts (tot), %llu pkts (replay), "
+					"%llu bunches, %.1lf pkts/bunch\n",
+			stream->iip->devnm, stream->iip->cpu,
+			(unsigned long long)stream->iip->tpkts, 
+			(unsigned long long)stream->pkts, 
+			(unsigned long long)stream->bunches,
+			(double)(stream->pkts) / (double)(stream->bunches));
+
+		fclose(stream->vfp);
+		free(stream->vfn);
+	}
+
+	free(stream->file_name);
+	free(stream);
+}
+
+/**
+ * process - Process one input file to an output file
+ * @iip: Per-input file information
+ */
+static void process(struct ifile_info *iip)
+{
+	struct io_spec spec;
+	struct io_stream *stream;
+
+	stream = stream_open(iip);
+	while (next_io(iip, &spec))
+		stream_add_io(stream, &spec);
+	stream_close(stream);
+
+	rem_input_file(iip);
+}
+
+/**
+ * main - 
+ * @argc: Number of arguments
+ * @argv: Array of arguments
+ */
+int main(int argc, char *argv[])
+{
+	struct list_head *p, *q;
+
+	handle_args(argc, argv);
+	list_for_each_safe(p, q, &input_files)
+		process(list_entry(p, struct ifile_info, head));
+
+	return 0;
+}
diff --git a/btreplay/btrecord.h b/btreplay/btrecord.h
new file mode 100644
index 0000000..390e14c
--- /dev/null
+++ b/btreplay/btrecord.h
@@ -0,0 +1,95 @@
+/*
+ * Blktrace record utility - Convert binary trace data into bunches of IOs
+ *
+ * Copyright (C) 2007 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ */
+
+#if !defined(__BTRECORD_H__)
+#define __BTRECORD_H__
+
+#include <asm/types.h>
+
+#define BT_MAX_PKTS	512
+
+/*
+ * Header for each bunch
+ *
+ * @nkts: 	Number of IO packets to process
+ * @time_stamp:	Time stamp for this bunch of IOs
+ */
+struct io_bunch_hdr {
+	__u64 npkts;
+	__u64 time_stamp;
+};
+
+/*
+ * IO specifer
+ *
+ * @sector:	Sector number of IO
+ * @nbytes:	Number of bytes to process
+ * @rw:		IO direction: 0 = write, 1 = read
+ */
+struct io_pkt {
+	__u64 sector;
+	__u64 nbytes;
+	__u32 rw;
+};
+
+/*
+ * Shorthand notion of a bunch of IOs
+ *
+ * @hdr: 	Header describing stall and how many IO packets follow
+ * @pkts: 	Individual IOs are described here
+ */
+struct io_bunch {
+	struct io_bunch_hdr hdr;
+	struct io_pkt pkts[BT_MAX_PKTS];
+};
+
+/*
+ * Header for each recorded file
+ *
+ * @version:	Version information
+ * @genesis:	Time stamp for earliest bunch
+ * @nbunches:	Number of bunches put into the file
+ * @total_pkts:	Number of packets to be processed
+ */
+struct io_file_hdr {
+	__u64 version;
+	__u64 genesis;
+	__u64 nbunches;
+	__u64 total_pkts;
+};
+
+static inline __u64 mk_btversion(int mjr, int mnr, int sub)
+{
+	return ((mjr & 0xff) << 16) | ((mnr & 0xff) << 8) | (sub & 0xff);
+}
+
+static inline void get_btversion(__u64 version, int *mjr, int *mnr, int *sub)
+{
+	*mjr = (int)((version >> 16) & 0xff);
+	*mnr = (int)((version >>  8) & 0xff);
+	*sub = (int)((version >>  0) & 0xff);
+}
+
+static char my_btversion[] = "1.0.0";
+static int btver_mjr = 1;
+static int btver_mnr = 0;
+static int btver_sub = 0;
+
+#endif
diff --git a/btreplay/btreplay.c b/btreplay/btreplay.c
new file mode 100644
index 0000000..2d122ca
--- /dev/null
+++ b/btreplay/btreplay.c
@@ -0,0 +1,1627 @@
+/*
+ * Blktrace replay utility - Play traces back
+ *
+ * Copyright (C) 2007 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ */
+
+static char build_date[] = __DATE__ " at "__TIME__;
+
+#include <assert.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <libaio.h>
+#include <pthread.h>
+#include <sched.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+#include <sys/param.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <dirent.h>
+#include <stdarg.h>
+
+#if !defined(_GNU_SOURCE)
+#	define _GNU_SOURCE
+#endif
+#include <getopt.h>
+
+#include "list.h"
+#include "btrecord.h"
+
+/* 
+ * ========================================================================
+ * ==== STRUCTURE DEFINITIONS =============================================
+ * ========================================================================
+ */
+
+/**
+ * Each device map has one of these:
+ * 
+ * @head:	Linked on to map_devs
+ * @from_dev:	Device name as seen on recorded system
+ * @to_dev:	Device name to be used on replay system
+ */
+struct map_dev {
+	struct list_head head;
+	char *from_dev, *to_dev;
+};
+
+/**
+ * Each device name specified has one of these (until threads are created)
+ *
+ * @head: 	Linked onto input_devs
+ * @devnm: 	Device name -- 'sd*'
+ */
+struct dev_info {
+	struct list_head head;
+	char *devnm;
+};
+
+/*
+ * Per input file information
+ *
+ * @head: 	Used to link up on input_files
+ * @free_iocbs: List of free iocb's available for use
+ * @used_iocbs: List of iocb's currently outstanding
+ * @mutex: 	Mutex used with condition variable to protect volatile values
+ * @cond: 	Condition variable used when waiting on a volatile value change
+ * @naios_out: 	Current number of AIOs outstanding on this context
+ * @naios_free: Number of AIOs on the free list (short cut for list_len)
+ * @send_wait: 	Boolean: When true, the sub thread is waiting on free IOCBs
+ * @reap_wait: 	Boolean: When true, the rec thread is waiting on used IOCBs
+ * @send_done: 	Boolean: When true, the sub thread has completed work
+ * @reap_done: 	Boolean: When true, the rec thread has completed work
+ * @sub_thread: Thread used to submit IOs.
+ * @rec_thread: Thread used to reclaim IOs.
+ * @ctx: 	IO context
+ * @devnm: 	Copy of the device name being managed by this thread
+ * @file_name: 	Full name of the input file
+ * @cpu: 	CPU this thread is pinned to
+ * @ifd: 	Input file descriptor
+ * @ofd: 	Output file descriptor
+ * @iterations: Remaining iterations to process
+ * @vfp:	For verbose dumping of actions performed
+ */
+struct thr_info {
+	struct list_head head, free_iocbs, used_iocbs;
+	pthread_mutex_t mutex;
+	pthread_cond_t cond;
+	volatile long naios_out, naios_free;
+	volatile int send_wait, reap_wait, send_done, reap_done;
+	pthread_t sub_thread, rec_thread;
+	io_context_t ctx;
+	char *devnm, *file_name;
+	int cpu, ifd, ofd, iterations;
+	FILE *vfp;
+};
+
+/*
+ * Every Asynchronous IO used has one of these (naios per file/device).
+ *
+ * @iocb:	IOCB sent down via io_submit
+ * @head:	Linked onto file_list.free_iocbs or file_list.used_iocbs
+ * @tip:	Pointer to per-thread information this IO is associated with
+ * @nbytes:	Number of bytes in buffer associated with iocb
+ */
+struct iocb_pkt {
+	struct iocb iocb;
+	struct list_head head;
+	struct thr_info *tip;
+	int nbytes;
+};
+
+/* 
+ * ========================================================================
+ * ==== GLOBAL VARIABLES ==================================================
+ * ========================================================================
+ */
+
+static volatile int signal_done = 0;	// Boolean: Signal'ed, need to quit
+
+static char *ibase = "replay";		// Input base name
+static char *idir = ".";		// Input directory base
+static int cpus_to_use = -1;		// Number of CPUs to use
+static int def_iterations = 1;		// Default number of iterations
+static int naios = 512;			// Number of AIOs per thread
+static int ncpus = 0;			// Number of CPUs in the system
+static int verbose = 0;			// Boolean: Output some extra info
+static int write_enabled = 0;		// Boolean: Enable writing
+static __u64 genesis = ~0;		// Earliest time seen
+static __u64 rgenesis;			// Our start time
+static size_t pgsize;			// System Page size
+static int nb_sec = 512;		// Number of bytes per sector
+static LIST_HEAD(input_devs);		// List of devices to handle
+static LIST_HEAD(input_files);		// List of input files to handle
+static LIST_HEAD(map_devs);		// List of device maps
+static int nfiles = 0;			// Number of files to handle
+static int no_stalls = 0;		// Boolean: Disable pre-stalls
+static unsigned acc_factor = 1;		// Int: Acceleration factor
+static int find_records = 0;		// Boolean: Find record files auto
+
+/*
+ * Variables managed under control of condition variables.
+ *
+ * n_reclaims_done: 	Counts number of reclaim threads that have completed.
+ * n_replays_done:	Counts number of replay threads that have completed.
+ * n_replays_ready:	Counts number of replay threads ready to start.
+ * n_iters_done:	Counts number of replay threads done one iteration.
+ * iter_start:		Starts an iteration for the replay threads.
+ */
+static volatile int n_reclaims_done = 0;
+static pthread_mutex_t reclaim_done_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_cond_t reclaim_done_cond = PTHREAD_COND_INITIALIZER;
+
+static volatile int n_replays_done = 0;
+static pthread_mutex_t replay_done_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_cond_t replay_done_cond = PTHREAD_COND_INITIALIZER;
+
+static volatile int n_replays_ready = 0;
+static pthread_mutex_t replay_ready_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_cond_t replay_ready_cond = PTHREAD_COND_INITIALIZER;
+
+static volatile int n_iters_done = 0;
+static pthread_mutex_t iter_done_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_cond_t iter_done_cond = PTHREAD_COND_INITIALIZER;
+
+static volatile int iter_start = 0;
+static pthread_mutex_t iter_start_mutex = PTHREAD_MUTEX_INITIALIZER;
+static pthread_cond_t iter_start_cond = PTHREAD_COND_INITIALIZER;
+
+/* 
+ * ========================================================================
+ * ==== FORWARD REFERENECES ===============================================
+ * ========================================================================
+ */
+
+static void *replay_sub(void *arg);
+static void *replay_rec(void *arg);
+static char usage_str[];
+
+/* 
+ * ========================================================================
+ * ==== INLINE ROUTINES ===================================================
+ * ========================================================================
+ */
+
+/*
+ * The 'fatal' macro will output a perror message (if errstring is !NULL)
+ * and display a string (with variable arguments) and then exit with the 
+ * specified exit value.
+ */
+#define ERR_ARGS			1
+#define ERR_SYSCALL			2
+static inline void fatal(const char *errstring, const int exitval,
+			 const char *fmt, ...)
+{
+	va_list ap;
+
+	if (errstring)
+		perror(errstring);
+
+	va_start(ap, fmt);
+	vfprintf(stderr, fmt, ap);
+	va_end(ap);
+
+	exit(exitval);
+	/*NOTREACHED*/
+}
+
+static inline long long unsigned du64_to_sec(__u64 du64)
+{
+	return (long long unsigned)du64 / (1000 * 1000 * 1000);
+}
+
+static inline long long unsigned du64_to_nsec(__u64 du64)
+{
+	return llabs((long long)du64) % (1000 * 1000 * 1000);
+}
+
+/**
+ * min - Return minimum of two integers
+ */
+static inline int min(int a, int b)
+{ 
+	return a < b ? a : b;
+}
+
+/**
+ * minl - Return minimum of two longs
+ */
+static inline long minl(long a, long b)
+{ 
+	return a < b ? a : b;
+}
+
+/**
+ * usage - Display usage string and version
+ */
+static inline void usage(void)
+{
+	fprintf(stderr, "Usage: btreplay -- version %s\n%s", 
+		my_btversion, usage_str);
+}
+
+/**
+ * is_send_done - Returns true if sender should quit early
+ * @tip: Per-thread information
+ */
+static inline int is_send_done(struct thr_info *tip)
+{
+	return signal_done || tip->send_done;
+}
+
+/**
+ * is_reap_done - Returns true if reaper should quit early
+ * @tip: Per-thread information
+ */
+static inline int is_reap_done(struct thr_info *tip)
+{
+	return tip->send_done && tip->naios_out == 0;
+}
+
+/**
+ * ts2ns - Convert timespec values to a nanosecond value
+ */
+#define NS_TICKS		((__u64)1000 * (__u64)1000 * (__u64)1000)
+static inline __u64 ts2ns(struct timespec *ts)
+{
+	return ((__u64)(ts->tv_sec) * NS_TICKS) + (__u64)(ts->tv_nsec);
+}
+
+/**
+ * ts2ns - Convert timeval values to a nanosecond value
+ */
+static inline __u64 tv2ns(struct timeval *tp)
+{
+	return ((__u64)(tp->tv_sec)) + ((__u64)(tp->tv_usec) * (__u64)1000);
+}
+
+/**
+ * touch_memory - Force physical memory to be allocating it
+ * 
+ * For malloc()ed memory we need to /touch/ it to make it really
+ * exist. Otherwise, for write's (to storage) things may not work
+ * as planned - we see Linux just use a single area to /read/ from
+ * (as there isn't any memory that has been associated with the 
+ * allocated virtual addresses yet).
+ */
+static inline void touch_memory(char *buf, size_t bsize)
+{
+#if defined(PREP_BUFS)
+	memset(buf, 0, bsize);
+#else
+	size_t i;
+
+	for (i = 0; i < bsize; i += pgsize)
+		buf[i] = 0;
+#endif
+}
+
+/**
+ * buf_alloc - Returns a page-aligned buffer of the specified size
+ * @nbytes: Number of bytes to allocate
+ */
+static inline void *buf_alloc(size_t nbytes)
+{
+	void *buf;
+
+	if (posix_memalign(&buf, pgsize, nbytes)) {
+		fatal("posix_memalign", ERR_SYSCALL, "Allocation failed\n");
+		/*NOTREACHED*/
+	}
+
+	return buf;
+}
+
+/**
+ * gettime - Returns current time 
+ */
+static inline __u64 gettime(void)
+{
+	static int use_clock_gettime = -1;		// Which clock to use
+
+	if (use_clock_gettime < 0) {
+		use_clock_gettime = clock_getres(CLOCK_MONOTONIC, NULL) == 0;
+		if (use_clock_gettime) {
+			struct timespec ts = {
+				.tv_sec = 0,
+				.tv_nsec = 0
+			};
+			clock_settime(CLOCK_MONOTONIC, &ts);
+		}
+	}
+
+	if (use_clock_gettime) {
+		struct timespec ts;
+		clock_gettime(CLOCK_MONOTONIC, &ts);
+		return ts2ns(&ts);
+	}
+	else {
+		struct timeval tp;
+		gettimeofday(&tp, NULL);
+		return tv2ns(&tp);
+	}
+}
+
+/**
+ * setup_signal - Set up a signal handler for the specified signum
+ */
+static inline void setup_signal(int signum, sighandler_t handler)
+{
+	if (signal(signum, handler) == SIG_ERR) {
+		fatal("signal", ERR_SYSCALL, "Failed to set signal %d\n",
+			signum);
+		/*NOTREACHED*/
+	}
+}
+
+/* 
+ * ========================================================================
+ * ==== CONDITION VARIABLE ROUTINES =======================================
+ * ========================================================================
+ */
+
+/**
+ * __set_cv - Increments a variable under condition variable control.
+ * @pmp: 	Pointer to the associated mutex
+ * @pcp: 	Pointer to the associated condition variable
+ * @vp: 	Pointer to the variable being incremented
+ * @mxv: 	Max value for variable (Used only when ASSERTS are on)
+ */
+static inline void __set_cv(pthread_mutex_t *pmp, pthread_cond_t *pcp,
+			    volatile int *vp, 
+			    __attribute__((__unused__))int mxv)
+{
+	pthread_mutex_lock(pmp);
+	assert(*vp < mxv);
+	*vp += 1;
+	pthread_cond_signal(pcp);
+	pthread_mutex_unlock(pmp);
+}
+
+/**
+ * __wait_cv - Waits for a variable under cond var control to hit a value
+ * @pmp: 	Pointer to the associated mutex
+ * @pcp: 	Pointer to the associated condition variable
+ * @vp: 	Pointer to the variable being incremented
+ * @mxv: 	Value to wait for
+ */
+static inline void __wait_cv(pthread_mutex_t *pmp, pthread_cond_t *pcp,
+			     volatile int *vp, int mxv)
+{
+	pthread_mutex_lock(pmp);
+	while (*vp < mxv)
+		pthread_cond_wait(pcp, pmp);
+	*vp = 0;
+	pthread_mutex_unlock(pmp);
+}
+
+static inline void set_reclaim_done(void)
+{
+	__set_cv(&reclaim_done_mutex, &reclaim_done_cond, &n_reclaims_done,
+		 nfiles);
+}
+
+static inline void wait_reclaims_done(void)
+{
+	__wait_cv(&reclaim_done_mutex, &reclaim_done_cond, &n_reclaims_done,
+		  nfiles);
+}
+
+static inline void set_replay_ready(void)
+{
+	__set_cv(&replay_ready_mutex, &replay_ready_cond, &n_replays_ready,
+		 nfiles);
+}
+
+static inline void wait_replays_ready(void)
+{
+	__wait_cv(&replay_ready_mutex, &replay_ready_cond, &n_replays_ready,
+		  nfiles);
+}
+
+static inline void set_replay_done(void)
+{
+	__set_cv(&replay_done_mutex, &replay_done_cond, &n_replays_done,
+		nfiles);
+}
+
+static inline void wait_replays_done(void)
+{
+	__wait_cv(&replay_done_mutex, &replay_done_cond, &n_replays_done,
+		  nfiles);
+}
+
+static inline void set_iter_done(void)
+{
+	__set_cv(&iter_done_mutex, &iter_done_cond, &n_iters_done,
+		nfiles);
+}
+
+static inline void wait_iters_done(void)
+{
+	__wait_cv(&iter_done_mutex, &iter_done_cond, &n_iters_done,
+		  nfiles);
+}
+
+/**
+ * wait_iter_start - Wait for an iteration to start 
+ * 
+ * This is /slightly/ different: we are waiting for a value to become
+ * non-zero, and then we decrement it and go on. 
+ */
+static inline void wait_iter_start(void)
+{
+	pthread_mutex_lock(&iter_start_mutex);
+	while (iter_start == 0)
+		pthread_cond_wait(&iter_start_cond, &iter_start_mutex);
+	assert(1 <= iter_start && iter_start <= nfiles);
+	iter_start--;
+	pthread_mutex_unlock(&iter_start_mutex);
+}
+
+/**
+ * start_iter - Start an iteration at the replay thread level
+ */
+static inline void start_iter(void)
+{
+	pthread_mutex_lock(&iter_start_mutex);
+	assert(iter_start == 0);
+	iter_start = nfiles;
+	pthread_cond_broadcast(&iter_start_cond);
+	pthread_mutex_unlock(&iter_start_mutex);
+}
+
+/* 
+ * ========================================================================
+ * ==== CPU RELATED ROUTINES ==============================================
+ * ========================================================================
+ */
+
+/**
+ * get_ncpus - Sets up the global 'ncpus' value
+ */
+static void get_ncpus(void)
+{
+	cpu_set_t cpus;
+
+	if (sched_getaffinity(getpid(), sizeof(cpus), &cpus)) {
+		fatal("sched_getaffinity", ERR_SYSCALL, "Can't get CPU info\n");
+		/*NOTREACHED*/
+	}
+
+	/*
+	 * XXX This assumes (perhaps wrongly) that there are no /holes/ 
+	 * XXX in the mask.
+	 */
+	for (ncpus = 0; ncpus < CPU_SETSIZE && CPU_ISSET(ncpus, &cpus); ncpus++)
+		;
+	if (ncpus == 0) {
+		fatal(NULL, ERR_SYSCALL, "Insufficient number of CPUs\n");
+		/*NOTREACHED*/
+	}
+}
+
+/**
+ * pin_to_cpu - Pin this thread to a specific CPU
+ * @tip: Thread information
+ */
+static void pin_to_cpu(struct thr_info *tip)
+{
+	cpu_set_t cpus;
+
+	assert(0 <= tip->cpu && tip->cpu < ncpus);
+
+	CPU_ZERO(&cpus);
+	CPU_SET(tip->cpu, &cpus);
+	if (sched_setaffinity(getpid(), sizeof(cpus), &cpus)) {
+		fatal("sched_setaffinity", ERR_SYSCALL, "Failed to pin CPU\n");
+		/*NOTREACHED*/
+	}
+
+	if (verbose > 1) {
+		int i;
+		cpu_set_t now;
+
+		(void)sched_getaffinity(getpid(), sizeof(now), &now);
+		fprintf(tip->vfp, "Pinned to CPU %02d ", tip->cpu);
+		for (i = 0; i < ncpus; i++)
+			fprintf(tip->vfp, "%1d", CPU_ISSET(i, &now));
+		fprintf(tip->vfp, "\n");
+	}
+}
+
+/* 
+ * ========================================================================
+ * ==== INPUT DEVICE HANDLERS =============================================
+ * ========================================================================
+ */
+
+/**
+ * add_input_dev - Add a device ('sd*') to the list of devices to handle
+ */
+static void add_input_dev(char *devnm)
+{
+	struct list_head *p;
+	struct dev_info *dip;
+
+	__list_for_each(p, &input_devs) {
+		dip = list_entry(p, struct dev_info, head);
+		if (strcmp(dip->devnm, devnm) == 0)
+			return;
+	}
+
+	dip = malloc(sizeof(*dip));
+	dip->devnm = strdup(devnm);
+	list_add_tail(&dip->head, &input_devs);
+}
+
+/**
+ * rem_input_dev - Remove resources associated with this device
+ */
+static void rem_input_dev(struct dev_info *dip)
+{
+	list_del(&dip->head);
+	free(dip->devnm);
+	free(dip);
+}
+
+static void find_input_devs(char *idir)
+{
+	struct dirent *ent;
+	DIR *dir = opendir(idir);
+
+	if (dir == NULL) {
+		fatal(idir, ERR_ARGS, "Unable to open %s\n", idir);
+		/*NOTREACHED*/
+	}
+
+	while ((ent = readdir(dir)) != NULL) {
+		char *p, *dsf = malloc(256);
+
+		if (strstr(ent->d_name, ".replay.") == NULL)
+			continue;
+
+		dsf = strdup(ent->d_name);
+		p = index(dsf, '.');
+		assert(p != NULL);
+		*p = '\0';
+		add_input_dev(dsf);
+		free(dsf);
+	}
+
+	closedir(dir);
+}
+
+/* 
+ * ========================================================================
+ * ==== MAP DEVICE INTERFACES =============================================
+ * ========================================================================
+ */
+
+/**
+ * read_map_devs - Read in a set of device mapping from the provided file.
+ * @file_name:	File containing device maps
+ *
+ * We support the notion of multiple such files being specifed on the cmd line
+ */
+static void read_map_devs(char *file_name)
+{
+	FILE *fp;
+	char *from_dev, *to_dev;
+
+	fp = fopen(file_name, "r");
+	if (!fp) {
+		fatal(file_name, ERR_SYSCALL, "Could not open map devs file\n");
+		/*NOTREACHED*/
+	}
+
+	while (fscanf(fp, "%as %as", &from_dev, &to_dev) == 2) {
+		struct map_dev *mdp = malloc(sizeof(*mdp));
+
+		mdp->from_dev = from_dev;
+		mdp->to_dev = to_dev;
+		list_add_tail(&mdp->head, &map_devs);
+	}
+
+	fclose(fp);
+}
+
+/**
+ * release_map_devs - Release resources associated with device mappings.
+ */
+static void release_map_devs(void)
+{
+	struct list_head *p, *q;
+
+	list_for_each_safe(p, q, &map_devs) {
+		struct map_dev *mdp = list_entry(p, struct map_dev, head);
+
+		list_del(&mdp->head);
+
+		free(mdp->from_dev);
+		free(mdp->to_dev);
+		free(mdp);
+	}
+}
+
+/**
+ * map_dev - Return the mapped device for that specified
+ * @from_dev:	Device name as seen on recorded system
+ *
+ * Note: If there is no such mapping, we return the same name.
+ */
+static char *map_dev(char *from_dev)
+{
+	struct list_head *p;
+
+	__list_for_each(p, &map_devs) {
+		struct map_dev *mdp = list_entry(p, struct map_dev, head);
+
+		if (strcmp(from_dev, mdp->from_dev) == 0)
+			return mdp->to_dev;
+	}
+
+	return from_dev;
+}
+
+/* 
+ * ========================================================================
+ * ==== IOCB MANAGEMENT ROUTINES ==========================================
+ * ========================================================================
+ */
+
+/**
+ * iocb_init - Initialize the fields of an IOCB
+ * @tip: Per-thread information
+ * iocbp: IOCB pointer to update
+ */
+static void iocb_init(struct thr_info *tip, struct iocb_pkt *iocbp)
+{
+	iocbp->tip = tip;
+	iocbp->nbytes = 0;
+	iocbp->iocb.u.c.buf = NULL;
+}
+
+/**
+ * iocb_setup - Set up an iocb with this AIOs information
+ * @iocbp: IOCB pointer to update
+ * @rw: Direction (0 == write, 1 == read)
+ * @n: Number of bytes to transfer
+ * @off: Offset (in bytes)
+ */
+static void iocb_setup(struct iocb_pkt *iocbp, int rw, int n, long long off)
+{
+	char *buf;
+	struct iocb *iop = &iocbp->iocb;
+
+	assert(rw == 0 || rw == 1);
+	assert(0 < n && (n % nb_sec) == 0);
+	assert(0 <= off);
+
+	if (iocbp->nbytes) {
+		if (iocbp->nbytes >= n) {
+			buf = iop->u.c.buf;
+			goto prep;
+		}
+
+		assert(iop->u.c.buf);
+		free(iop->u.c.buf);
+	}
+
+	buf = buf_alloc(n);
+	iocbp->nbytes = n;
+
+prep:
+	if (rw)
+		io_prep_pread(iop, iocbp->tip->ofd, buf, n, off);
+	else {
+		assert(write_enabled);
+		io_prep_pwrite(iop, iocbp->tip->ofd, buf, n, off);
+		touch_memory(buf, n);
+	}
+
+	iop->data = iocbp;
+}
+
+/* 
+ * ========================================================================
+ * ==== PER-THREAD SET UP & TEAR DOWN =====================================
+ * ========================================================================
+ */
+
+/**
+ * tip_init - Per thread initialization function
+ */
+static void tip_init(struct thr_info *tip)
+{
+	int i;
+
+	INIT_LIST_HEAD(&tip->free_iocbs);
+	INIT_LIST_HEAD(&tip->used_iocbs);
+
+	pthread_mutex_init(&tip->mutex, NULL);
+	pthread_cond_init(&tip->cond, NULL);
+
+	if (io_setup(naios, &tip->ctx)) {
+		fatal("io_setup", ERR_SYSCALL, "io_setup failed\n");
+		/*NOTREACHED*/
+	}
+
+	tip->ofd = -1;
+	tip->naios_out = 0;
+	tip->send_done = tip->reap_done = 0;
+	tip->send_wait = tip->reap_wait = 0;
+
+	memset(&tip->sub_thread, 0, sizeof(tip->sub_thread));
+	memset(&tip->rec_thread, 0, sizeof(tip->rec_thread));
+
+	for (i = 0; i < naios; i++) {
+		struct iocb_pkt *iocbp = buf_alloc(sizeof(*iocbp));
+
+		iocb_init(tip, iocbp);
+		list_add_tail(&iocbp->head, &tip->free_iocbs);
+	}
+	tip->naios_free = naios;
+
+	if (verbose > 1) {
+		char fn[MAXPATHLEN];
+
+		sprintf(fn, "%s/%s.%s.%d.rep", idir, tip->devnm, ibase, 
+			tip->cpu);
+		tip->vfp = fopen(fn, "w");
+		if (!tip->vfp) {
+			fatal(fn, ERR_SYSCALL, "Failed to open report\n");
+			/*NOTREACHED*/
+		}
+
+		setlinebuf(tip->vfp);
+	}
+
+	if (pthread_create(&tip->sub_thread, NULL, replay_sub, tip)) {
+		fatal("pthread_create", ERR_SYSCALL, 
+			"thread create failed\n");
+		/*NOTREACHED*/
+	}
+
+	if (pthread_create(&tip->rec_thread, NULL, replay_rec, tip)) {
+		fatal("pthread_create", ERR_SYSCALL, 
+			"thread create failed\n");
+		/*NOTREACHED*/
+	}
+}
+
+/**
+ * tip_release - Release resources associated with this thread
+ */
+static void tip_release(struct thr_info *tip)
+{
+	struct list_head *p, *q;
+
+	assert(tip->send_done);
+	assert(tip->reap_done);
+	assert(list_len(&tip->used_iocbs) == 0);
+	assert(tip->naios_free == naios);
+
+	if (pthread_join(tip->sub_thread, NULL)) {
+		fatal("pthread_join", ERR_SYSCALL, "pthread sub join failed\n");
+		/*NOTREACHED*/
+	}
+	if (pthread_join(tip->rec_thread, NULL)) {
+		fatal("pthread_join", ERR_SYSCALL, "pthread rec join failed\n");
+		/*NOTREACHED*/
+	}
+
+	io_destroy(tip->ctx);
+
+	list_splice(&tip->used_iocbs, &tip->free_iocbs);
+	list_for_each_safe(p, q, &tip->free_iocbs) {
+		struct iocb_pkt *iocbp = list_entry(p, struct iocb_pkt, head);
+
+		list_del(&iocbp->head);
+		if (iocbp->nbytes) 
+			free(iocbp->iocb.u.c.buf);
+		free(iocbp);
+	}
+
+	pthread_cond_destroy(&tip->cond);
+	pthread_mutex_destroy(&tip->mutex);
+}
+
+/**
+ * add_input_file - Allocate and initialize per-input file structure
+ * @cpu: CPU for this file
+ * @devnm: Device name for this file
+ * @file_name: Fully qualifed input file name
+ */
+static void add_input_file(int cpu, char *devnm, char *file_name)
+{
+	struct stat buf;
+	struct io_file_hdr hdr;
+	struct thr_info *tip = buf_alloc(sizeof(*tip));
+	__u64 my_version = mk_btversion(btver_mjr, btver_mnr, btver_sub);
+
+	assert(0 <= cpu && cpu < ncpus);
+
+	memset(&hdr, 0, sizeof(hdr));
+	memset(tip, 0, sizeof(*tip));
+	tip->cpu = cpu % cpus_to_use;
+	tip->iterations = def_iterations;
+
+	tip->ifd = open(file_name, O_RDONLY);
+	if (tip->ifd < 0) {
+		fatal(file_name, ERR_ARGS, "Unable to open\n");
+		/*NOTREACHED*/
+	}
+	if (fstat(tip->ifd, &buf) < 0) {
+		fatal(file_name, ERR_SYSCALL, "fstat failed\n");
+		/*NOTREACHED*/
+	}
+	if (buf.st_size < (off_t)sizeof(hdr)) {
+		if (verbose)
+			fprintf(stderr, "\t%s empty\n", file_name);
+		goto empty_file;
+	}
+
+	if (read(tip->ifd, &hdr, sizeof(hdr)) != sizeof(hdr)) {
+		fatal(file_name, ERR_ARGS, "Header read failed\n");
+		/*NOTREACHED*/
+	}
+
+	if (hdr.version != my_version) {
+		fprintf(stderr, "%llx %llx %llx %llx\n", 
+			(long long unsigned)hdr.version,
+			(long long unsigned)hdr.genesis,
+			(long long unsigned)hdr.nbunches,
+			(long long unsigned)hdr.total_pkts);
+		fatal(NULL, ERR_ARGS, 
+			"BT version mismatch: %lx versus my %lx\n",
+			(long)hdr.version, (long)my_version);
+			
+	}
+
+	if (hdr.nbunches == 0) {
+empty_file:
+		close(tip->ifd);
+		free(tip);
+		return;
+	}
+
+	if (hdr.genesis < genesis) {
+		if (verbose > 1)
+			fprintf(stderr, "Setting genesis to %llu.%llu\n",
+				du64_to_sec(hdr.genesis),
+				du64_to_nsec(hdr.genesis));
+		genesis = hdr.genesis;
+	}
+
+	tip->devnm = strdup(devnm);
+	tip->file_name = strdup(file_name);
+
+	list_add_tail(&tip->head, &input_files);
+
+	if (verbose)
+		fprintf(stderr, "Added %s %llu\n", file_name, 
+			(long long)hdr.genesis);
+}
+
+/**
+ * rem_input_file - Release resources associated with an input file
+ * @tip: Per-input file information
+ */
+static void rem_input_file(struct thr_info *tip)
+{
+	list_del(&tip->head);
+
+	tip_release(tip);
+
+	close(tip->ofd);
+	close(tip->ifd);
+	free(tip->file_name);
+	free(tip->devnm);
+	free(tip);
+}
+
+/**
+ * rem_input_files - Remove all input files
+ */
+static void rem_input_files(void)
+{
+	struct list_head *p, *q;
+
+	list_for_each_safe(p, q, &input_files) {
+		rem_input_file(list_entry(p, struct thr_info, head));
+	}
+}
+
+/**
+ * __find_input_files - Find input files associated with this device (per cpu)
+ */
+static void __find_input_files(struct dev_info *dip)
+{
+	int cpu = 0;
+
+	for (;;) {
+		char full_name[MAXPATHLEN];
+
+		sprintf(full_name, "%s/%s.%s.%d", idir, dip->devnm, ibase, cpu);
+		if (access(full_name, R_OK) != 0)
+			break;
+
+		add_input_file(cpu, dip->devnm, full_name);
+		cpu++;
+	}
+
+	if (!cpu) {
+		fatal(NULL, ERR_ARGS, "No traces found for %s\n", dip->devnm);
+		/*NOTREACHED*/
+	}
+
+	rem_input_dev(dip);
+}
+
+
+/**
+ * find_input_files - Find input files for all devices
+ */
+static void find_input_files(void)
+{
+	struct list_head *p, *q;
+
+	list_for_each_safe(p, q, &input_devs) {
+		__find_input_files(list_entry(p, struct dev_info, head));
+	}
+}
+
+/* 
+ * ========================================================================
+ * ==== RECLAIM ROUTINES ==================================================
+ * ========================================================================
+ */
+
+/**
+ * reap_wait_aios - Wait for and return number of outstanding AIOs
+ *
+ * Will return 0 if we are done
+ */
+static int reap_wait_aios(struct thr_info *tip)
+{
+	int naios = 0;
+
+	if (!is_reap_done(tip)) {
+		pthread_mutex_lock(&tip->mutex);
+		while (tip->naios_out == 0) {
+			tip->reap_wait = 1;
+			if (pthread_cond_wait(&tip->cond, &tip->mutex)) {
+				fatal("pthread_cond_wait", ERR_SYSCALL, 
+					"nfree_current cond wait failed\n");
+				/*NOTREACHED*/
+			}
+		}
+		naios = tip->naios_out;
+		pthread_mutex_unlock(&tip->mutex);
+	}
+	assert(is_reap_done(tip) || naios > 0);
+
+	return is_reap_done(tip) ? 0 : naios;
+}
+
+/**
+ * reclaim_ios - Reclaim AIOs completed, recycle IOCBs
+ * @tip: Per-thread information
+ * @naios_out: Number of AIOs we have outstanding (min)
+ */
+static void reclaim_ios(struct thr_info *tip, long naios_out)
+{
+	long i, ndone;
+	struct io_event *evp, events[naios_out];
+
+again:
+	assert(naios > 0);
+	for (;;) {
+		ndone = io_getevents(tip->ctx, 1, naios_out, events, NULL);
+		if (ndone > 0)
+			break;
+
+		if (errno && errno != EINTR) {
+			fatal("io_getevents", ERR_SYSCALL, 
+				"io_getevents failed\n");
+			/*NOTREACHED*/
+		}
+	}
+	assert(0 < ndone && ndone <= naios_out);
+
+	pthread_mutex_lock(&tip->mutex);
+	for (i = 0, evp = events; i < ndone; i++, evp++) {
+		struct iocb_pkt *iocbp = evp->data;
+
+                if (evp->res != iocbp->iocb.u.c.nbytes) {
+                        fatal(NULL, ERR_SYSCALL,
+                              "Event failure %ld/%ld\t(%ld + %ld)\n",
+                              (long)evp->res, (long)evp->res2,
+                              (long)iocbp->iocb.u.c.offset / nb_sec, 
+			      (long)iocbp->iocb.u.c.nbytes / nb_sec);
+                        /*NOTREACHED*/
+                }
+
+		list_move_tail(&iocbp->head, &tip->free_iocbs);
+	}
+
+	tip->naios_free += ndone;
+	tip->naios_out -= ndone;
+	naios_out = minl(naios_out, tip->naios_out);
+
+	if (tip->send_wait) {
+		tip->send_wait = 0;
+		pthread_cond_signal(&tip->cond);
+	}
+	pthread_mutex_unlock(&tip->mutex);
+
+	/*
+	 * Short cut: If we /know/ there are some more AIOs, go handle them
+	 */
+	if (naios_out)
+		goto again;
+}
+
+/**
+ * replay_rec - Worker thread to reclaim AIOs
+ * @arg: Pointer to thread information
+ */
+static void *replay_rec(void *arg)
+{
+	long naios_out;
+	struct thr_info *tip = arg;
+
+	while ((naios_out = reap_wait_aios(tip)) > 0) 
+		reclaim_ios(tip, naios_out);
+
+	assert(tip->send_done);
+	tip->reap_done = 1;
+	set_reclaim_done();
+
+	return NULL;
+}
+
+/* 
+ * ========================================================================
+ * ==== REPLAY ROUTINES ===================================================
+ * ========================================================================
+ */
+
+/**
+ * next_bunch - Retrieve next bunch of AIOs to process
+ * @tip: Per-thread information
+ * @bunch: Bunch information
+ *
+ * Returns TRUE if we recovered a bunch of IOs, else hit EOF
+ */
+static int next_bunch(struct thr_info *tip, struct io_bunch *bunch)
+{
+	size_t count, result;
+	
+	result = read(tip->ifd, &bunch->hdr, sizeof(bunch->hdr));
+	if (result != sizeof(bunch->hdr)) {
+		if (result == 0)
+			return 0;
+
+		fatal(tip->file_name, ERR_SYSCALL, "Short hdr(%ld)\n", 
+			(long)result);
+		/*NOTREACHED*/
+	}
+	assert(bunch->hdr.npkts <= BT_MAX_PKTS);
+
+	count = bunch->hdr.npkts * sizeof(struct io_pkt);
+	result = read(tip->ifd, &bunch->pkts, count);
+	if (result != count) {
+		fatal(tip->file_name, ERR_SYSCALL, "Short pkts(%ld/%ld)\n", 
+			(long)result, (long)count);
+		/*NOTREACHED*/
+	}
+
+	return 1;
+}
+
+/**
+ * nfree_current - Returns current number of AIOs that are free
+ *
+ * Will wait for available ones...
+ *
+ * Returns 0 if we have some condition that causes us to exit
+ */
+static int nfree_current(struct thr_info *tip)
+{
+	int nfree = 0;
+
+	pthread_mutex_lock(&tip->mutex);
+	while (!is_send_done(tip) && ((nfree = tip->naios_free) == 0)) {
+		tip->send_wait = 1;
+		if (pthread_cond_wait(&tip->cond, &tip->mutex)) {
+			fatal("pthread_cond_wait", ERR_SYSCALL, 
+				"nfree_current cond wait failed\n");
+			/*NOTREACHED*/
+		}
+	}
+	pthread_mutex_unlock(&tip->mutex);
+
+	return nfree;
+}
+
+/**
+ * stall - Stall for the number of nanoseconds requested
+ *
+ * We may be late, in which case we just return.
+ */
+static void stall(struct thr_info *tip, long long oclock)
+{
+	struct timespec req;
+	long long dreal, tclock = gettime() - rgenesis;
+
+	oclock /= acc_factor;
+	
+	if (verbose > 1)
+		fprintf(tip->vfp, "   stall(%lld.%09lld, %lld.%09lld)\n",
+			du64_to_sec(oclock), du64_to_nsec(oclock),
+			du64_to_sec(tclock), du64_to_nsec(tclock));
+
+	while (!is_send_done(tip) && tclock < oclock) {
+		dreal = oclock - tclock;
+		req.tv_sec = dreal / (1000 * 1000 * 1000);
+		req.tv_nsec = dreal % (1000 * 1000 * 1000);
+
+		if (verbose > 1) {
+			fprintf(tip->vfp, "++ stall(%lld.%09lld) ++\n",
+				(long long)req.tv_sec,
+				(long long)req.tv_nsec);
+		}
+
+		if (nanosleep(&req, NULL) < 0 && signal_done)
+			break;
+
+		tclock = gettime() - rgenesis;
+	}
+}
+
+/**
+ * iocbs_map - Map a set of AIOs onto a set of IOCBs
+ * @tip: Per-thread information
+ * @list: List of AIOs created
+ * @pkts: AIOs to map
+ * @ntodo: Number of AIOs to map
+ */
+static void iocbs_map(struct thr_info *tip, struct iocb **list, 
+					     struct io_pkt *pkts, int ntodo)
+{
+	int i;
+	struct io_pkt *pkt;
+
+	assert(0 < ntodo && ntodo <= naios);
+
+	pthread_mutex_lock(&tip->mutex);
+	assert(ntodo <= list_len(&tip->free_iocbs));
+	for (i = 0, pkt = pkts; i < ntodo; i++, pkt++) {
+		__u32 rw = pkt->rw;
+		struct iocb_pkt *iocbp;
+
+		if (!pkt->rw && !write_enabled)
+			rw = 1;
+
+		if (verbose > 1)
+			fprintf(tip->vfp, "\t%10llu + %10llu %c%c\n",
+				(unsigned long long)pkt->sector, 
+				(unsigned long long)pkt->nbytes / nb_sec,
+				rw ? 'R' : 'W', 
+				(rw == 1 && pkt->rw == 0) ? '!' : ' ');
+		
+		iocbp = list_entry(tip->free_iocbs.next, struct iocb_pkt, head);
+		iocb_setup(iocbp, rw, pkt->nbytes, pkt->sector * nb_sec);
+
+		list_move_tail(&iocbp->head, &tip->used_iocbs);
+		list[i] = &iocbp->iocb;
+	}
+
+	tip->naios_free -= ntodo;
+	assert(tip->naios_free >= 0);
+	pthread_mutex_unlock(&tip->mutex);
+}
+
+/**
+ * process_bunch - Process a bunch of requests
+ * @tip: Per-thread information
+ * @bunch: Bunch to process
+ */
+static void process_bunch(struct thr_info *tip, struct io_bunch *bunch)
+{
+	__u64 i = 0;
+	struct iocb *list[bunch->hdr.npkts];
+
+	assert(0 < bunch->hdr.npkts && bunch->hdr.npkts <= BT_MAX_PKTS);
+	while (!is_send_done(tip) && (i < bunch->hdr.npkts)) {
+		long ndone;
+		int ntodo = min(nfree_current(tip), bunch->hdr.npkts - i);
+
+		assert(0 < ntodo && ntodo <= naios);
+		iocbs_map(tip, list, &bunch->pkts[i], ntodo);
+		if (!no_stalls)
+			stall(tip, bunch->hdr.time_stamp - genesis);
+
+		if (ntodo) {
+			if (verbose > 1)
+				fprintf(tip->vfp, "submit(%d)\n", ntodo);
+			ndone = io_submit(tip->ctx, ntodo, list);
+			if (ndone != (long)ntodo) {
+				fatal("io_submit", ERR_SYSCALL,
+					"%d: io_submit(%d:%ld) failed (%s)\n", 
+					tip->cpu, ntodo, ndone, 
+					strerror(labs(ndone)));
+				/*NOTREACHED*/
+			}
+
+			pthread_mutex_lock(&tip->mutex);
+			tip->naios_out += ndone;
+			assert(tip->naios_out <= naios);
+			if (tip->reap_wait) {
+				tip->reap_wait = 0;
+				pthread_cond_signal(&tip->cond);
+			}
+			pthread_mutex_unlock(&tip->mutex);
+
+			i += ndone;
+			assert(i <= bunch->hdr.npkts);
+		}
+	}
+}
+
+/**
+ * reset_input_file - Reset the input file for the next iteration
+ * @tip: Thread information
+ *
+ * We also do a dummy read of the file header to get us to the first bunch.
+ */
+static void reset_input_file(struct thr_info *tip)
+{
+	struct io_file_hdr hdr;
+
+	lseek(tip->ifd, 0, 0);
+
+	if (read(tip->ifd, &hdr, sizeof(hdr)) != sizeof(hdr)) {
+		fatal(tip->file_name, ERR_ARGS, "Header reread failed\n");
+		/*NOTREACHED*/
+	}
+}
+
+/**
+ * replay_sub - Worker thread to submit AIOs that are being replayed
+ */
+static void *replay_sub(void *arg)
+{
+	char path[MAXPATHLEN];
+	struct io_bunch bunch;
+	struct thr_info *tip = arg;
+	int oflags;
+
+	pin_to_cpu(tip);
+
+	sprintf(path, "/dev/%s", map_dev(tip->devnm));
+
+#ifdef O_NOATIME
+	oflags = O_NOATIME;
+#else
+	oflags = 0;
+#endif
+	tip->ofd = open(path, O_RDWR | O_DIRECT | oflags);
+	if (tip->ofd < 0) {
+		fatal(path, ERR_SYSCALL, "Failed device open\n");
+		/*NOTREACHED*/
+	}
+
+	set_replay_ready();
+	while (!is_send_done(tip) && tip->iterations--) {
+		wait_iter_start();
+		if (verbose > 1)
+			fprintf(tip->vfp, "\n=== %d ===\n", tip->iterations);
+		while (!is_send_done(tip) && next_bunch(tip, &bunch))
+			process_bunch(tip, &bunch);
+		set_iter_done();
+		reset_input_file(tip);
+	}
+	tip->send_done = 1;
+	set_replay_done();
+
+	return NULL;
+}
+
+/* 
+ * ========================================================================
+ * ==== COMMAND LINE ARGUMENT HANDLING ====================================
+ * ========================================================================
+ */
+
+static char usage_str[] = 						\
+        "\n"								\
+        "\t[ -c <cpus> : --cpus=<cpus>           ] Default: 1\n"        \
+        "\t[ -d <dir>  : --input-directory=<dir> ] Default: .\n"        \
+	"\t[ -F        : --find-records          ] Default: Off\n"	\
+        "\t[ -h        : --help                  ] Default: Off\n"      \
+        "\t[ -i <base> : --input-base=<base>     ] Default: replay\n"   \
+        "\t[ -I <iters>: --iterations=<iters>    ] Default: 1\n"        \
+        "\t[ -M <file> : --map-devs=<file>       ] Default: None\n"     \
+        "\t[ -N        : --no-stalls             ] Default: Off\n"      \
+        "\t[ -x        : --acc-factor            ] Default: 1\n"	\
+        "\t[ -v        : --verbose               ] Default: Off\n"      \
+        "\t[ -V        : --version               ] Default: Off\n"      \
+        "\t[ -W        : --write-enable          ] Default: Off\n"      \
+        "\t<dev...>                                Default: None\n"     \
+        "\n";
+
+#define S_OPTS	"c:d:Fhi:I:M:Nx:t:vVW"
+static struct option l_opts[] = {
+	{
+		.name = "cpus",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'c'
+	},
+	{
+		.name = "input-directory",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'd'
+	},
+	{
+		.name = "find-records",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'F'
+	},
+	{
+		.name = "help",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'h'
+	},
+	{
+		.name = "input-base",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'i'
+	},
+	{
+		.name = "iterations",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'I'
+	},
+	{
+		.name = "map-devs",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'M'
+	},
+	{
+		.name = "no-stalls",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'N'
+	},
+	{
+		.name = "acc-factor",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'x'
+	},
+	{
+		.name = "verbose",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'v'
+	},
+	{
+		.name = "version",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'V'
+	},
+	{
+		.name = "write-enable",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'W'
+	},
+	{
+		.name = NULL
+	}
+};
+
+/**
+ * handle_args: Parse passed in argument list
+ * @argc: Number of arguments in argv
+ * @argv: Arguments passed in
+ *
+ * Does rudimentary parameter verification as well.
+ */
+static void handle_args(int argc, char *argv[])
+{
+	int c;
+	int r;
+
+	while ((c = getopt_long(argc, argv, S_OPTS, l_opts, NULL)) != -1) {
+		switch (c) {
+		case 'c': 
+			cpus_to_use = atoi(optarg);
+			if (cpus_to_use <= 0 || cpus_to_use > ncpus) {
+				fatal(NULL, ERR_ARGS, 
+				      "Invalid number of cpus %d (0<x<%d)\n",
+				      cpus_to_use, ncpus);
+				/*NOTREACHED*/
+			}
+			break;
+
+		case 'd':
+			idir = optarg;
+			if (access(idir, R_OK | X_OK) != 0) {
+				fatal(idir, ERR_ARGS, 
+				      "Invalid input directory specified\n");
+				/*NOTREACHED*/
+			}
+			break;
+
+		case 'F': 
+			find_records = 1;
+			break;
+
+		case 'h': 
+			usage(); 
+			exit(0);
+			/*NOTREACHED*/
+
+		case 'i': 
+			ibase = optarg;
+			break;
+
+		case 'I':
+			def_iterations = atoi(optarg);
+			if (def_iterations <= 0) {
+				fprintf(stderr, 
+					"Invalid number of iterations %d\n",
+					def_iterations);
+				exit(ERR_ARGS);
+				/*NOTREACHED*/
+			}
+			break;
+
+		case 'M':
+			read_map_devs(optarg);
+			break;
+
+		case 'N':
+			no_stalls = 1;
+			break;
+
+		case 'x':
+			r = sscanf(optarg,"%u",&acc_factor);
+			if (r!=1) {
+				fprintf(stderr,
+					"Invalid acceleration factor\n");
+				exit(ERR_ARGS);
+				/*NOTREACHED*/
+			}
+			break;
+
+		case 'V':
+			fprintf(stderr, "btreplay -- version %s\n", 
+				my_btversion);
+			fprintf(stderr, "            Built on %s\n", 
+				build_date);
+			exit(0);
+			/*NOTREACHED*/
+
+		case 'v':
+			verbose++;
+			break;
+
+		case 'W':
+			write_enabled = 1;
+			break;
+
+		default:
+			usage();
+			fatal(NULL, ERR_ARGS, 
+			      "Invalid command line argument %c\n", c);
+			/*NOTREACHED*/
+		}
+	}
+
+	while (optind < argc)
+		add_input_dev(argv[optind++]);
+
+	if (find_records)
+		find_input_devs(idir);
+
+	if (list_len(&input_devs) == 0) {
+		fatal(NULL, ERR_ARGS, "Missing required input dev name(s)\n");
+		/*NOTREACHED*/
+	}
+
+	if (cpus_to_use < 0)
+		cpus_to_use = ncpus;
+}
+
+/* 
+ * ========================================================================
+ * ==== MAIN ROUTINE ======================================================
+ * ========================================================================
+ */
+
+/**
+ * set_signal_done - Signal handler, catches signals & sets signal_done
+ */
+static void set_signal_done(__attribute__((__unused__))int signum)
+{
+	signal_done = 1;
+}
+
+/**
+ * main - 
+ * @argc: Number of arguments
+ * @argv: Array of arguments
+ */
+int main(int argc, char *argv[])
+{
+	int i;
+	struct list_head *p;
+
+	pgsize = getpagesize();
+	assert(pgsize > 0);
+
+	setup_signal(SIGINT, set_signal_done);
+	setup_signal(SIGTERM, set_signal_done);
+
+	get_ncpus();
+	handle_args(argc, argv);
+	find_input_files();
+
+	nfiles = list_len(&input_files);
+	__list_for_each(p, &input_files) {
+		tip_init(list_entry(p, struct thr_info, head));
+	}
+
+	wait_replays_ready();
+	for (i = 0; i < def_iterations; i++) {
+		rgenesis = gettime();
+		start_iter();
+		if (verbose)
+			fprintf(stderr, "I");
+		wait_iters_done();
+	}
+
+	wait_replays_done();
+	wait_reclaims_done();
+
+	if (verbose)
+		fprintf(stderr, "\n");
+
+	rem_input_files();
+	release_map_devs();
+
+	return 0;
+}
diff --git a/btreplay/doc/Makefile b/btreplay/doc/Makefile
new file mode 100644
index 0000000..e3b383e
--- /dev/null
+++ b/btreplay/doc/Makefile
@@ -0,0 +1,18 @@
+DOCTMP  = btreplay.log btreplay.aux btreplay.dvi btreplay.toc
+
+all: btreplay.dvi btreplay.pdf
+
+btreplay.tex:
+	@touch btreplay.tex
+
+btreplay.dvi: btreplay.tex abstract.tex
+	@latex btreplay.tex
+	@latex btreplay.tex
+
+btreplay.pdf: btreplay.dvi
+	@dvipdfm -p letter btreplay
+
+clean:
+	-rm -f $(DOCTMP)
+	-rm -f *.bak *.ps *.pdf
+	@rm -rf btreplay
diff --git a/btreplay/doc/abstract.tex b/btreplay/doc/abstract.tex
new file mode 100644
index 0000000..314d820
--- /dev/null
+++ b/btreplay/doc/abstract.tex
@@ -0,0 +1,34 @@
+%
+% Copyright (C) 2007 Alan D. Brunelle <Alan.Brunelle@hp.com>
+%
+%  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
+%
+%  vi :set textwidth=75
+%
+The \texttt{btrecord} and \texttt{btreplay} tools provide the ability to
+record and replay IOs captured by the \texttt{blktrace} utility. Attempts
+are made to maintain ordering, CPU mappings and time-separation of IOs. The
+general workflow is expected to be:
+
+\begin{enumerate}
+  \item Initiate \texttt{blktrace} to capture traces
+  \item Generate traces\ldots
+  \item Stop \texttt{blktrace}
+  \item Run \texttt{btrecord} to convert traces into IO records 
+  \item Utilize \texttt{btreplay} to replay IOs 
+\end{enumerate}
+
+This document will discuss the operating characteristics of
+\texttt{btreplay} and provide detailed command line option descriptions.
diff --git a/btreplay/doc/btreplay.tex b/btreplay/doc/btreplay.tex
new file mode 100644
index 0000000..8b0ecf7
--- /dev/null
+++ b/btreplay/doc/btreplay.tex
@@ -0,0 +1,532 @@
+%
+% Copyright (C) 2007 Alan D. Brunelle <Alan.Brunelle@hp.com>
+%
+%  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
+%
+%  vi :set textwidth=75
+%
+\documentclass{article}
+\usepackage{multirow,graphicx,placeins}
+
+\begin{document}
+%---------------------
+\title{\texttt{btrecord} and \texttt{btreplay} User Guide}
+\author{Alan D. Brunelle (Alan.Brunelle@hp.com)}
+\date{\today}
+\maketitle
+\begin{abstract}
+\input{abstract.tex}
+\end{abstract}
+\thispagestyle{empty}\newpage
+%---------------------
+\tableofcontents\thispagestyle{empty}\newpage
+%---------------------
+\section{Introduction}
+\input{abstract.tex}
+
+\bigskip 
+This document presents the command line overview for
+\texttt{btrecord} and \texttt{btreplay}, and shows some commonly used
+example usages of it in everyday work here at OSLO's Scalability and
+Performance Group.
+
+\subsection*{Build Note}
+
+To build these tools, one needs to
+place the source directory next to a valid
+\texttt{blktrace}\footnote{\texttt{git://git.kernel.dk/blktrace.git}}
+directory, as it includes \texttt{../blktrace} in the \texttt{Makefile}.
+
+
+%---------------------
+\newpage\section{\texttt{btrecord} and \texttt{btreplay} Operating Model}
+
+The \texttt{blktrace} utility provides the ability to collect detailed
+traces from the kernel for each IO processed by the block IO layer. The
+traces provide a complete timeline for each IO processed, including
+detailed information concerning when an IO was first received by the block
+IO layer -- indicating the device, CPU number, time stamp, IO direction,
+sector number and IO size (number of sectors). Using this information,
+one is able to \emph{replay} the IO again on the same machine or another
+set up entirely.
+
+\subsection{Basic Workflow}
+The basic operating work-flow to replay IOs would be something like:
+
+\begin{enumerate}
+  \item Run \texttt{blktrace} to collect traces. Here you specify the
+  device or devices that you wish to trace and later replay IOs upon. Note:
+  the only traces you are interested in are \emph{QUEUE} requests --
+  thus, to save system resources (including storage for traces), one could
+  specify the \texttt{-a queue} command line option to \texttt{blktrace}.
+
+  \item While \texttt{blktrace} is running, you run the workload that you
+  are interested in. 
+
+  \item When the work load has completed, you stop the \texttt{blktrace}
+  utility (thus saving all traces over the complete workload). 
+
+  \item You extract the pertinent IO information from the traces saved by
+  \texttt{blktrace} using the \texttt{btrecord} utility. This will parse
+  each trace file created by \texttt{blktrace}, and craft IO descriptions
+  to be used in the next phase of the workload processing.
+
+  \item Once \texttt{btrecord} has successfully created a series of data
+  files to be processed, you can run the \texttt{btreplay} utility which
+  attempts to generate the same IOs seen during the sample workload phase.
+\end{enumerate}
+
+\subsection{IO Stream Replay Characteristics}
+  The major characteristics of the IO stream that are kept intact include:
+
+  \begin{description}
+    \item[Device] The IOs are replayed on the same device as was seen
+    during the sample workload.
+
+    \item[IO direction] The same IO direction (read/write) is maintained.
+
+    \item[IO offset] The same device offset is maintained.
+
+    \item[IO size] The same number of sectors are transferred.
+
+    \item[Time differential] The time stamps stored during the
+    \texttt{blktrace} run are used to determine the amount of time between
+    IOs during the sample workload. \texttt{btreplay} \emph{attempts} to
+    maintain the same time differential between IOs, but no guarantees as
+    to complete accuracy are provided by the utility.
+
+    \item[Device IO Stream Ordering] All IOs on a device are submitted in
+    the precise order they were seen during the sample workload run. 
+  \end{description}
+
+  As noted above, the time between IOs may not be accurately maintained
+  during replays. In addition the actual ordering of IOs \emph{between}
+  devices is not necessarily maintained. (Each device with an IO stream
+  maintains its own concept of time, and thus there may be slippage of the
+  time kept between managing threads.)
+
+  \begin{quotation}
+    We have prototyped a different approach, wherein a single managing
+    thread handles all IOs across all devices. This approach, while
+    guaranteeing correct ordering of IOs across all devices, resulted in
+    much worse timing on a per IO basis. 
+  \end{quotation}
+
+\subsection{\texttt{btrecord/btreplay} Method of Operation}
+
+As noted above, \texttt{btrecord} extracts \texttt{QUEUE} operations from
+\texttt{blktrace} output. These \texttt{QUEUE} operations indicate the
+entrance of IOs into the block IO layer. In order to replay these IOs with
+some accuracy in regards to ordering and timeliness, we decided to take
+multiple sequential (in time) IOs and put them in a single \emph{bunch} of
+IOs that will be processed as a single \emph{asynchronous IO} call to the
+kernel\footnote{Attempts to do them individually resulted in too large of a
+turnaround time penalty (user-space to kernel and back). Note that in a
+number of workloads, the IOs are coming in from the page cache handling
+code, and thus are submitted to the block IO layer with \emph{very small}
+time intervals between issues.}. To manage the size of the \emph{bunches},
+the \texttt{btrecord} utility provides you with two controlling knobs:
+
+\begin{description}
+  \item[\texttt{--max-bunch-time}] This is the amount of time to encompass
+  in one bunch -- only IOs within the time specified are eligible
+  for \emph{bunching.} The default time is 10 milliseconds (10,000,000
+  nanoseconds). Refer to section~\ref{sec:c-o-m} on page~\pageref{sec:c-o-m}
+  for more information.
+
+  \item[\texttt{--max-pkts}] A \emph{bunch} size can be anywhere from
+  1 to 512 packets in size and by default we max a bunch to contain no
+  more than 8 individual IOs. With this option, one can increase or
+  decrease the maximum \emph{bunch} size.  Refer to section~\ref{sec:c-o-M}
+  on page~\pageref{sec:c-o-M} for more information.
+\end{description}
+
+Each input data file (one per device per CPU) results in a new record
+data file (again, one per device per CPU) which contains information
+about \emph{bunches} of IOs to be replayed. \texttt{btreplay} operates on
+these record data files by spawning a new pair of threads per file. One
+thread manages the submitting of AIOs per bunch in the record data file,
+while the other thread manages reclaiming AIOs completed\footnote{We
+have found that having the same thread do both results in a further
+reduction in replay timing accuracy.}.
+
+Each submitting thread simply reads the input file of \emph{bunches}
+recorded by \texttt{btrecord}, and attempts to faithfully reproduce the
+ordering and timing of IOs seen during the sample workload. The reclaiming
+thread simply waits for AIO completions, freeing up resources for the
+submitting thread to utilize to submit new AIOs.
+
+The number of CPUs being used on the replay system can be different from
+the number on the recorded system. To help with mappings here the
+\texttt{--cpus} option allows one to state how many CPUs on the replay
+system to utilize. If the number of CPUs on the replay system is less than
+on the recording system, we wrap CPU IDs. This \emph{may} result in an
+overload of CPU processing capabilities on the replay system. (Refer to
+section~\ref{sec:p-o-c} on page~\pageref{sec:p-o-c} for more details about the
+\texttt{--cpus} option.)
+
+\newpage\subsection{Known Deficiencies and Proposed Possible Fixes}
+
+The overall known deficiencies with this current set of utilities is
+outlined here, in some cases ideas on additions and/or improvements are
+included as well.
+
+\begin{enumerate}
+  \item Lack of IO ordering across devices. 
+
+  \begin{quote}
+    \emph{We could institute the notion of global time across threads,
+    and thus ensure IO ordering across devices, with some reduction in
+    timing accuracy.}
+  \end{quote}
+
+  \item Lack of IO timing accuracy -- additional time between IO bunches.
+
+  \begin{quote}
+    \emph{This is the primary problem with any IO replay mechanism -- how
+    to guarantee per-IO timing accuracy with respect to other replayed IOs?
+    One idea to reduce errors in this area would be to push the IO replay
+    into the kernel, where you \emph{may} receive more responsive timings.}
+  \end{quote}
+
+  \item Bunching of IOs results in reduced time amongst IOs within a bunch.
+
+  \begin{quote}
+    \emph{The user has \emph{some} control over this (via the
+    \texttt{--max-pkts} option). One \emph{could} simply specify
+    \texttt{-max-pkts=1} and then each IO would be treated individually. Of
+    course, this would probably then run into the problem of excessive
+    inter-IO times.}
+  \end{quote}
+
+  \item 1-to-1 mapping of devices -- for now the devices on the replay
+  machine must be the same as on the recording machine. 
+
+  \begin{quote}
+    \emph{It should be relatively trivial to add in the notion of
+    mapping -- simply include a file that is read which maps devices
+    on one machine to devices (with offsets and sizes) on the replay
+    machine\footnote{The notion of an offset and device size to replay on
+    could be used to both allow for a single device to masquerade as more
+    than one device, and could be utilized in case the replay device is
+    smaller than the recorded device.}.}
+    
+    \medskip\emph{One could also add in the notion of CPU mappings as well --
+    device $D_{rec}$ managed by CPU $C_{rec}$ on the recorded system
+    shall be replayed on device $D_{rep}$ and CPU $C_{rep}$ on the
+    replay machine.}
+
+    \bigskip
+    \begin{quote}
+      With version 0.9.1 we now support the \texttt{-M} option to do this
+      -- see section~\ref{sec:p-o-M} on page~\pageref{sec:p-o-M} for more
+      information on device mapping.
+    \end{quote}
+  \end{quote}
+
+\end{enumerate}
+
+%---------------------
+\newpage\section{\label{sec:command-line}Command Line Options}
+\subsection{\texttt{btrecord} Command Line Options}
+\begin{figure}[h!]
+\begin{verbatim}
+Usage: btrecord -- version 0.9.3
+
+	[ -d <dir>  : --input-directory=<dir> ] Default: .
+	[ -D <dir>  : --output-directory=<dir>] Default: .
+	[ -F        : --find-traces           ] Default: Off
+	[ -h        : --help                  ] Default: Off
+	[ -m <nsec> : --max-bunch-time=<nsec> ] Default: 10 msec
+	[ -M <pkts> : --max-pkts=<pkts>       ] Default: 8
+	[ -o <base> : --output-base=<base>    ] Default: replay
+	[ -v        : --verbose               ] Default: Off
+	[ -V        : --version               ] Default: Off
+	<dev>...                                Default: None
+\end{verbatim}
+\caption{\label{fig:btrecord--help}\texttt{btrecord --help} Output}
+\end{figure}
+\FloatBarrier
+
+\subsubsection{\label{sec:c-o-d}\texttt{-d} or
+\texttt{--input-directory}\\Set Input Directory}
+
+The \texttt{-d} option requires a single parameter providing the directory
+name for where input files are to be found. The default directory is the
+current directory (\texttt{.}).
+
+\subsubsection{\label{sec:c-o-D}\texttt{-D} or
+\texttt{--output-directory}\\Set Output Directory}
+
+The \texttt{-D} option requires a single parameter providing the directory
+name for where output files are to be placed. The default directory is the
+current directory (\texttt{.}).
+
+\subsubsection{\texttt{-F} or \texttt{--find-traces}\\Find Trace Files
+Automatically}
+
+The \texttt{-F} option instructs \texttt{btrecord} to go find all the
+trace files in the directory specified (either via the \texttt{-d}
+option, or in the default directory '.').
+
+\subsubsection{\texttt{-h} or \texttt{--help}\\Display Help Message}
+\subsubsection{\texttt{-V} or \texttt{--version}\\Display
+\texttt{btrecord}Version}
+
+The \texttt{-h} option displays the command line options and
+defaults, as presented in figure~\ref{fig:btrecord--help} on
+page~\pageref{fig:btrecord--help}.
+
+The \texttt{-V} option displays the \texttt{btreplay} version, as shown here:
+
+\begin{verbatim}
+$ btrecord --version
+btrecord -- version 0.9.0
+\end{verbatim}
+
+Both commands exit immediately after processing the option.
+
+\subsubsection{\label{sec:c-o-m}\texttt{-m} or
+\texttt{--max-bunch-time}\\Set Maximum Time Per Bunch}
+
+The \texttt{-m} option requires a single parameter which specifies an
+amount of time (in nanoseconds) to include in any one bunch of IOs that
+are to be processed. The smaller the value, the smaller the number of
+IOs processed at one time -- perhaps yielding in more realistic replay.
+However, after a certain point the amount of overhead per bunch may result
+in additional real replay time, thus yielding less accurate replay times.
+
+The default value is 10,000,000 nanoseconds (10 milliseconds).
+
+\subsubsection{\label{sec:c-o-M}\texttt{-M} or
+\texttt{--max-pkts}\\Set Maximum Packets Per Bunch}
+
+The \texttt{-M} option requires a single parameter which specifies the
+maximum number of IOs to store in a single bunch. As with the \texttt{-m}
+option (section~\ref{sec:c-o-m}), smaller values \emph{may} or \emph{may not}
+yield more accurate replay times.
+
+The default value is 8, with a maximum value of up to 512 being supported.
+
+\subsubsection{\label{sec:c-o-o}\texttt{-o} or
+\texttt{--output-base}\\Set Base Name for Output Files}
+
+Each output file has 3 fields:
+
+\begin{enumerate}
+  \item Device identifier (taken directly from the device name of the
+  \texttt{blktrace} output file).
+
+  \item \texttt{btrecord} base name -- by default ``replay''.
+
+  \item And the CPU number (again, taken directly from the
+  \texttt{blktrace} output file name).
+\end{enumerate}
+
+This option requires a single parameter that will override the default name
+(replay), and replace it with the specified value.
+
+\subsubsection{\label{sec:c-o-v}\texttt{-v} or
+\texttt{--verbose}\\Select Verbose Output}
+
+This option will output some simple statistics at the end of a successful
+run. Figure~\ref{fig:verb-out} (page~\pageref{fig:verb-out}) shows
+an example of some output, while figure~\ref{fig:verb-defs}
+(page~\pageref{fig:verb-defs}) shows what the fields mean.
+
+\begin{figure}[h!]
+\begin{verbatim}
+sdab:0: 580661 pkts (tot), 126030 pkts (replay), 89809 bunches, 1.4 pkts/bunch
+sdab:1: 2559775 pkts (tot), 430172 pkts (replay), 293029 bunches, 1.5 pkts/bunch
+sdab:2: 653559 pkts (tot), 136522 pkts (replay), 102288 bunches, 1.3 pkts/bunch
+sdab:3: 474773 pkts (tot), 117849 pkts (replay), 69572 bunches, 1.7 pkts/bunch
+\end{verbatim}
+\caption{\label{fig:verb-out}Verbose Output Example}
+\end{figure}
+\FloatBarrier
+
+\begin{figure}[h!]
+\begin{description}
+  \item[Field 1] The first field contains the device name and CPU
+  identifier. Thus: \texttt{sdab:0:} means the device \texttt{sdab} and
+  traces on CPU 0. 
+
+  \item[Field 2] The second field contains the total number of packets
+  processed for each device file. 
+
+  \item[Field 3] The next field shows the number of packets eligible for
+  replay. 
+
+  \item[Field 4] The fourth field contains the total number of IO bunches. 
+
+  \item[Field 5] The last field shows the average number of IOs per bunch
+  recorded.
+\end{description}
+\caption{\label{fig:verb-defs}Verbose Field Definitions}
+\end{figure}
+\FloatBarrier
+
+%---------------------
+\newpage\subsection{\texttt{btreplay} Command Line Options}
+\begin{figure}[h!]
+\begin{verbatim}
+Usage: btreplay -- version 0.9.3
+
+	[ -c <cpus> : --cpus=<cpus>           ] Default: 1
+	[ -d <dir>  : --input-directory=<dir> ] Default: .
+	[ -F        : --find-records          ] Default: Off
+	[ -h        : --help                  ] Default: Off
+	[ -i <base> : --input-base=<base>     ] Default: replay
+	[ -I <iters>: --iterations=<iters>    ] Default: 1
+	[ -M <file> : --map-devs=<file>       ] Default: None
+	[ -N        : --no-stalls             ] Default: Off
+	[ -x <int>  : --acc-factor=<int>      ] Default: 1
+	[ -v        : --verbose               ] Default: Off
+	[ -V        : --version               ] Default: Off
+	[ -W        : --write-enable          ] Default: Off
+	<dev...>                                Default: None
+\end{verbatim}
+\caption{\label{fig:btreplay--help}\texttt{btreplay --help} Output}
+\end{figure}
+\FloatBarrier
+
+\subsubsection{\label{sec:p-o-c}\texttt{-c} or
+\texttt{--cpus}\\Set Number of CPUs to Use}
+
+\subsubsection{\label{sec:p-o-d}\texttt{-d} or
+\texttt{--input-directory}\\Set Input Directory}
+
+The \texttt{-d} option requires a single parameter providing the directory
+name for where input files are to be found. The default directory is the
+current directory (\texttt{.}).
+
+\subsubsection{\texttt{-F} or \texttt{--find-records}\\Find RecordFiles
+Automatically}
+
+The \texttt{-F} option instructs \texttt{btreplay} to go find all the
+record files in the directory specified (either via the \texttt{-d}
+option, or in the default directory '.').
+
+\subsubsection{\texttt{-h} or \texttt{--help}\\Display Help Message}
+\subsubsection{\texttt{-V} or \texttt{--version}\\Display
+\texttt{btreplay}Version}
+
+The \texttt{-h} option displays the command line options and
+defaults, as presented in figure~\ref{fig:btreplay--help} on
+page~\pageref{fig:btreplay--help}.
+
+The \texttt{-V} option displays the \texttt{btreplay} version, as show here:
+
+\begin{verbatim}
+$ btreplay --version
+btreplay -- version 0.9.0
+\end{verbatim}
+
+Both commands exit immediately after processing the option.
+
+\subsubsection{\label{sec:p-o-i}\texttt{-i} or
+\texttt{--input-base}\\Set Base Name for Input Files}
+
+Each input file has 3 fields:
+
+\begin{enumerate}
+  \item Device identifier (taken directly from the device name of the
+  \texttt{blktrace} output file).
+
+  \item \texttt{btrecord} base name -- by default ``replay''.
+
+  \item And the CPU number (again, taken directly from the
+  \texttt{blktrace} output file name).
+\end{enumerate}
+
+This option requires a single parameter that will override the default name
+(replay), and replace it with the specified value.
+
+\subsubsection{\label{sec:p-o-I}\texttt{-I} or
+\texttt{--iterations}\\Set Number of Iterations to Run}
+
+This option requires a single parameter which specifies the number of times
+to run through the input files. The default value is 1.
+
+\subsubsection{\label{sec:p-o-M}\texttt{-M} or \texttt{map-devs}\\
+Specify Device Mappings}
+
+This option requires a single parameter which specifies the name of a
+file containing device mappings. The file must be very simply managed, with
+just two pieces of data per line:
+
+\begin{enumerate}
+  \item The device name on the recorded system (with the \texttt{'/dev/'}
+  removed). Example: \texttt{/dev/sda} would just be \texttt{sda}.
+
+  \item The device name on the replay system to use (again, without the
+  \texttt{'/dev/'} path prepended).
+\end{enumerate}
+
+An example file for when one would map devices \texttt{/dev/sda} and
+\texttt{/dev/sdb} on the recorded system to \texttt{dev/sdg} and
+\texttt{sdh} on the replay system would be:
+
+\begin{verbatim}
+sda sdg
+sdb sdh
+\end{verbatim}
+
+The only entries in the file that are allowed are these two element lines
+-- we do not (yet?) support the notion of blank lines, or comment lines, or
+the like.
+
+The utility \emph{does} allow for multiple \texttt{-M} options to be
+supplied on the command line.
+
+\subsubsection{\label{sec:o-N}\texttt{-N} or \texttt{--no-stalls}\\Disable
+Pre-bunch Stalls}
+
+When specified on the command line, all pre-bunch stall indicators will be
+ignored. IOs will be replayed without inter-bunch delays.
+
+\subsubsection{\label{sec:o-x}\texttt{-x} or \texttt{--acc-factor}\\Acceleration
+Factor}
+
+  While the \texttt{--no-stalls} option allows the traces to be replayed
+  with no waiting time, this option specifies some acceleration factor
+  to be used. If the value of two is used, then the stall time is
+  divided by half resulting in a reduction of the execution time by
+  this factor. Note that if this number is too high, the results will
+  be equivalent of not having stall.
+
+\subsubsection{\label{sec:p-o-v}\texttt{-v} or
+\texttt{--verbose}\\Select Verbose Output}
+
+When specified on the command line, this option instructs \texttt{btreplay}
+to store information concerning each \emph{stall} and IO operation
+performed by \texttt{btreplay}. The name of each file so created will be
+the input file name used with an extension of \texttt{.rep} appended onto
+it. Thus, an input file of the name \texttt{sdab.replay.3} would generate a
+verbose output file with the name \texttt{sdab.replay.3.rep} in the
+directory specified for input files.
+
+In addition, \texttt{btreplay} will also output to \texttt{stderr} the
+names of the input files being processed.
+
+\subsubsection{\label{sec:p-o-W}\texttt{-W} or
+\texttt{--write-enable}\\Enable Writing During Replay}
+
+As a precautionary measure, by default \texttt{btreplay} will \emph{not}
+process \emph{write} requests. In order to enable \texttt{btreplay} to
+actually \emph{write} to devices one must explicitly specify the
+\texttt{-W} option.
+
+\end{document}
diff --git a/btt/.Android.mk.swp b/btt/.Android.mk.swp
new file mode 100644
index 0000000..2c92d7b
--- /dev/null
+++ b/btt/.Android.mk.swp
Binary files differ
diff --git a/btt/Android.mk b/btt/Android.mk
new file mode 100644
index 0000000..26a3b93
--- /dev/null
+++ b/btt/Android.mk
@@ -0,0 +1,23 @@
+ifneq ($(TARGET_SIMULATOR), true)
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := args.c bt_timeline.c devmap.c devs.c dip_rb.c iostat.c \
+                   latency.c misc.c output.c proc.c seek.c trace.c \
+                   trace_complete.c trace_im.c trace_issue.c \
+                   trace_queue.c trace_remap.c trace_requeue.c \
+                   ../rbtree.c mmap.c trace_plug.c bno_dump.c \
+                   unplug_hist.c q2d.c aqd.c plat.c
+
+LOCAL_C_INCLUDES := external/blktrace external/blktrace/btt
+
+LOCAL_CFLAGS := -O2 -g -W -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 \
+                -D_ANDROID_
+
+LOCAL_MODULE := btt
+LOCAL_MODULE_TAGS :=
+LOCAL_SYSTEM_SHARED_LIBRARIES := libc
+include $(BUILD_EXECUTABLE)
+
+endif
diff --git a/btt/Makefile b/btt/Makefile
new file mode 100644
index 0000000..1f6dacc
--- /dev/null
+++ b/btt/Makefile
@@ -0,0 +1,45 @@
+#
+# OCFLAGS:
+# 	COUNT_IOS	- Counts struct io's left at end
+# 	DEBUG		- Various and sundy debug asserts
+# 	NDEBUG		- Defined: no asserts, Undefined: asserts
+#
+
+CC	= gcc
+CFLAGS	= -Wall -W -O2 -g
+INCS	= -I. -I..
+XCFLAGS	= -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+override CFLAGS += $(INCS) $(XCFLAGS)
+
+PROGS	= btt
+LIBS	= $(PLIBS) $(ELIBS)
+OBJS	= args.o bt_timeline.o devmap.o devs.o dip_rb.o iostat.o latency.o \
+	  misc.o output.o proc.o seek.o trace.o trace_complete.o trace_im.o \
+	  trace_issue.o trace_queue.o trace_remap.o trace_requeue.o \
+	  ../rbtree.o mmap.o trace_plug.o bno_dump.o unplug_hist.o q2d.o \
+	  aqd.o plat.o
+
+all: depend $(PROGS)
+
+.PHONY : depend
+depend: $(patsubst %.o,%.c,$(filter %.o,$(OBJS)))
+	@$(CC) -MM $(CFLAGS) -I.. $^ 1> .depend
+
+docs:
+	$(MAKE) -C doc all
+
+docsclean:
+	$(MAKE) -C doc clean
+
+clean: docsclean
+	-rm -f *.o $(PROGS) .depend
+
+%.o: %.c
+	$(CC) $(CFLAGS) -c -o $*.o $<
+
+btt: $(OBJS)
+	$(CC) $(CFLAGS) -o $@ $(filter %.o,$^) $(LIBS)
+
+ifneq ($(wildcard .depend),)
+include .depend
+endif
diff --git a/btt/README b/btt/README
new file mode 100644
index 0000000..c395a67
--- /dev/null
+++ b/btt/README
@@ -0,0 +1,17 @@
+blktrace Timeline
+-----------------
+
+Alan D. Brunelle (initial version)
+
+Please refer to the documentation for details.
+
+Resources
+---------
+
+vger hosts a mailing list dedicated to btrace discussion and development.
+The list is called linux-btrace@vger.kernel.org, subscribe by sending
+a mail to majordomo@vger.kernel.org with 'subscribe linux-btrace' in
+the mail body.
+
+2006-04-16, Alan D. Brunelle <Alan.Brunelle@hp.com>
+
diff --git a/btt/aqd.c b/btt/aqd.c
new file mode 100644
index 0000000..3a45161
--- /dev/null
+++ b/btt/aqd.c
@@ -0,0 +1,80 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "globals.h"
+
+struct aqd_info {
+	FILE *fp;
+	int na;		/* # active */
+};
+
+void *aqd_alloc(char *str)
+{
+	char *oname;
+	struct aqd_info *ap;
+
+	if (aqd_name == NULL) return NULL;
+
+	ap = malloc(sizeof(*ap));
+	ap->na = 0;
+
+	oname = malloc(strlen(aqd_name) + strlen(str) + 32);
+	sprintf(oname, "%s_%s.dat", aqd_name, str);
+	if ((ap->fp = my_fopen(oname, "w")) == NULL) {
+		perror(oname);
+		return NULL;
+	}
+	add_file(ap->fp, oname);
+
+	return ap;
+
+}
+
+void aqd_free(void *info)
+{
+	free(info);
+}
+
+void aqd_issue(void *info, double ts)
+{
+	if (info) {
+		struct aqd_info *ap = info;
+
+		fprintf(ap->fp, "%lf %d\n%lf %d\n", ts, ap->na, ts, ap->na + 1);
+		ap->na += 1;
+	}
+}
+
+void aqd_complete(void *info, double ts)
+{
+	if (info) {
+		struct aqd_info *ap = info;
+
+		if (ap->na > 0) {
+			fprintf(ap->fp, "%lf %d\n%lf %d\n",
+					ts, ap->na, ts, ap->na - 1);
+			ap->na -= 1;
+		}
+	}
+}
diff --git a/btt/args.c b/btt/args.c
new file mode 100644
index 0000000..ed53b8b
--- /dev/null
+++ b/btt/args.c
@@ -0,0 +1,414 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <getopt.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include "globals.h"
+
+#define SETBUFFER_SIZE	(64 * 1024)
+
+#define S_OPTS	"aAB:d:D:e:hi:I:l:L:m:M:o:p:P:q:Q:rs:S:t:T:u:VvXz:"
+static struct option l_opts[] = {
+	{
+		.name = "seek-absolute",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'a'
+	},
+	{
+		.name = "all-data",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'A'
+	},
+	{
+		.name = "dump-blocknos",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'B'
+	},
+	{
+		.name = "range-delta",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'd'
+	},
+	{
+		.name = "devices",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'D'
+	},
+	{
+		.name = "exes",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'e'
+	},
+	{
+		.name = "help",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'h'
+	},
+	{
+		.name = "input-file",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'i'
+	},
+	{
+		.name = "iostat",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'I'
+	},
+	{
+		.name = "d2c-latencies",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'l'
+	},
+	{
+		.name = "periodic-latencies",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'L'
+	},
+	{
+		.name = "seeks-per-second",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'm'
+	},
+	{
+		.name = "dev-maps",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'M'
+	},
+	{
+		.name = "output-file",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'o'
+	},
+	{
+		.name = "per-io-dump",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'p'
+	},
+	{
+		.name = "per-io-trees",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'P'
+	},
+	{
+		.name = "q2c-latencies",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'q'
+	},
+	{
+		.name = "active-queue-depth",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'Q'
+	},
+	{
+		.name = "no-remaps",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'r'
+	},
+	{
+		.name = "seeks",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 's'
+	},
+	{
+		.name = "iostat-interval",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'S'
+	},
+	{
+		.name = "time-start",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 't'
+	},
+	{
+		.name = "time-end",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'T'
+	},
+	{
+		.name = "unplug-hist",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'u'
+	},
+	{
+		.name = "version",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'V'
+	},
+	{
+		.name = "verbose",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'v'
+	},
+	{
+		.name = "easy-parse-avgs",
+		.has_arg = no_argument,
+		.flag = NULL,
+		.val = 'X'
+	},
+	{
+		.name = "q2d-latencies",
+		.has_arg = required_argument,
+		.flag = NULL,
+		.val = 'z'
+	},
+	{
+		.name = NULL,
+	}
+};
+
+static char usage_str[] = \
+	"\n[ -a               | --seek-absolute ]\n" \
+	"[ -A               | --all-data ]\n" \
+	"[ -B <output name> | --dump-blocknos=<output name> ]\n" \
+	"[ -d <seconds>     | --range-delta=<seconds> ]\n" \
+	"[ -D <dev;...>     | --devices=<dev;...> ]\n" \
+	"[ -e <exe,...>     | --exes=<exe,...>  ]\n" \
+	"[ -h               | --help ]\n" \
+	"[ -i <input name>  | --input-file=<input name> ]\n" \
+	"[ -I <output name> | --iostat=<output name> ]\n" \
+	"[ -l <output name> | --d2c-latencies=<output name> ]\n" \
+	"[ -L <freq>        | --periodic-latencies=<freq> ]\n" \
+	"[ -m <output name> | --seeks-per-second=<output name> ]\n" \
+	"[ -M <dev map>     | --dev-maps=<dev map>\n" \
+	"[ -o <output name> | --output-file=<output name> ]\n" \
+	"[ -p <output name> | --per-io-dump=<output name> ]\n" \
+	"[ -P <output name> | --per-io-trees=<output name> ]\n" \
+	"[ -q <output name> | --q2c-latencies=<output name> ]\n" \
+	"[ -Q <output name> | --active-queue-depth=<output name> ]\n" \
+	"[ -r               | --no-remaps ]\n" \
+	"[ -s <output name> | --seeks=<output name> ]\n" \
+	"[ -S <interval>    | --iostat-interval=<interval> ]\n" \
+	"[ -t <sec>         | --time-start=<sec> ]\n" \
+	"[ -T <sec>         | --time-end=<sec> ]\n" \
+	"[ -u <output name> | --unplug-hist=<output name> ]\n" \
+	"[ -V               | --version ]\n" \
+	"[ -v               | --verbose ]\n" \
+	"[ -X               | --easy-parse-avgs ]\n" \
+	"[ -z <output name> | --q2d-latencies=<output name> ]\n" \
+	"\n";
+
+static void usage(char *prog)
+{
+	fprintf(stderr, "Usage: %s %s %s", prog, bt_timeline_version,
+		usage_str);
+}
+
+static FILE *setup_ofile(char *fname)
+{
+	if (fname) {
+		char *buf;
+		FILE *ofp = my_fopen(fname, "w");
+
+		if (!ofp) {
+			perror(fname);
+			exit(1);
+		}
+
+		buf = malloc(SETBUFFER_SIZE);
+		setbuffer(ofp, buf, SETBUFFER_SIZE);
+
+		add_file(ofp, fname);
+		add_buf(buf);
+
+		return ofp;
+	}
+
+	return NULL;
+}
+
+static FILE *std_open(char *output_name, char *sfx, char *msg)
+{
+	FILE *fp;
+	char fname[strlen(output_name) + 32];
+
+	sprintf(fname, "%s.%s", output_name, sfx);
+	fp = my_fopen(fname, "w");
+	if (fp == NULL) {
+		perror(fname);
+		exit(1);
+	}
+	if (verbose)
+		printf("Sending %s to %s\n", msg, fname);
+
+	return fp;
+}
+
+void handle_args(int argc, char *argv[])
+{
+	int c;
+
+	while ((c = getopt_long(argc, argv, S_OPTS, l_opts, NULL)) != -1) {
+		switch (c) {
+		case 'a':
+			seek_absolute = 1;
+			break;
+		case 'A':
+			output_all_data = 1;
+			break;
+		case 'B':
+			bno_dump_name = optarg;
+			break;
+		case 'd':
+			sscanf(optarg, "%lf", &range_delta);
+			break;
+		case 'D':
+			devices = optarg;
+			break;
+		case 'e':
+			exes = optarg;
+			break;
+		case 'h':
+			usage(argv[0]);
+			exit(0);
+		case 'i':
+			input_name = optarg;
+			break;
+		case 'l':
+			d2c_name = optarg;
+			break;
+		case 'L':
+			plat_freq = atof(optarg);
+			break;
+		case 'I':
+			iostat_name = strdup(optarg);
+			break;
+		case 'm':
+			sps_name = optarg;
+			break;
+		case 'M':
+			if (dev_map_read(optarg))
+				exit(1);
+			break;
+		case 'o':
+			output_name = optarg;
+			break;
+		case 'p':
+			per_io_name = strdup(optarg);
+			break;
+		case 'P':
+			per_io_trees = optarg;
+			break;
+		case 'q':
+			q2c_name = optarg;
+			break;
+		case 'Q':
+			aqd_name = optarg;
+			break;
+		case 'r':
+			ignore_remaps = 1;
+			break;
+		case 's':
+			seek_name = optarg;
+			break;
+		case 'S': {
+			unsigned int interval;
+
+			sscanf(optarg, "%u", &interval);
+			iostat_interval = (__u64)interval * 1000000000LL;
+			break;
+		}
+		case 't':
+			sscanf(optarg, "%lf", &t_astart);
+			time_bounded = 1;
+			break;
+		case 'T':
+			sscanf(optarg, "%lf", &t_aend);
+			time_bounded = 1;
+			break;
+		case 'u':
+			unplug_hist_name = optarg;
+			break;
+		case 'v':
+			verbose = 1;
+			break;
+		case 'V':
+			printf("%s version %s\n", argv[0], bt_timeline_version);
+			exit(0);
+		case 'X':
+			easy_parse_avgs++;
+			break;
+		case 'z':
+			q2d_name = optarg;
+			break;
+		default:
+			usage(argv[0]);
+			exit(1);
+		}
+	}
+
+	if (input_name == NULL) {
+		usage(argv[0]);
+		exit(1);
+	}
+
+	if (sps_name && !seek_name) {
+		fprintf(stderr, "FATAL: -m option requires -s options\n");
+		exit(1);
+	}
+
+	setup_ifile(input_name);
+
+	if (output_name == NULL) {
+		rngs_ofp = avgs_ofp = msgs_ofp = stdout;
+		easy_parse_avgs = 0;
+	} else {
+		rngs_ofp = std_open(output_name, "dat", "range data");
+		avgs_ofp = std_open(output_name, "avg", "stats data");
+		msgs_ofp = std_open(output_name, "msg", "K messages");
+		if (easy_parse_avgs) {
+			xavgs_ofp = std_open(output_name, "xvg",
+					     "EZ stats data");
+		}
+	}
+
+	iostat_ofp = setup_ofile(iostat_name);
+	per_io_ofp = setup_ofile(per_io_name);
+}
diff --git a/btt/bno_dump.c b/btt/bno_dump.c
new file mode 100644
index 0000000..7365300
--- /dev/null
+++ b/btt/bno_dump.c
@@ -0,0 +1,82 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include "globals.h"
+
+struct bno_dump {
+	FILE *rfp, *wfp, *cfp;
+};
+
+static FILE *bno_dump_open(__u32 device, char rwc)
+{
+	FILE *fp;
+	char *oname;
+	int mjr, mnr;
+
+	mjr = device >> MINORBITS;
+	mnr = device & ((1 << MINORBITS) - 1);
+
+	oname = malloc(strlen(bno_dump_name) + 32);
+	sprintf(oname, "%s_%03d,%03d_%c.dat", bno_dump_name, mjr, mnr, rwc);
+	if ((fp = my_fopen(oname, "w")) == NULL)
+		perror(oname);
+	else
+		add_file(fp, oname);
+	return fp;
+}
+
+static inline void bno_dump_write(FILE *fp, struct io *iop)
+{
+	fprintf(fp, "%15.9lf %lld %lld\n", BIT_TIME(iop->t.time),
+		(long long)BIT_START(iop), (long long)BIT_END(iop));
+}
+
+void *bno_dump_alloc(__u32 device)
+{
+	struct bno_dump *bdp;
+
+	if (bno_dump_name == NULL) return NULL;
+
+	bdp = malloc(sizeof(*bdp));
+	bdp->rfp = bno_dump_open(device, 'r');
+	bdp->wfp = bno_dump_open(device, 'w');
+	bdp->cfp = bno_dump_open(device, 'c');
+
+	return bdp;
+}
+
+void bno_dump_free(void *param)
+{
+	free(param);
+}
+
+void bno_dump_add(void *handle, struct io *iop)
+{
+	struct bno_dump *bdp = handle;
+
+	if (bdp) {
+		FILE *fp = IOP_READ(iop) ? bdp->rfp : bdp->wfp;
+
+		if (fp)
+			bno_dump_write(fp, iop);
+		if (bdp->cfp)
+			bno_dump_write(bdp->cfp, iop);
+	}
+}
diff --git a/btt/bno_plot.py b/btt/bno_plot.py
new file mode 100644
index 0000000..19dfdfd
--- /dev/null
+++ b/btt/bno_plot.py
@@ -0,0 +1,127 @@
+#! /usr/bin/env python
+#
+# btt blkno plotting interface
+#
+#  (C) Copyright 2008 Hewlett-Packard Development Company, L.P.
+#
+#  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
+#
+"""
+bno_plot.py
+	[ -h | --help       ]
+	[ -K | --keys-below ]
+	[ -v | --verbose    ]
+	[ <file...>         ]
+
+Utilizes gnuplot to generate a 3D plot of the block number output
+from btt.  If no <files> are specified, it will utilize all files
+generated after btt was run with -B blknos (meaning: all files of the
+form blknos*[rw].dat).
+
+The -K option forces bno_plot.py to put the keys below the graph,
+typically all keys for input files are put in the upper right corner
+of the graph. If the number of devices exceed 10, then bno_plot.py will
+automatically push the keys under the graph.
+
+To exit the plotter, enter 'quit' or ^D at the 'gnuplot> ' prompt.
+"""
+
+import getopt, glob, os, sys, tempfile
+
+verbose	= 0
+cmds	= """
+set title 'btt Generated Block Accesses'
+set xlabel 'Time (secs)'
+set ylabel 'Block Number'
+set zlabel '# Blocks per IO'
+set grid
+"""
+
+
+#-----------------------------------------------------------------------------
+def parse_args(in_args):
+	global verbose
+
+	keys_below = False
+	s_opts = 'hKv'
+	l_opts = [ 'help', 'keys-below', 'verbose' ]
+
+	try:
+		(opts, args) = getopt.getopt(in_args, s_opts, l_opts)
+	except getopt.error, msg:
+		print >>sys.stderr, msg
+		print >>sys.stderr, __doc__
+		sys.exit(1)
+
+	for (o, a) in opts:
+		if o in ('-h', '--help'):
+			print __doc__
+			sys.exit(0)
+		elif o in ('-v', '--verbose'):
+			verbose += 1
+		elif o in ('-K', '--keys-below'):
+			keys_below = True
+
+	if len(args) > 0:	bnos = args
+	else:			bnos = glob.glob('blknos*[rw].dat')
+
+	return (bnos, keys_below)
+
+#-----------------------------------------------------------------------------
+if __name__ == '__main__':
+	(bnos, keys_below) = parse_args(sys.argv[1:])
+
+	if verbose:
+		print 'Using files:',
+		for bno in bnos: print bno,
+		if keys_below:	print '\nKeys are to be placed below graph'
+		else:		print ''
+
+	tmpdir = tempfile.mktemp()
+	os.mkdir(tmpdir)
+
+	plot_cmd = None
+	for f in bnos:
+		t = '%s/%s' % (tmpdir, f)
+
+		fo = open(t, 'w')
+		for line in open(f, 'r'):
+			fld = line.split(None)
+			print >>fo, fld[0], fld[1], int(fld[2])-int(fld[1])
+		fo.close()
+
+		t = t[t.rfind('/')+1:]
+		if plot_cmd == None: plot_cmd = "splot '%s'" % t
+		else:                plot_cmd = "%s,'%s'" % (plot_cmd, t)
+
+	fo = open('%s/plot.cmds' % tmpdir, 'w')
+	print >>fo, cmds
+	if len(bnos) > 10 or keys_below: print >>fo, 'set key below'
+	print >>fo, plot_cmd
+	fo.close()
+
+	pid = os.fork()
+	if pid == 0:
+		cmd = '/usr/bin/gnuplot %s/plot.cmds -' % tmpdir
+
+		if verbose: print 'Executing %s' % cmd
+
+		cmd = cmd.split(None)
+		os.chdir(tmpdir)
+		os.execvp(cmd[0], cmd)
+		sys.exit(1)
+
+	os.waitpid(pid, 0)
+	os.system('/bin/rm -rf ' + tmpdir)
diff --git a/btt/bt_timeline.c b/btt/bt_timeline.c
new file mode 100644
index 0000000..24dafc8
--- /dev/null
+++ b/btt/bt_timeline.c
@@ -0,0 +1,126 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/time.h>
+#include <time.h>
+#include "globals.h"
+
+char bt_timeline_version[] = "2.08";
+
+char *devices, *exes, *input_name, *output_name, *seek_name, *bno_dump_name;
+char *d2c_name, *q2c_name, *per_io_name, *unplug_hist_name;
+char *sps_name, *aqd_name, *q2d_name, *per_io_trees;
+FILE *rngs_ofp, *avgs_ofp, *xavgs_ofp, *per_io_ofp, *msgs_ofp;
+int verbose, done, time_bounded, output_all_data, seek_absolute;
+int easy_parse_avgs, ignore_remaps;
+double t_astart, t_aend;
+unsigned long n_traces;
+struct avgs_info all_avgs;
+unsigned int n_devs;
+time_t genesis, last_vtrace;
+LIST_HEAD(all_devs);
+LIST_HEAD(all_procs);
+LIST_HEAD(all_ios);
+LIST_HEAD(free_ios);
+LIST_HEAD(free_bilinks);
+__u64 q_histo[N_HIST_BKTS], d_histo[N_HIST_BKTS];
+
+double plat_freq = 0.0;
+double range_delta = 0.1;
+__u64 last_q = (__u64)-1;
+
+struct region_info all_regions = {
+	.qranges = LIST_HEAD_INIT(all_regions.qranges),
+	.cranges = LIST_HEAD_INIT(all_regions.cranges),
+};
+
+int process(void);
+
+int main(int argc, char *argv[])
+{
+	handle_args(argc, argv);
+
+	init_dev_heads();
+	iostat_init();
+	if (process() || output_avgs(avgs_ofp) || output_ranges(rngs_ofp))
+		return 1;
+
+	if (iostat_ofp) {
+		fprintf(iostat_ofp, "\n");
+		iostat_dump_stats(iostat_last_stamp, 1);
+	}
+
+	if (msgs_ofp != stdout)
+		fclose(msgs_ofp);
+	if (rngs_ofp != stdout)
+		fclose(rngs_ofp);
+	if (avgs_ofp != stdout)
+		fclose(avgs_ofp);
+	if (xavgs_ofp)
+		fclose(xavgs_ofp);
+
+	dip_cleanup();
+	dev_map_exit();
+	dip_exit();
+	pip_exit();
+	io_free_all();
+	region_exit(&all_regions);
+	clean_allocs();
+
+	return 0;
+}
+
+static inline double tv2dbl(struct timeval *tv)
+{
+	return (double)tv->tv_sec + (((double)tv->tv_usec) / (1000.0 * 1000.0));
+}
+
+int process(void)
+{
+	int ret = 0;
+	struct io *iop = io_alloc();
+	struct timeval tvs, tve;
+
+	genesis = last_vtrace = time(NULL);
+	gettimeofday(&tvs, NULL);
+	while (!done && next_trace(&iop->t, &iop->pdu)) {
+		add_trace(iop);
+		iop = io_alloc();
+	}
+
+	io_release(iop);
+	gettimeofday(&tve, NULL);
+
+	if (verbose) {
+		double tps, dt_input = tv2dbl(&tve) - tv2dbl(&tvs);
+
+		tps = (double)n_traces / dt_input;
+		printf("\r                                        "
+		       "                                        \r");
+		printf("%10lu traces @ %.1lf Ktps in %.6lf seconds\n",
+			n_traces, tps/1000.0,
+			dt_input);
+	}
+
+	return ret;
+}
diff --git a/btt/btt_plot.py b/btt/btt_plot.py
new file mode 100755
index 0000000..b795cec
--- /dev/null
+++ b/btt/btt_plot.py
@@ -0,0 +1,394 @@
+#! /usr/bin/env python
+#
+# btt_plot.py: Generate matplotlib plots for BTT generate data files
+#
+#  (C) Copyright 2009 Hewlett-Packard Development Company, L.P.
+#
+#  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
+#
+
+"""
+btt_plot.py: Generate matplotlib plots for BTT generated data files
+
+Files handled:
+  AQD	- Average Queue Depth		Running average of queue depths
+
+  BNOS	- Block numbers accessed	Markers for each block
+
+  Q2D	- Queue to Issue latencies	Running averages
+  D2C	- Issue to Complete latencies	Running averages
+  Q2C	- Queue to Complete latencies	Running averages
+
+Usage:
+  btt_plot_aqd.py	equivalent to: btt_plot.py -t aqd	<type>=aqd
+  btt_plot_bnos.py	equivalent to: btt_plot.py -t bnos	<type>=bnos
+  btt_plot_q2d.py	equivalent to: btt_plot.py -t q2d	<type>=q2d
+  btt_plot_d2c.py	equivalent to: btt_plot.py -t d2c	<type>=d2c
+  btt_plot_q2c.py	equivalent to: btt_plot.py -t q2c	<type>=q2c
+
+Arguments:
+  [ -A          | --generate-all   ] Default: False
+  [ -L          | --no-legend      ] Default: Legend table produced
+  [ -o <file>   | --output=<file>  ] Default: <type>.png
+  [ -T <string> | --title=<string> ] Default: Based upon <type>
+  [ -v          | --verbose        ] Default: False
+  <data-files...>
+
+  The -A (--generate-all) argument is different: when this is specified,
+  an attempt is made to generate default plots for all 5 types (aqd, bnos,
+  q2d, d2c and q2c). It will find files with the appropriate suffix for
+  each type ('aqd.dat' for example). If such files are found, a plot for
+  that type will be made. The output file name will be the default for
+  each type. The -L (--no-legend) option will be obeyed for all plots,
+  but the -o (--output) and -T (--title) options will be ignored.
+"""
+
+__author__ = 'Alan D. Brunelle <alan.brunelle@hp.com>'
+
+#------------------------------------------------------------------------------
+
+import matplotlib
+matplotlib.use('Agg')
+import getopt, glob, os, sys
+import matplotlib.pyplot as plt
+
+plot_size	= [10.9, 8.4]	# inches...
+
+add_legend	= True
+generate_all	= False
+output_file	= None
+title_str	= None
+type		= None
+verbose		= False
+
+types		= [ 'aqd', 'q2d', 'd2c', 'q2c', 'bnos' ]
+progs		= [ 'btt_plot_%s.py' % t for t in types ]
+
+get_base 	= lambda file: file[file.find('_')+1:file.rfind('_')]
+
+#------------------------------------------------------------------------------
+def fatal(msg):
+	"""Generate fatal error message and exit"""
+
+	print >>sys.stderr, 'FATAL: %s' % msg
+	sys.exit(1)
+
+#----------------------------------------------------------------------
+def get_data(files):
+	"""Retrieve data from files provided.
+
+	Returns a database containing:
+		'min_x', 'max_x' 	- Minimum and maximum X values found
+		'min_y', 'max_y' 	- Minimum and maximum Y values found
+		'x', 'y'		- X & Y value arrays
+		'ax', 'ay'		- Running average over X & Y --
+					  if > 10 values provided...
+	"""
+	#--------------------------------------------------------------
+	def check(mn, mx, v):
+		"""Returns new min, max, and float value for those passed in"""
+
+		v = float(v)
+		if mn == None or v < mn: mn = v
+		if mx == None or v > mx: mx = v
+		return mn, mx, v
+
+	#--------------------------------------------------------------
+	def avg(xs, ys):
+		"""Computes running average for Xs and Ys"""
+
+		#------------------------------------------------------
+		def _avg(vals):
+			"""Computes average for array of values passed"""
+
+			total = 0.0
+			for val in vals:
+				total += val
+			return total / len(vals)
+
+		#------------------------------------------------------
+		if len(xs) < 1000:
+			return xs, ys
+
+		axs = [xs[0]]
+		ays = [ys[0]]
+		_xs = [xs[0]]
+		_ys = [ys[0]]
+
+		x_range = (xs[-1] - xs[0]) / 100
+		for idx in range(1, len(ys)):
+			if (xs[idx] - _xs[0]) > x_range:
+				axs.append(_avg(_xs))
+				ays.append(_avg(_ys))
+				del _xs, _ys
+
+				_xs = [xs[idx]]
+				_ys = [ys[idx]]
+			else:
+				_xs.append(xs[idx])
+				_ys.append(ys[idx])
+
+		if len(_xs) > 1:
+			axs.append(_avg(_xs))
+			ays.append(_avg(_ys))
+
+		return axs, ays
+
+	#--------------------------------------------------------------
+	global verbose
+
+	db = {}
+	min_x = max_x = min_y = max_y = None
+	for file in files:
+		if not os.path.exists(file):
+			fatal('%s not found' % file)
+		elif verbose:
+			print 'Processing %s' % file
+
+		xs = []
+		ys = []
+		for line in open(file, 'r'):
+			f = line.rstrip().split(None)
+			if line.find('#') == 0 or len(f) < 2:
+				continue
+			(min_x, max_x, x) = check(min_x, max_x, f[0])
+			(min_y, max_y, y) = check(min_y, max_y, f[1])
+			xs.append(x)
+			ys.append(y)
+
+		db[file] = {'x':xs, 'y':ys}
+		if len(xs) > 10:
+			db[file]['ax'], db[file]['ay'] = avg(xs, ys)
+		else:
+			db[file]['ax'] = db[file]['ay'] = None
+
+	db['min_x'] = min_x
+	db['max_x'] = max_x
+	db['min_y'] = min_y
+	db['max_y'] = max_y
+	return db
+
+#----------------------------------------------------------------------
+def parse_args(args):
+	"""Parse command line arguments.
+
+	Returns list of (data) files that need to be processed -- /unless/
+	the -A (--generate-all) option is passed, in which case superfluous
+	data files are ignored...
+	"""
+
+	global add_legend, output_file, title_str, type, verbose
+	global generate_all
+
+	prog = args[0][args[0].rfind('/')+1:]
+	if prog == 'btt_plot.py':
+		pass
+	elif not prog in progs:
+		fatal('%s not a valid command name' % prog)
+	else:
+		type = prog[prog.rfind('_')+1:prog.rfind('.py')]
+
+	s_opts = 'ALo:t:T:v'
+	l_opts = [ 'generate-all', 'type', 'no-legend', 'output', 'title',
+		   'verbose' ]
+
+	try:
+		(opts, args) = getopt.getopt(args[1:], s_opts, l_opts)
+	except getopt.error, msg:
+		print >>sys.stderr, msg
+		fatal(__doc__)
+
+	for (o, a) in opts:
+		if o in ('-A', '--generate-all'):
+			generate_all = True
+		elif o in ('-L', '--no-legend'):
+			add_legend = False
+		elif o in ('-o', '--output'):
+			output_file = a
+		elif o in ('-t', '--type'):
+			if not a in types:
+				fatal('Type %s not supported' % a)
+			type = a
+		elif o in ('-T', '--title'):
+			title_str = a
+		elif o in ('-v', '--verbose'):
+			verbose = True
+
+	if type == None and not generate_all:
+		fatal('Need type of data files to process - (-t <type>)')
+
+	return args
+
+#------------------------------------------------------------------------------
+def gen_title(fig, type, title_str):
+	"""Sets the title for the figure based upon the type /or/ user title"""
+
+	if title_str != None:
+		pass
+	elif type == 'aqd':
+		title_str = 'Average Queue Depth'
+	elif type == 'bnos':
+		title_str = 'Block Numbers Accessed'
+	elif type == 'q2d':
+		title_str = 'Queue (Q) To Issue (D) Average Latencies'
+	elif type == 'd2c':
+		title_str = 'Issue (D) To Complete (C) Average Latencies'
+	elif type == 'q2c':
+		title_str = 'Queue (Q) To Complete (C) Average Latencies'
+
+	title = fig.text(.5, .95, title_str, horizontalalignment='center')
+	title.set_fontsize('large')
+
+#------------------------------------------------------------------------------
+def gen_labels(db, ax, type):
+	"""Generate X & Y 'axis'"""
+
+	#----------------------------------------------------------------------
+	def gen_ylabel(ax, type):
+		"""Set the Y axis label based upon the type"""
+
+		if type == 'aqd':
+			str = 'Number of Requests Queued'
+		elif type == 'bnos':
+			str = 'Block Number'
+		else:
+			str = 'Seconds'
+		ax.set_ylabel(str)
+
+	#----------------------------------------------------------------------
+	xdelta = 0.1 * (db['max_x'] - db['min_x'])
+	ydelta = 0.1 * (db['max_y'] - db['min_y'])
+
+	ax.set_xlim(db['min_x'] - xdelta, db['max_x'] + xdelta)
+	ax.set_ylim(db['min_y'] - ydelta, db['max_y'] + ydelta)
+	ax.set_xlabel('Runtime (seconds)')
+	ax.grid(True)
+	gen_ylabel(ax, type)
+
+#------------------------------------------------------------------------------
+def generate_output(type, db):
+	"""Generate the output plot based upon the type and database"""
+
+	#----------------------------------------------------------------------
+	def color(idx, style):
+		"""Returns a color/symbol type based upon the index passed."""
+
+                colors = [ 'b', 'g', 'r', 'c', 'm', 'y', 'k' ]
+		l_styles = [ '-', ':', '--', '-.' ]
+		m_styles = [ 'o', '+', '.', ',', 's', 'v', 'x', '<', '>' ]
+
+		color = colors[idx % len(colors)]
+		if style == 'line':
+			style = l_styles[(idx / len(l_styles)) % len(l_styles)]
+		elif style == 'marker':
+			style = m_styles[(idx / len(m_styles)) % len(m_styles)]
+
+		return '%s%s' % (color, style)
+
+	#----------------------------------------------------------------------
+	def gen_legends(a, legends):
+		leg = ax.legend(legends, 'best', shadow=True)
+		frame = leg.get_frame()
+		frame.set_facecolor('0.80')
+		for t in leg.get_texts():
+			t.set_fontsize('xx-small')
+
+	#----------------------------------------------------------------------
+	global add_legend, output_file, title_str, verbose
+
+	if output_file != None:
+		ofile = output_file
+	else:
+		ofile = '%s.png' % type
+
+	if verbose:
+		print 'Generating plot into %s' % ofile
+
+	fig = plt.figure(figsize=plot_size)
+	ax = fig.add_subplot(111)
+
+	gen_title(fig, type, title_str)
+	gen_labels(db, ax, type)
+
+	idx = 0
+	if add_legend:
+		legends = []
+	else:
+		legends = None
+
+	keys = []
+	for file in db.iterkeys():
+		if not file in ['min_x', 'max_x', 'min_y', 'max_y']:
+			keys.append(file)
+
+	keys.sort()
+	for file in keys:
+		dat = db[file]
+		if type == 'bnos':
+			ax.plot(dat['x'], dat['y'], color(idx, 'marker'),
+				markersize=1)
+		elif dat['ax'] == None:
+			continue	# Don't add legend
+		else:
+			ax.plot(dat['ax'], dat['ay'], color(idx, 'line'),
+				linewidth=1.0)
+		if add_legend:
+			legends.append(get_base(file))
+		idx += 1
+
+	if add_legend and len(legends) > 0:
+		gen_legends(ax, legends)
+	plt.savefig(ofile)
+
+#------------------------------------------------------------------------------
+def get_files(type):
+	"""Returns the list of files for the -A option based upon type"""
+
+	if type == 'bnos':
+		files = []
+		for fn in glob.glob('*c.dat'):
+			for t in [ 'q2q', 'd2d', 'q2c', 'd2c' ]:
+				if fn.find(t) >= 0:
+					break
+			else:
+				files.append(fn)
+	else:
+		files = glob.glob('*%s.dat' % type)
+	return files
+
+#------------------------------------------------------------------------------
+if __name__ == '__main__':
+	files = parse_args(sys.argv)
+
+	if generate_all:
+		output_file = title_str = type = None
+		for t in types:
+			files = get_files(t)
+			if len(files) == 0:
+				continue
+			elif t != 'bnos':
+				generate_output(t, get_data(files))
+				continue
+
+			for file in files:
+				base = get_base(file)
+				title_str = 'Block Numbers Accessed: %s' % base
+				output_file = 'bnos_%s.png' % base
+				generate_output(t, get_data([file]))
+	elif len(files) < 1:
+		fatal('Need data files to process')
+	else:
+		generate_output(type, get_data(files))
+	sys.exit(0)
diff --git a/btt/devmap.c b/btt/devmap.c
new file mode 100644
index 0000000..9c0348b
--- /dev/null
+++ b/btt/devmap.c
@@ -0,0 +1,92 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include <stdio.h>
+#include "globals.h"
+
+struct devmap {
+	struct list_head head;
+	char device[32], devno[32];
+};
+
+LIST_HEAD(all_devmaps);
+
+static int dev_map_add(char *line)
+{
+	struct devmap *dmp;
+
+	if (strstr(line, "Device") != NULL)
+		return 1;
+
+	dmp = malloc(sizeof(struct devmap));
+	if (sscanf(line, "%s %s", dmp->device, dmp->devno) != 2) {
+		free(dmp);
+		return 1;
+	}
+
+	list_add_tail(&dmp->head, &all_devmaps);
+	return 0;
+}
+
+char *dev_map_find(__u32 device)
+{
+	char this[128];
+	struct list_head *p;
+
+	sprintf(this, "%u,%u", MAJOR(device), MINOR(device));
+	__list_for_each(p, &all_devmaps) {
+		struct devmap *dmp = list_entry(p, struct devmap, head);
+
+		if (!strcmp(this, dmp->devno))
+			return dmp->device;
+	}
+
+	return NULL;
+}
+
+int dev_map_read(char *fname)
+{
+	char line[256];
+	FILE *fp = my_fopen(fname, "r");
+
+	if (!fp) {
+		perror(fname);
+		return 1;
+	}
+
+	while (fscanf(fp, "%255[a-zA-Z0-9 :.,/_-]\n", line) == 1) {
+		if (dev_map_add(line))
+			break;
+	}
+
+	return 0;
+}
+
+void dev_map_exit(void)
+{
+	struct list_head *p, *q;
+
+	list_for_each_safe(p, q, &all_devmaps) {
+		struct devmap *dmp = list_entry(p, struct devmap, head);
+
+		list_del(&dmp->head);
+		free(dmp);
+	}
+}
diff --git a/btt/devs.c b/btt/devs.c
new file mode 100644
index 0000000..3578633
--- /dev/null
+++ b/btt/devs.c
@@ -0,0 +1,281 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include <stdio.h>
+#include "globals.h"
+
+#define N_DEV_HASH	128
+#define DEV_HASH(dev)	((MAJOR(dev) ^ MINOR(dev)) & (N_DEV_HASH - 1))
+struct list_head	dev_heads[N_DEV_HASH];
+
+static inline void *dip_rb_mkhds(void)
+{
+	size_t len = N_IOP_TYPES * sizeof(struct rb_root);
+	return memset(malloc(len), 0, len);
+}
+
+static void __destroy(struct rb_node *n)
+{
+	if (n) {
+		struct io *iop = rb_entry(n, struct io, rb_node);
+
+		__destroy(n->rb_left);
+		__destroy(n->rb_right);
+		io_release(iop);
+	}
+}
+
+static void __destroy_heads(struct rb_root *roots)
+{
+	int i;
+
+	for (i = 0; i < N_IOP_TYPES; i++)
+		__destroy(roots[i].rb_node);
+
+	free(roots);
+}
+
+void init_dev_heads(void)
+{
+	int i;
+	for (i = 0; i < N_DEV_HASH; i++)
+		INIT_LIST_HEAD(&dev_heads[i]);
+}
+
+struct d_info *__dip_find(__u32 device)
+{
+	struct d_info *dip;
+	struct list_head *p;
+
+	__list_for_each(p, &dev_heads[DEV_HASH(device)]) {
+		dip = list_entry(p, struct d_info, hash_head);
+		if (device == dip->device)
+			return dip;
+	}
+
+	return NULL;
+}
+
+void __dip_exit(struct d_info *dip)
+{
+	list_del(&dip->all_head);
+	__destroy_heads(dip->heads);
+	region_exit(&dip->regions);
+	seeki_free(dip->seek_handle);
+	seeki_free(dip->q2q_handle);
+	aqd_free(dip->aqd_handle);
+	plat_free(dip->q2d_plat_handle);
+	plat_free(dip->q2c_plat_handle);
+	plat_free(dip->d2c_plat_handle);
+	bno_dump_free(dip->bno_dump_handle);
+	unplug_hist_free(dip->up_hist_handle);
+	if (output_all_data)
+		q2d_free(dip->q2d_priv);
+	if (dip->pit_fp)
+		fclose(dip->pit_fp);
+	free(dip);
+}
+
+void dip_exit(void)
+{
+	struct list_head *p, *q;
+
+	list_for_each_safe(p, q, &all_devs) {
+		struct d_info *dip = list_entry(p, struct d_info, all_head);
+		__dip_exit(dip);
+	}
+}
+
+static inline char *mkhandle(char *str, __u32 device, char *post)
+{
+	int mjr = device >> MINORBITS;
+	int mnr = device & ((1 << MINORBITS) - 1);
+
+	sprintf(str, "%03d,%03d%s", mjr, mnr, post);
+	return str;
+}
+
+static inline FILE *open_pit(char *str)
+{
+	FILE *fp = my_fopen(str, "w");
+
+	if (fp == NULL)
+		perror(str);
+
+	return fp;
+}
+
+struct d_info *dip_alloc(__u32 device, struct io *iop)
+{
+	struct d_info *dip = __dip_find(device);
+
+	if (dip == NULL) {
+		char str[256];
+
+		dip = malloc(sizeof(struct d_info));
+		memset(dip, 0, sizeof(*dip));
+		dip->heads = dip_rb_mkhds();
+		region_init(&dip->regions);
+		dip->device = device;
+		dip->last_q = (__u64)-1;
+		dip->devmap = dev_map_find(device);
+		dip->bno_dump_handle = bno_dump_alloc(device);
+		dip->up_hist_handle = unplug_hist_alloc(device);
+		dip->seek_handle = seeki_alloc(mkhandle(str, device, "_d2d"));
+		dip->q2q_handle = seeki_alloc(mkhandle(str, device, "_q2q"));
+		dip->aqd_handle = aqd_alloc(mkhandle(str, device, "_aqd"));
+		dip->q2d_plat_handle =
+				plat_alloc(mkhandle(str, device, "_q2d_plat"));
+		dip->q2c_plat_handle =
+				plat_alloc(mkhandle(str, device, "_q2c_plat"));
+		dip->d2c_plat_handle =
+				plat_alloc(mkhandle(str, device, "_d2c_plat"));
+		latency_alloc(dip);
+		list_add_tail(&dip->hash_head, &dev_heads[DEV_HASH(device)]);
+		list_add_tail(&dip->all_head, &all_devs);
+		dip->start_time = BIT_TIME(iop->t.time);
+		dip->pre_culling = 1;
+		if (output_all_data)
+			dip->q2d_priv = q2d_alloc();
+		n_devs++;
+		if (per_io_trees)
+			dip->pit_fp = open_pit(mkhandle(per_io_trees,
+							  device, "_pit.dat"));
+	}
+
+	if (dip->pre_culling) {
+		if (iop->type == IOP_Q || iop->type == IOP_A)
+			dip->pre_culling = 0;
+		else
+			return NULL;
+	}
+
+	iop->linked = dip_rb_ins(dip, iop);
+	dip->end_time = BIT_TIME(iop->t.time);
+
+	return dip;
+}
+
+void iop_rem_dip(struct io *iop)
+{
+	if (iop->linked) {
+		dip_rb_rem(iop);
+		iop->linked = 0;
+	}
+}
+
+void dip_foreach(struct io *iop, enum iop_type type,
+		 void (*fnc)(struct io *iop, struct io *this), int rm_after)
+{
+	if (rm_after) {
+		LIST_HEAD(head);
+		struct io *this;
+		struct list_head *p, *q;
+
+		dip_rb_fe(iop->dip, type, iop, fnc, &head);
+		list_for_each_safe(p, q, &head) {
+			this = list_entry(p, struct io, f_head);
+			list_del(&this->f_head);
+			io_release(this);
+		}
+	} else
+		dip_rb_fe(iop->dip, type, iop, fnc, NULL);
+}
+
+void dip_foreach_list(struct io *iop, enum iop_type type, struct list_head *hd)
+{
+	dip_rb_fe(iop->dip, type, iop, NULL, hd);
+}
+
+struct io *dip_find_sec(struct d_info *dip, enum iop_type type, __u64 sec)
+{
+	return dip_rb_find_sec(dip, type, sec);
+}
+
+void dip_foreach_out(void (*func)(struct d_info *, void *), void *arg)
+{
+	if (devices == NULL) {
+		struct list_head *p;
+		__list_for_each(p, &all_devs)
+			func(list_entry(p, struct d_info, all_head), arg);
+	} else {
+		int i;
+		struct d_info *dip;
+		unsigned int mjr, mnr;
+		char *p = devices;
+
+		while (p && ((i = sscanf(p, "%u,%u", &mjr, &mnr)) == 2)) {
+			dip = __dip_find((__u32)((mjr << MINORBITS) | mnr));
+			func(dip, arg);
+			p = strchr(p, ';');
+			if (p) p++;
+		}
+	}
+}
+
+void dip_plug(__u32 dev, double cur_time)
+{
+	struct d_info *dip = __dip_find(dev);
+
+	if (dip && !dip->is_plugged) {
+		dip->is_plugged = 1;
+		dip->last_plug = cur_time;
+	}
+}
+
+static inline void unplug(struct d_info *dip, double cur_time)
+{
+	dip->is_plugged = 0;
+	dip->plugged_time += (cur_time - dip->last_plug);
+}
+
+void dip_unplug(__u32 dev, double cur_time, __u64 nios_up)
+{
+	struct d_info *dip = __dip_find(dev);
+
+	if (dip && dip->is_plugged) {
+		dip->nplugs++;
+		dip->nios_up += nios_up;
+		unplug(dip, cur_time);
+	}
+}
+
+void dip_unplug_tm(__u32 dev, double cur_time, __u64 nios_up)
+{
+	struct d_info *dip = __dip_find(dev);
+
+	if (dip && dip->is_plugged) {
+		dip->nios_upt += nios_up;
+		dip->nplugs_t++;
+		unplug(dip, cur_time);
+	}
+}
+
+void dip_cleanup(void)
+{
+	struct list_head *p, *q;
+
+	list_for_each_safe(p, q, &all_devs) {
+		struct d_info *dip = list_entry(p, struct d_info, all_head);
+
+		if (dip->n_qs == 0 && dip->n_ds == 0)
+			__dip_exit(dip);
+	}
+}
diff --git a/btt/dip_rb.c b/btt/dip_rb.c
new file mode 100644
index 0000000..867a97b
--- /dev/null
+++ b/btt/dip_rb.c
@@ -0,0 +1,86 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include <stdio.h>
+#include "globals.h"
+
+int rb_insert(struct rb_root *root, struct io *iop)
+{
+	struct io *__iop;
+	struct rb_node *parent = NULL;
+	struct rb_node **p = &root->rb_node;
+	__u64 __s, s = BIT_START(iop);
+
+	while (*p) {
+		parent = *p;
+		__iop = rb_entry(parent, struct io, rb_node);
+		__s = BIT_START(__iop);
+
+		if (s < __s)
+			p = &(*p)->rb_left;
+		else if (s > __s)
+			p = &(*p)->rb_right;
+		else
+			return 0;
+	}
+
+	rb_link_node(&iop->rb_node, parent, p);
+	rb_insert_color(&iop->rb_node, root);
+	return 1;
+}
+
+struct io *rb_find_sec(struct rb_root *root, __u64 sec)
+{
+	struct io *__iop;
+	struct rb_node *n = root->rb_node;
+
+	while (n) {
+		__iop = rb_entry(n, struct io, rb_node);
+		if (sec < BIT_START(__iop))
+			n = n->rb_left;
+		else if (sec >= BIT_END(__iop))
+			n = n->rb_right;
+		else
+			return __iop;
+	}
+
+	return NULL;
+}
+
+void rb_foreach(struct rb_node *n, struct io *iop,
+		      void (*fnc)(struct io *iop, struct io *this),
+		      struct list_head *head)
+{
+	if (n) {
+		struct io *this = rb_entry(n, struct io, rb_node);
+		__u64 iop_s = BIT_START(iop), iop_e = BIT_END(iop);
+		__u64 this_s = BIT_START(this), this_e = BIT_END(this);
+
+		if ((iop_s <= this_s) && (this_e <= iop_e)) {
+			if (fnc) fnc(iop, this);
+			if (head)
+				list_add_tail(&this->f_head, head);
+		}
+		if (iop_s < this_s)
+			rb_foreach(n->rb_left, iop, fnc, head);
+		if (this_e < iop_e)
+			rb_foreach(n->rb_right, iop, fnc, head);
+	}
+}
diff --git a/btt/doc/Makefile b/btt/doc/Makefile
new file mode 100644
index 0000000..a81b557
--- /dev/null
+++ b/btt/doc/Makefile
@@ -0,0 +1,15 @@
+DOCTMP	= btt.log btt.aux btt.dvi btt.toc btt.tex.bak
+
+all: btt.pdf
+
+btt.tex: activity.eps qhist.eps dhist.eps seek.eps
+	@touch btt.tex
+
+btt.pdf: btt.tex
+	@latex btt.tex
+	@latex btt.tex
+	@dvipdfm -p a4 btt
+	@rm -rf $(DOCTMP)
+
+clean:
+	-rm -f btt.pdf $(DOCTMP)
diff --git a/btt/doc/activity.eps b/btt/doc/activity.eps
new file mode 100644
index 0000000..034533f
--- /dev/null
+++ b/btt/doc/activity.eps
@@ -0,0 +1,923 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: 0 0 799 635
+%%LanguageLevel: 2
+%%Creator: Grace-5.1.20
+%%CreationDate: Thu Mar  1 14:50:45 2007
+%%DocumentData: Clean8Bit
+%%Orientation: Portrait
+%%Title: Untitled
+%%For: adb
+%%DocumentNeededResources: (atend)
+%%EndComments
+%%BeginProlog
+/m {moveto} def
+/l {lineto} def
+/s {stroke} def
+/n {newpath} def
+/c {closepath} def
+/RL {rlineto} def
+/SLW {setlinewidth} def
+/GS {gsave} def
+/GR {grestore} def
+/SC {setcolor} def
+/SGRY {setgray} def
+/SRGB {setrgbcolor} def
+/SD {setdash} def
+/SLC {setlinecap} def
+/SLJ {setlinejoin} def
+/SCS {setcolorspace} def
+/FFSF {findfont setfont} def
+/CC {concat} def
+/PXL {n m 0 0 RL s} def
+/Color0 {1.0000 1.0000 1.0000} def
+/Color1 {0.0000 0.0000 0.0000} def
+/Color2 {1.0000 0.0000 0.0000} def
+/Color3 {0.0000 1.0000 0.0000} def
+/Color4 {0.0000 0.0000 1.0000} def
+/Color5 {1.0000 1.0000 0.0000} def
+/Color6 {0.7373 0.5608 0.5608} def
+/Color7 {0.8627 0.8627 0.8627} def
+/Color8 {0.5804 0.0000 0.8275} def
+/Color9 {0.0000 1.0000 1.0000} def
+/Color10 {1.0000 0.0000 1.0000} def
+/Color11 {1.0000 0.6471 0.0000} def
+/Color12 {0.4471 0.1294 0.7373} def
+/Color13 {0.4039 0.0275 0.2824} def
+/Color14 {0.2510 0.8784 0.8157} def
+/Color15 {0.0000 0.5451 0.0000} def
+/PTRN {
+ /pat_bits exch def 
+ <<
+  /PaintType 2
+  /PatternType 1 /TilingType 1
+  /BBox[0 0 16 16]
+  /XStep 16 /YStep 16
+  /PaintProc {
+   pop
+   16 16 true [-1 0 0 -1 16 16] pat_bits imagemask
+  }
+ >>
+ [0.0016 0 0 0.0016 0 0]
+ makepattern
+} def
+/Pattern0 {<0000000000000000000000000000000000000000000000000000000000000000> PTRN} bind def
+/Pattern1 {<ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff> PTRN} bind def
+/Pattern2 {<eeeeffffbbbbffffeeeeffffbbbbffffeeeeffffbbbbffffeeeeffffbbbbffff> PTRN} bind def
+/Pattern3 {<eeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbb> PTRN} bind def
+/Pattern4 {<5555aaaa5555aaaa5555aaaa5555aaaa5555aaaa5555aaaa5555aaaa5555aaaa> PTRN} bind def
+/Pattern5 {<1111444411114444111144441111444411114444111144441111444411114444> PTRN} bind def
+/Pattern6 {<1111000044440000111100004444000011110000444400001111000044440000> PTRN} bind def
+/Pattern7 {<1010000000000000010100000000000010100000000000000101000000000000> PTRN} bind def
+/Pattern8 {<0000000000000000000000000000000000000000000000000000000000000000> PTRN} bind def
+/Pattern9 {<1e1e0f0f8787c3c3e1e1f0f078783c3c1e1e0f0f8787c3c3e1e1f0f078783c3c> PTRN} bind def
+/Pattern10 {<7878f0f0e1e1c3c387870f0f1e1e3c3c7878f0f0e1e1c3c387870f0f1e1e3c3c> PTRN} bind def
+/Pattern11 {<3333333333333333333333333333333333333333333333333333333333333333> PTRN} bind def
+/Pattern12 {<ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000> PTRN} bind def
+/Pattern13 {<8181424224241818181824244242818181814242242418181818242442428181> PTRN} bind def
+/Pattern14 {<8080404020201010080804040202010180804040202010100808040402020101> PTRN} bind def
+/Pattern15 {<0101020204040808101020204040808001010202040408081010202040408080> PTRN} bind def
+/Pattern16 {<2222222222222222222222222222222222222222222222222222222222222222> PTRN} bind def
+/Pattern17 {<0000ffff000000000000ffff000000000000ffff000000000000ffff00000000> PTRN} bind def
+/Pattern18 {<2222ffff222222222222ffff222222222222ffff222222222222ffff22222222> PTRN} bind def
+/Pattern19 {<ffffffff33333333ffffffff33333333ffffffff33333333ffffffff33333333> PTRN} bind def
+/Pattern20 {<0f0f0f0f0f0f0f0ff0f0f0f0f0f0f0f00f0f0f0f0f0f0f0ff0f0f0f0f0f0f0f0> PTRN} bind def
+/Pattern21 {<ff00ff00ff00ff00ff00ff00ff00ff0000ff00ff00ff00ff00ff00ff00ff00ff> PTRN} bind def
+/Pattern22 {<8001800180018001800180018001ffffffff8001800180018001800180018001> PTRN} bind def
+/Pattern23 {<c003c003c003c003c003c003ffffffffffffffffc003c003c003c003c003c003> PTRN} bind def
+/Pattern24 {<040404040404ffff404040404040ffff040404040404ffff404040404040ffff> PTRN} bind def
+/Pattern25 {<180018001800180018001800ffffffff001800180018001800180018ffffffff> PTRN} bind def
+/Pattern26 {<1111b8b87c7c3a3a1111a3a3c7c78b8b1111b8b87c7c3a3a1111a3a3c7c78b8b> PTRN} bind def
+/Pattern27 {<101010102828c7c70101010182827c7c101010102828c7c70101010182827c7c> PTRN} bind def
+/Pattern28 {<1c1c121211112121c1c12121111112121c1c121211112121c1c1212111111212> PTRN} bind def
+/Pattern29 {<3e3e414180808080e3e31414080808083e3e414180808080e3e3141408080808> PTRN} bind def
+/Pattern30 {<4848888884848383848488884848383848488888848483838484888848483838> PTRN} bind def
+/Pattern31 {<03030404080808080c0c12122121c0c003030404080808080c0c12122121c0c0> PTRN} bind def
+/ellipsedict 8 dict def
+ellipsedict /mtrx matrix put
+/EARC {
+ ellipsedict begin
+  /endangle exch def
+  /startangle exch def
+  /yrad exch def
+  /xrad exch def
+  /y exch def
+  /x exch def
+  /savematrix mtrx currentmatrix def
+  x y translate
+  xrad yrad scale
+  0 0 1 startangle endangle arc
+  savematrix setmatrix
+ end
+} def
+/TL {
+  /kcomp exch def
+  /linewidth exch def
+  /offset exch def
+  GS
+  0 offset rmoveto
+  linewidth SLW
+  dup stringwidth exch kcomp add exch RL s
+  GR
+} def
+/KINIT
+{
+ /kvector exch def
+ /kid 0 def
+} def
+/KPROC
+{
+ pop pop
+ kvector kid get
+ 0 rmoveto
+ /kid 1 kid add def
+} def
+/DefEncoding [
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /space
+ /exclam
+ /quotedbl
+ /numbersign
+ /dollar
+ /percent
+ /ampersand
+ /quoteright
+ /parenleft
+ /parenright
+ /asterisk
+ /plus
+ /comma
+ /hyphen
+ /period
+ /slash
+ /zero
+ /one
+ /two
+ /three
+ /four
+ /five
+ /six
+ /seven
+ /eight
+ /nine
+ /colon
+ /semicolon
+ /less
+ /equal
+ /greater
+ /question
+ /at
+ /A
+ /B
+ /C
+ /D
+ /E
+ /F
+ /G
+ /H
+ /I
+ /J
+ /K
+ /L
+ /M
+ /N
+ /O
+ /P
+ /Q
+ /R
+ /S
+ /T
+ /U
+ /V
+ /W
+ /X
+ /Y
+ /Z
+ /bracketleft
+ /backslash
+ /bracketright
+ /asciicircum
+ /underscore
+ /grave
+ /a
+ /b
+ /c
+ /d
+ /e
+ /f
+ /g
+ /h
+ /i
+ /j
+ /k
+ /l
+ /m
+ /n
+ /o
+ /p
+ /q
+ /r
+ /s
+ /t
+ /u
+ /v
+ /w
+ /x
+ /y
+ /z
+ /braceleft
+ /bar
+ /braceright
+ /asciitilde
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /space
+ /exclamdown
+ /cent
+ /sterling
+ /currency
+ /yen
+ /brokenbar
+ /section
+ /dieresis
+ /copyright
+ /ordfeminine
+ /guillemotleft
+ /logicalnot
+ /hyphen
+ /registered
+ /macron
+ /degree
+ /plusminus
+ /twosuperior
+ /threesuperior
+ /acute
+ /mu
+ /paragraph
+ /periodcentered
+ /cedilla
+ /onesuperior
+ /ordmasculine
+ /guillemotright
+ /onequarter
+ /onehalf
+ /threequarters
+ /questiondown
+ /Agrave
+ /Aacute
+ /Acircumflex
+ /Atilde
+ /Adieresis
+ /Aring
+ /AE
+ /Ccedilla
+ /Egrave
+ /Eacute
+ /Ecircumflex
+ /Edieresis
+ /Igrave
+ /Iacute
+ /Icircumflex
+ /Idieresis
+ /Eth
+ /Ntilde
+ /Ograve
+ /Oacute
+ /Ocircumflex
+ /Otilde
+ /Odieresis
+ /multiply
+ /Oslash
+ /Ugrave
+ /Uacute
+ /Ucircumflex
+ /Udieresis
+ /Yacute
+ /Thorn
+ /germandbls
+ /agrave
+ /aacute
+ /acircumflex
+ /atilde
+ /adieresis
+ /aring
+ /ae
+ /ccedilla
+ /egrave
+ /eacute
+ /ecircumflex
+ /edieresis
+ /igrave
+ /iacute
+ /icircumflex
+ /idieresis
+ /eth
+ /ntilde
+ /ograve
+ /oacute
+ /ocircumflex
+ /otilde
+ /odieresis
+ /divide
+ /oslash
+ /ugrave
+ /uacute
+ /ucircumflex
+ /udieresis
+ /yacute
+ /thorn
+ /ydieresis
+] def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+612.00 612.00 scale
+n
+0.0000 0.0000 m
+0.0000 1.0000 l
+1.2941 1.0000 l
+1.2941 0.0000 l
+c
+[/DeviceRGB] SCS
+Color0 SC
+fill
+[/DeviceRGB] SCS
+Color6 SC
+[0.0015 0.0045 ] 0 SD
+0.0015 SLW
+0 SLC
+0 SLJ
+n
+0.1667 0.1500 m
+0.1667 0.8500 l
+s
+n
+0.1833 0.1500 m
+0.1833 0.8500 l
+s
+n
+0.2000 0.1500 m
+0.2000 0.8500 l
+s
+n
+0.2167 0.1500 m
+0.2167 0.8500 l
+s
+n
+0.2333 0.1500 m
+0.2333 0.8500 l
+s
+n
+0.2667 0.1500 m
+0.2667 0.8500 l
+s
+n
+0.2833 0.1500 m
+0.2833 0.8500 l
+s
+n
+0.3000 0.1500 m
+0.3000 0.8500 l
+s
+n
+0.3167 0.1500 m
+0.3167 0.8500 l
+s
+n
+0.3333 0.1500 m
+0.3333 0.8500 l
+s
+n
+0.3667 0.1500 m
+0.3667 0.8500 l
+s
+n
+0.3833 0.1500 m
+0.3833 0.8500 l
+s
+n
+0.4000 0.1500 m
+0.4000 0.8500 l
+s
+n
+0.4167 0.1500 m
+0.4167 0.8500 l
+s
+n
+0.4333 0.1500 m
+0.4333 0.8500 l
+s
+n
+0.4667 0.1500 m
+0.4667 0.8500 l
+s
+n
+0.4833 0.1500 m
+0.4833 0.8500 l
+s
+n
+0.5000 0.1500 m
+0.5000 0.8500 l
+s
+n
+0.5167 0.1500 m
+0.5167 0.8500 l
+s
+n
+0.5333 0.1500 m
+0.5333 0.8500 l
+s
+n
+0.5667 0.1500 m
+0.5667 0.8500 l
+s
+n
+0.5833 0.1500 m
+0.5833 0.8500 l
+s
+n
+0.6000 0.1500 m
+0.6000 0.8500 l
+s
+n
+0.6167 0.1500 m
+0.6167 0.8500 l
+s
+n
+0.6333 0.1500 m
+0.6333 0.8500 l
+s
+n
+0.6667 0.1500 m
+0.6667 0.8500 l
+s
+n
+0.6833 0.1500 m
+0.6833 0.8500 l
+s
+n
+0.7000 0.1500 m
+0.7000 0.8500 l
+s
+n
+0.7167 0.1500 m
+0.7167 0.8500 l
+s
+n
+0.7333 0.1500 m
+0.7333 0.8500 l
+s
+n
+0.7667 0.1500 m
+0.7667 0.8500 l
+s
+n
+0.7833 0.1500 m
+0.7833 0.8500 l
+s
+n
+0.8000 0.1500 m
+0.8000 0.8500 l
+s
+n
+0.8167 0.1500 m
+0.8167 0.8500 l
+s
+n
+0.8333 0.1500 m
+0.8333 0.8500 l
+s
+n
+0.8667 0.1500 m
+0.8667 0.8500 l
+s
+n
+0.8833 0.1500 m
+0.8833 0.8500 l
+s
+n
+0.9000 0.1500 m
+0.9000 0.8500 l
+s
+n
+0.9167 0.1500 m
+0.9167 0.8500 l
+s
+n
+0.9333 0.1500 m
+0.9333 0.8500 l
+s
+n
+0.9667 0.1500 m
+0.9667 0.8500 l
+s
+n
+0.9833 0.1500 m
+0.9833 0.8500 l
+s
+n
+1.0000 0.1500 m
+1.0000 0.8500 l
+s
+n
+1.0167 0.1500 m
+1.0167 0.8500 l
+s
+n
+1.0333 0.1500 m
+1.0333 0.8500 l
+s
+n
+1.0667 0.1500 m
+1.0667 0.8500 l
+s
+n
+1.0833 0.1500 m
+1.0833 0.8500 l
+s
+n
+1.1000 0.1500 m
+1.1000 0.8500 l
+s
+n
+1.1167 0.1500 m
+1.1167 0.8500 l
+s
+n
+1.1333 0.1500 m
+1.1333 0.8500 l
+s
+[0.0075 0.0045 ] 0 SD
+0.0015 SLW
+n
+0.1500 0.1500 m
+0.1500 0.8500 l
+s
+n
+0.2500 0.1500 m
+0.2500 0.8500 l
+s
+n
+0.3500 0.1500 m
+0.3500 0.8500 l
+s
+n
+0.4500 0.1500 m
+0.4500 0.8500 l
+s
+n
+0.5500 0.1500 m
+0.5500 0.8500 l
+s
+n
+0.6500 0.1500 m
+0.6500 0.8500 l
+s
+n
+0.7500 0.1500 m
+0.7500 0.8500 l
+s
+n
+0.8500 0.1500 m
+0.8500 0.8500 l
+s
+n
+0.9500 0.1500 m
+0.9500 0.8500 l
+s
+n
+1.0500 0.1500 m
+1.0500 0.8500 l
+s
+n
+1.1500 0.1500 m
+1.1500 0.8500 l
+s
+[0.0015 0.0045 ] 0 SD
+0.0015 SLW
+n
+0.1500 0.1850 m
+1.1500 0.1850 l
+s
+n
+0.1500 0.5350 m
+1.1500 0.5350 l
+s
+[/DeviceRGB] SCS
+Color1 SC
+[] 0 SD
+0.0015 SLW
+n
+0.1500 0.1850 m
+0.1500 0.4650 l
+0.1624 0.4650 l
+0.1624 0.1850 l
+0.1832 0.1850 l
+0.1832 0.4650 l
+0.1832 0.4650 l
+0.1832 0.1850 l
+0.2105 0.1850 l
+0.2105 0.4650 l
+0.2323 0.4650 l
+0.2323 0.1850 l
+0.2801 0.1850 l
+0.2801 0.4650 l
+0.2808 0.4650 l
+0.2808 0.1850 l
+0.2917 0.1850 l
+0.2917 0.4650 l
+0.2917 0.4650 l
+0.2917 0.1850 l
+0.3313 0.1850 l
+0.3313 0.4650 l
+0.3456 0.4650 l
+0.3456 0.1850 l
+0.3912 0.1850 l
+0.3912 0.4650 l
+0.3912 0.4650 l
+0.3912 0.1850 l
+0.4073 0.1850 l
+0.4073 0.4650 l
+0.4083 0.4650 l
+0.4083 0.1850 l
+0.4248 0.1850 l
+0.4248 0.4650 l
+0.4329 0.4650 l
+0.4329 0.1850 l
+0.6819 0.1850 l
+0.6819 0.4650 l
+0.6873 0.4650 l
+0.6873 0.1850 l
+0.7791 0.1850 l
+0.7791 0.4650 l
+1.0873 0.4650 l
+1.0873 0.1850 l
+1.1122 0.1850 l
+1.1122 0.4650 l
+1.1139 0.4650 l
+1.1139 0.1850 l
+1.1496 0.1850 l
+1.1496 0.4650 l
+1.1496 0.4650 l
+1.1496 0.1850 l
+1.1501 0.1850 l
+s
+[/DeviceRGB] SCS
+Color2 SC
+n
+0.1507 0.5350 m
+0.1507 0.8150 l
+0.1629 0.8150 l
+0.1629 0.5350 l
+0.1836 0.5350 l
+0.1836 0.8150 l
+0.1836 0.8150 l
+0.1836 0.5350 l
+0.2105 0.5350 l
+0.2105 0.8150 l
+0.2323 0.8150 l
+0.2323 0.5350 l
+0.2803 0.5350 l
+0.2803 0.8150 l
+0.2811 0.8150 l
+0.2811 0.5350 l
+0.2921 0.5350 l
+0.2921 0.8150 l
+0.2921 0.8150 l
+0.2921 0.5350 l
+0.3316 0.5350 l
+0.3316 0.8150 l
+0.3457 0.8150 l
+0.3457 0.5350 l
+0.3912 0.5350 l
+0.3912 0.8150 l
+0.3912 0.8150 l
+0.3912 0.5350 l
+0.4075 0.5350 l
+0.4075 0.8150 l
+0.4086 0.8150 l
+0.4086 0.5350 l
+0.4250 0.5350 l
+0.4250 0.8150 l
+0.4333 0.8150 l
+0.4333 0.5350 l
+0.6828 0.5350 l
+0.6828 0.8150 l
+0.6877 0.8150 l
+0.6877 0.5350 l
+0.7799 0.5350 l
+0.7799 0.8150 l
+1.0879 0.8150 l
+1.0879 0.5350 l
+1.1127 0.5350 l
+1.1127 0.8150 l
+1.1143 0.8150 l
+1.1143 0.5350 l
+1.1499 0.5350 l
+1.1499 0.8150 l
+1.1499 0.8150 l
+1.1499 0.5350 l
+1.1501 0.5350 l
+s
+/Times-Roman findfont
+dup length dict begin
+ {1 index /FID ne {def} {pop pop} ifelse} forall
+ /Encoding DefEncoding def
+ currentdict
+end
+/Font32 exch definefont pop
+/Font32 FFSF
+[/DeviceRGB] SCS
+Color6 SC
+0.1447 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(0) show
+GR
+/Font32 FFSF
+0.2455 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(1) show
+GR
+/Font32 FFSF
+0.3447 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(2) show
+GR
+/Font32 FFSF
+0.4451 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(3) show
+GR
+/Font32 FFSF
+0.5447 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(4) show
+GR
+/Font32 FFSF
+0.6451 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(5) show
+GR
+/Font32 FFSF
+0.7447 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(6) show
+GR
+/Font32 FFSF
+0.8449 0.1251 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(7) show
+GR
+/Font32 FFSF
+0.9451 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(8) show
+GR
+/Font32 FFSF
+1.0449 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(9) show
+GR
+/Font32 FFSF
+1.1390 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(10) show
+GR
+/Font32 FFSF
+0.5453 0.0951 m
+GS
+[0.0280 0.0000 0.0000 0.0280 0 0] CC
+(Runtime \(seconds\)) show
+GR
+n
+0.1500 0.1500 m
+0.1500 0.8500 l
+1.1500 0.8500 l
+1.1500 0.1500 l
+0.1500 0.1500 l
+c
+s
+n
+0.8500 0.8000 m
+0.8500 0.7292 l
+1.0190 0.7292 l
+1.0190 0.8000 l
+c
+[/DeviceRGB] SCS
+Color0 SC
+fill
+[/DeviceRGB] SCS
+Color1 SC
+n
+0.8500 0.8000 m
+0.8500 0.7292 l
+1.0190 0.7292 l
+1.0190 0.8000 l
+0.8500 0.8000 l
+c
+s
+/Font32 FFSF
+0.9208 0.7743 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(Q activity) show
+GR
+n
+0.8608 0.7798 m
+0.9008 0.7798 l
+s
+/Font32 FFSF
+0.9208 0.7439 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(C activity) show
+GR
+[/DeviceRGB] SCS
+Color2 SC
+n
+0.8608 0.7494 m
+0.9008 0.7494 l
+s
+/Font32 FFSF
+[/DeviceRGB] SCS
+Color1 SC
+0.4073 0.9190 m
+GS
+[0.0420 0.0000 0.0000 0.0420 0 0] CC
+(BTT Sample Q & C Activity) show
+GR
+%%Trailer
+%%DocumentNeededResources: font Times-Roman
+%%EOF
diff --git a/btt/doc/bno_plot.eps b/btt/doc/bno_plot.eps
new file mode 100644
index 0000000..b18dd40
--- /dev/null
+++ b/btt/doc/bno_plot.eps
@@ -0,0 +1,7696 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.17 by Peter Kirchgessner
+%%Title: bno_plot.eps
+%%CreationDate: Tue Feb 12 08:40:40 2008
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 14 14 1213 1564
+%%EndComments
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+14.173228346456694 14.173228346456694 translate
+% Translate to begin of first scanline
+0 1549 translate
+1198 -1549 scale
+% Image geometry
+1198 1549 8
+% Transformation matrix
+[ 1198 0 0 1549 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 1198 string def
+/gstr 1198 string def
+/bstr 1198 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:       427315 ASCII Bytes
+colorimage
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*Ws6]jel0eNNdI$u7qX4:^rpKddo'QJXo^2\ZJaS*WJaS*WddI,8J,~>
+Ja.gOJa.gOs69Ral0A6JdHU]3qWe"Zrp'L`o'-2To]cDVJa.gOJa.gOdd$i4J,~>
+J`_OGJ`_OGs5j:]l/qsFdH1E/qW@_VroX4\o&]oPo]?,RJ`_OGJ`_OGdcUQ0J,~>
+JaS*WJaS*Ws6]jeqsFFar9aObp[/"]rpBadiU-[GoBlSYq<e=bmd:)SmJm7XmJm7[mK*CV!.jQh
+mXaeWmaLV(!.Y~>
+Ja.gOJa.gOs69Raqs".]r9=7^pZ__YrosI`iT^CCoBH;Uq<A%^lKSBKl2UhTl2UhWl2gtN!.jEd
+l@J5OlI5%u!.Y~>
+J`_OGJ`_OGs5j:]qrRkYr8mtZpZ;GUroO1\iT:+?oB$#Qq;qbZk2l[Cjo>DPjo>DSjoPPF!.j9`
+k(2ZGk0rJm!.Y~>
+JaS*WJaS*Ws6]jeqsFFar9aObp[/"]h<k7CoBlSYq<e=bmd:)SmJm7XmJm7\mJm7dmJm6<mXaeW
+mXafUmf*9;~>
+Ja.gOJa.gOs69Raqs".]r9=7^pZ__Yh<Ft?oBH;Uq<A%^lKSBKl2UhTl2UhXl2Uh`l2Ug8l@J5O
+l@J6MlMgj7~>
+J`_OGJ`_OGs5j:]qrRkYr8mtZpZ;GUh<"\;oB$#Qq;qbZk2l[Cjo>DPjo>DTjo>D\jo>C4k(2ZG
+k(2[Ek5PF3~>
+JaS*WJaS*Ws6fgcs6fgcs6fgcq<e4_qsOF`s6]shmJm7dmf!4dmK3IW!!*#drW)udr;cibrW)rc
+r;cZ]!s%cW!<2Bd!<)?b!<2Ec!<;Hh!:K7Tq<e4_rpBgfmdC&SrpKacrpKacrpKacrpKacrpKac
+rpKacJaS*WJaS*WrU0[cJ,~>
+Ja.gOJa.gOs6BO_s6BO_s6BO_q<@q[qs+.\s69[dl2Uh`lM^e`l2q%O!!*#`rW)u`r;ci^rW)r_
+r;cZY!s%WO!<26`!<)3^!<29_!<;<d!:&hLq<@q[rosOblK\?Krp'I_rp'I_rp'I_rp'I_rp'I_
+rp'I_Ja.gOJa.gOrTaC_J,~>
+J`_OGJ`_OGs5s7[s5s7[s5s7[q;qYWqr[kXs5jC`jo>D\k5GA\joYVG!!*#\rW)u\r;ciZrW)r[
+r;cZU!s%KG!<2*\!<)'Z!<2-[!<;0`!9WDDq;qYWroO7^k2uXCroX1[roX1[roX1[roX1[roX1[
+roX1[J`_OGJ`_OGrT=+[J,~>
+JaS*WJaS*Ws6]jerpBjgmd:)QmJm7]mJm7bmJm7dmK`g\!!)HT!:BjdmKN[Z!!)HT!;u6e!:K7T
+rU'XcrpBgfmK!7S!!)i_rW)ob!!*#d!!*#d!W_WgrpBmhmJuYTq!J+^rpBgfmK!7S!W_WgrpBgf
+mK!7S!W_WgrpBgfmK!7S!W_WgrpBgfmK!7S!!%T<JaS*WJaWO*rr@Q~>
+Ja.gOJa.gOs69RarosRclKSBIl2UhYl2Uh^l2Uh`l3ICT!!)<L!9sR`l377R!!)<L!;u*a!:&hL
+rTX@_rosObl2^hK!!)i[rW)o^!!*#`!!*#`!W_KcrosUdl2^)Lq!%hZrosObl2^hK!W_KcrosOb
+l2^hK!W_KcrosObl2^hK!W_KcrosObl2^hK!!%T8Ja.gOJa37"rr@Q~>
+J`_OGJ`_OGs5j:]roO:_k2l[Ajo>DUjo>DZjo>D\jp1tL!!)0D!9O:\jothJ!!)0D!;ts]!9WDD
+rT4([roO7^joGDC!!)iWrW)oZ!!*#\!!*#\!W_?_roO=`joFNDpuVPVroO7^joGDC!W_?_roO7^
+joGDC!W_?_roO7^joGDC!W_?_roO7^joGDC!!%T4J`_OGJ`csorr@Q~>
+JaS*WJaS*Ws6]jerpBjgmd:)QmJm7]mKEUYmJm7Tqu?cc!<2Be!:Kab!U]sbmem.cmJm7cmed%c
+mK!7S!!)i_!s%cW!<2Bd!<2Bd!<2Bf!:Bjbmf*:]med%cmK!1Q!!)rbquHcbrrE#crrE&dquHcb
+rr@W<JaS*WJaWI(rr@Q~>
+Ja.gOJa.gOs69RarosRclKSBIl2UhYl3.1Ql2UhLqu?c_!<26a!:'I^!U9[^lMU__l2Uh_lMLV_
+l2^hK!!)i[!s%WO!<26`!<26`!<26b!9sR^lMgkYlMLV_l2^bI!!)r^quHc^rrE#_rrE&`quHc^
+rr@W8Ja.gOJa30urr@Q~>
+J`_OGJ`_OGs5j:]roO:_k2l[Ajo>DUjokbIjo>DDqu?c[!<2*]!9X1Z!TjCZk5>;[jo>D[k552[
+joGDC!!)iW!s%KG!<2*\!<2*\!<2*^!9O:Zk5PGUk552[joG>A!!)rZquHcZrrE#[rrE&\quHcZ
+rr@W4J`_OGJ`cmmrr@Q~>
+JaS*WJaS*Ws6]jerpBjgmd:)QmJm7]mJm7dmK*CV!;u6b!<2Bf!:BjbmJm7bmJm7dmK3IWmK!4R
+!!)rb!!*#d!!)i_!s%cW!<2Bd!<2Bd!<2Bf!:BjbmK*CV!;Ps^!<2Bf!:BjbmJm7bmJm7_mJm7b
+mK3IWmK!(N!!%T<JaS*WJaWL)rr@Q~>
+Ja.gOJa.gOs69RarosRclKSBIl2UhYl2Uh`l2gtN!;u*^!<26b!9sR^l2Uh^l2Uh`l2q%Ol2^eJ
+!!)r^!!*#`!!)i[!s%WO!<26`!<26`!<26b!9sR^l2gtN!;PgZ!<26b!9sR^l2Uh^l2Uh[l2Uh^
+l2q%Ol2^YF!!%T8Ja.gOJa34!rr@Q~>
+J`_OGJ`_OGs5j:]roO:_k2l[Ajo>DUjo>D\joPPF!;tsZ!<2*^!9O:Zjo>DZjo>D\joYVGjoGAB
+!!)rZ!!*#\!!)iW!s%KG!<2*\!<2*\!<2*^!9O:ZjoPPF!;P[V!<2*^!9O:Zjo>DZjo>DWjo>DZ
+joYVGjoG5>!!%T4J`_OGJ`cpnrr@Q~>
+JaS*WJaS*Ws6]jerpC0pmd:)CmJu\C!:K7TqX+=`rpBgfmK!7S!W_WgrpBgfmK!7S!W_Wgr9asn
+md:&Tmd:)CmJuYTrpBgfmK!7S!!)i_!s%cW!<2Bd!<2Bd!<2Bf!:BjdmKEUY!:K7Tq<e4_rpBgf
+mK!7S!W_WgrpBgfmK!7S!W_WgrpBgfmK!7S!W_WgrpBgfmK!7S!!%T<JaS*WJaWO*rr@Q~>
+Ja.gOJa.gOs69RarosmllKSB7l2^,7!:&hLqW\%\rosObl2^hK!W_KcrosObl2^hK!W_Kcr9=[j
+lKS?LlKSB7l2^)LrosObl2^hK!!)i[!s%WO!<26`!<26`!<26b!9sR`l3.1Q!:&hLq<@q[rosOb
+l2^hK!W_KcrosObl2^hK!W_KcrosObl2^hK!W_KcrosObl2^hK!!%T8Ja.gOJa37"rr@Q~>
+J`_OGJ`_OGs5j:]roOUhk2l[+joFQ+!9WDDqW7bXroO7^joGDC!W_?_roO7^joGDC!W_?_r8nCf
+k2lXDk2l[+joFNDroO7^joGDC!!)iW!s%KG!<2*\!<2*\!<2*^!9O:\jokbI!9WDDq;qYWroO7^
+joGDC!W_?_roO7^joGDC!W_?_roO7^joGDC!W_?_roO7^joGDC!!%T4J`_OGJ`csorr@Q~>
+JaS*WJaS*Ws6fgcrU0[crU0[cq!S+]rpKacs6]jerpBgfmdC&Ss6]jeqsOIa!U]semf*:dmf!4c
+mem.^mem.bmf!4cmf!4cmf!4dmJm7dmJm7`mJm7dmK*CVmf!4cmf!4cmf!4cmf!4cmf!4cmf!4c
+mf!3;mXaeWmXag)mf*9;~>
+Ja.gOJa.gOs6BO_rTaC_rTaC_q!.hYrp'I_s69RarosOblK\?Ks69Raqs+1]!U9[alMgk`lM^e_
+lMU_ZlMU_^lM^e_lM^e_lM^e`l2Uh`l2Uh\l2Uh`l2gtNlM^e_lM^e_lM^e_lM^e_lM^e_lM^e_
+lM^d7l@J5Ol@J7!lMgj7~>
+J`_OGJ`_OGs5s7[rT=+[rT=+[pu_PUroX1[s5j:]roO7^k2uXCs5j:]qr[nY!TjC]k5PG\k5GA[
+k5>;Vk5>;Zk5GA[k5GA[k5GA\jo>D\jo>DXjo>D\joPPFk5GA[k5GA[k5GA[k5GA[k5GA[k5GA[
+k5G@3k(2ZGk(2[nk5PF3~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaU>A!!*#d!!)oarrE&d!!)$H!!)rb!!)ucrW)]\!!*#dquHcbrW)3N!!)TX
+!!(^?!<9e$rr@Q~>
+Ja.gOJa.gOJa.gOJa1&9!!*#`!!)o]rrE&`!!)$D!!)r^!!)u_rW)]X!!*#`quHc^rW)3J!!)TT
+!!(^;!!'aurr@Q~>
+J`_OGJ`_OGJ`_OGJ`ac1!!*#\!!)oYrrE&\!!)$@!!)rZ!!)u[rW)]T!!*#\quHcZrW)3F!!)TP
+!!(^7!!'aqrr@Q~>
+JaS*WJaS*WJaS*WJaU>A!!*#d!!)l`!!*#d!!)'I!W_WgrpBpimJu\C!<2Bd!;Z$a!:BjamK*CV
+!<2Bd!:&tP!;Z$_!;l0a!86c?s1[q$!.Y~>
+Ja.gOJa.gOJa.gOJa1&9!!*#`!!)l\!!*#`!!)'E!W_KcrosXel2^,7!<26`!;Ym]!9sR]l2gtN
+!<26`!:&hL!;Ym[!;l$]!86W;!5@au!.Y~>
+J`_OGJ`_OGJ`_OGJ`ac1!!*#\!!)lX!!*#\!!)'A!W_?_roO@ajoFQ+!<2*\!;YaY!9O:YjoPPF
+!<2*\!:&\H!;YaW!;kmY!86K7!5@Uq!.Y~>
+JaS*WJaS*WJaS*WJaU>A!!*#d!!)l`!!*#d!!)*J!!*#d!W_WgrpBgfmK!7S!!)l`!!*#d!!)uc
+!s%cW!<2Bd!:&tP!;Z$_!;l0a!86c?s1[q$!.Y~>
+Ja.gOJa.gOJa.gOJa1&9!!*#`!!)l\!!*#`!!)*F!!*#`!W_KcrosObl2^hK!!)l\!!*#`!!)u_
+!s%WO!<26`!:&hL!;Ym[!;l$]!86W;!5@au!.Y~>
+J`_OGJ`_OGJ`_OGJ`ac1!!*#\!!)lX!!*#\!!)*B!!*#\!W_?_roO7^joGDC!!)lX!!*#\!!)u[
+!s%KG!<2*\!:&\H!;YaW!;kmY!86K7!5@Uq!.Y~>
+JaS*WJaS*WJaS*WJaU2=r;cfa!!*#d#lsD]!:K7TmJm7dmf!4cmf!4^mJm7dmK*CV!<2Bf!:Bjd
+mJm7`mJm7dmJm7dmJm7`mJm7`mK3IW!!)f^r;clcrW)udr;b@8!<9e$rr@Q~>
+Ja.gOJa.gOJa.gOJa0o5r;cf]!!*#`#ls8U!:&hLl2Uh`lM^e_lM^eZl2Uh`l2gtN!<26b!9sR`
+l2Uh\l2Uh`l2Uh`l2Uh\l2Uh\l2q%O!!)fZr;cl_rW)u`r;b@4!!'aurr@Q~>
+J`_OGJ`_OGJ`_OGJ`aW-r;cfY!!*#\#ls,M!9WDDjo>D\k5GA[k5GAVjo>D\joPPF!<2*^!9O:\
+jo>DXjo>D\jo>D\jo>DXjo>DXjoYVG!!)fVr;cl[rW)u\r;b@0!!'aqrr@Q~>
+JaS*WJaS*WJaS*WJaU2=!!*#d!!*#d!!*#d!W_WgrpKdds6]pgmK!7S!W_WgrpBadqX+=`rpBgf
+mK!7S!W_ZVrW)c^!!*#d!W_ZVrW)la!!)i_rrE)e!!)l`!!*#d!!)rb!s%cW!7L98s1[q$!.Y~>
+Ja.gOJa.gOJa.gOJa0o5!!*#`!!*#`!!*#`!W_Kcrp'L`s69Xcl2^hK!W_KcrosI`qW\%\rosOb
+l2^hK!W_NNrW)cZ!!*#`!W_NNrW)l]!!)i[rrE)a!!)l\!!*#`!!)r^!s%WO!7L-4!5@au!.Y~>
+J`_OGJ`_OGJ`_OGJ`aW-!!*#\!!*#\!!*#\!W_?_roX4\s5j@_joGDC!W_?_roO1\qW7bXroO7^
+joGDC!W_BFrW)cV!!*#\!W_BFrW)lY!!)iWrrE)]!!)lX!!*#\!!)rZ!s%KG!7L!0!5@Uq!.Y~>
+JaS*WJaS*WJaS*WJaU2=!!*#d!!*#d!!*#drrE#c!!*#d!W_WgrpBmhmd:&Tq!J+^rpBgfmK!7S
+!W_WgrpBadqX+=`rpBadr9aObrpBadq!J+^p?hn\rpBgfmdC#Rs6]jefC&A4_s[O)J,~>
+Ja.gOJa.gOJa.gOJa0o5!!*#`!!*#`!!*#`rrE#_!!*#`!W_KcrosUdlKS?Lq!%hZrosObl2^hK
+!W_KcrosI`qW\%\rosI`r9=7^rosI`q!%hZp?DVXrosOblK\<Js69RafBW&0_s77%J,~>
+J`_OGJ`_OGJ`_OGJ`aW-!!*#\!!*#\!!*#\rrE#[!!*#\!W_?_roO=`k2lXDpuVPVroO7^joGDC
+!W_?_roO1\qW7bXroO1\r8mtZroO1\puVPVp>u>TroO7^k2uUBs5j:]fB2c,_rgt!J,~>
+JaS*WJaS*WJaS*WJaU2=!!*#d!!*#d!!*#d!W_WgrpBadrpBgfmK!7S!!)uc!!)i_!!*#d!W_Wg
+rpBgfmK!7S!!)l`!!*#d!!)rb!s%cW!;Gm]!;>g\!<2Bf!:BjdmK3IWmJt]'!<9e$rr@Q~>
+Ja.gOJa.gOJa.gOJa0o5!!*#`!!*#`!!*#`!W_KcrosI`rosObl2^hK!!)u_!!)i[!!*#`!W_Kc
+rosObl2^hK!!)l\!!*#`!!)r^!s%WO!;GaY!;>[X!<26b!9sR`l2q%Ol2]8t!!'aurr@Q~>
+J`_OGJ`_OGJ`_OGJ`aW-!!*#\!!*#\!!*#\!W_?_roO1\roO7^joGDC!!)u[!!)iW!!*#\!W_?_
+roO7^joGDC!!)lX!!*#\!!)rZ!s%KG!;GUU!;>OT!<2*^!9O:\joYVGjoEil!!'aqrr@Q~>
+JaS*WJaS*WJaS*WJaU2=!!*#d!!*#d!!*#d"p")Z!:K7TrpBgfmK!7S!W_WgrpBadq<e:amK!7S
+"T[rjmd:)SmJm7dmf*:dmKEUY!:K7TrpBgfmJutK!!)l`!!*#d!!*#d$io\qmd:&Tmd:)CmJtf*
+!<9e$rr@Q~>
+Ja.gOJa.gOJa.gOJa0o5!!*#`!!*#`!!*#`"p!rR!:&hLrosObl2^hK!W_KcrosI`q<A"]l2^hK
+"T[fflKSBKl2Uh`lMgk`l3.1Q!:&hLrosObl2^PC!!)l\!!*#`!!*#`$ioPmlKS?LlKSB7l2]B"
+!!'aurr@Q~>
+J`_OGJ`_OGJ`_OGJ`aW-!!*#\!!*#\!!*#\"p!fJ!9WDDroO7^joGDC!W_?_roO1\q;q_YjoGDC
+"T[Zbk2l[Cjo>D\k5PG\jokbI!9WDDroO7^joG,;!!)lX!!*#\!!*#\$ioDik2lXDk2l[+joEro
+!!'aqrr@Q~>
+JaS*WJaS*WJaS*WJaU2=r;cibrW)ud!!*#d!W_WgrpBgfmdC&SrpKacp[/"]r9aObrU0XbrU'Xc
+r9aObrU0Xbs6fdbqX+=`qsOF`rpK^bs6fme!U]semf*::mK!:$mf*9;~>
+Ja.gOJa.gOJa.gOJa0o5r;ci^rW)u`!!*#`!W_KcrosOblK\?Krp'I_pZ__Yr9=7^rTa@^rTX@_
+r9=7^rTa@^s6BL^qW\%\qs+.\rp'F^s6BUa!U9[alMgk6l2UgulMgj7~>
+J`_OGJ`_OGJ`_OGJ`aW-r;ciZrW)u\!!*#\!W_?_roO7^k2uXCroX1[pZ;GUr8mtZrT=(ZrT4([
+r8mtZrT=(Zs5s4ZqW7bXqr[kXroX.Zs5s=]!TjC]k5PG2jo>Cqk5PF3~>
+JaS*WJaS*WJaS*WJaSonquH-P!!)?QquHN[!!'k'!<9e$rr@Q~>
+Ja.gOJa.gOJa.gOJa/WfquH-L!!)?MquHNW!!'k#!!'aurr@Q~>
+J`_OGJ`_OGJ`_OGJ``?^quH-H!!)?IquHNS!!'jt!!'aqrr@Q~>
+JaS*WJaS*WJaS*WJaS*WRI1(T^@)"$J,~>
+Ja.gOJa.gOJa.gOJa.gORHabP^?Y^uJ,~>
+J`_OGJ`_OGJ`_OGJ`_OGRH=JL^?5FqJ,~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaU>A!!*#d!!)oarrE&d!!)$H!!)rb!!)ucrW)]\!!)rb!!)rb!!)6N!!)TX
+!!(mD!!)f^!!'q)rr@Q~>
+Ja.gOJa.gOJa.gOJa1&9!!*#`!!)o]rrE&`!!)$D!!)r^!!)u_rW)]X!!)r^!!)r^!!)6J!!)TT
+!!(m@!<;iZ!<9t%rr@Q~>
+J`_OGJ`_OGJ`_OGJ`ac1!!*#\!!)oYrrE&\!!)$@!!)rZ!!)u[rW)]T!!)rZ!!)rZ!!)6F!!)TP
+!!(m<!!)fV!!'q!rr@Q~>
+JaS*WJaS*WJaS*WJaU>A!!*#d!!)l`!!*#d!!)'I!W_WgrpBpimJu\C!<2Bd!;Z$a!:BjdmK*CV
+!<2Bf!:BjOmJm7_mJm7amJm7CmJm7`mJm7(mf*9;~>
+Ja.gOJa.gOJa.gOJa1&9!!*#`!!)l\!!*#`!!)'E!W_KcrosXel2^,7!<26`!;Ym]!9sR`l2gtN
+!<26b!9sRKl2Uh[l2Uh]l2Uh?l2^k\l2^k$lMgj7~>
+J`_OGJ`_OGJ`_OGJ`ac1!!*#\!!)lX!!*#\!!)'A!W_?_roO@ajoFQ+!<2*\!;YaY!9O:\joPPF
+!<2*^!9O:Gjo>DWjo>DYjo>D;jo>DXjo>Cuk5PF3~>
+JaS*WJaS*WJaS*WJaU>A!!*#d!!)l`!!*#d!!)*J!!*#d!W_WgrpBgfmK!7S!!)l`!!*#d!W_Wg
+rpBgfmK!7S!!)<P!!)i_!!)oa!!(gB!!)rb!!'k'rr@Q~>
+Ja.gOJa.gOJa.gOJa1&9!!*#`!!)l\!!*#`!!)*F!!*#`!W_KcrosObl2^hK!!)l\!!*#`!W_Kc
+rosObl2^hK!!)<L!!)i[!!)o]!!(g>!<;u^!<9n#rr@Q~>
+J`_OGJ`_OGJ`_OGJ`ac1!!*#\!!)lX!!*#\!!)*B!!*#\!W_?_roO7^joGDC!!)lX!!*#\!W_?_
+roO7^joGDC!!)<H!!)iW!!)oY!!(g:!!)rZ!!'jtrr@Q~>
+JaS*WJaS*WJaS*WJaU2=r;cfa!!*#d#lsD]!:K7TmJm7dmf!4cmf!4^mJm7dmK*CV!<2Bf!:Bjd
+mJm7`mJm7dmK*CV!<2Bf!:BjdmJm7`mK3IW!!)f^r;clcrW)udr;bF:!!*#d!!'h&rr@Q~>
+Ja.gOJa.gOJa.gOJa0o5r;cf]!!*#`#ls8U!:&hLl2Uh`lM^e_lM^eZl2Uh`l2gtN!<26b!9sR`
+l2Uh\l2Uh`l2gtN!<26b!9sR`l2Uh\l2q%O!!)fZr;cl_rW)u`r;bF6!<<&`!<9k"rr@Q~>
+J`_OGJ`_OGJ`_OGJ`aW-r;cfY!!*#\#ls,M!9WDDjo>D\k5GA[k5GAVjo>D\joPPF!<2*^!9O:\
+jo>DXjo>D\joPPF!<2*^!9O:\jo>DXjoYVG!!)fVr;cl[rW)u\r;bF2!!*#\!!'gsrr@Q~>
+JaS*WJaS*WJaS*WJaU2=!!*#d!!*#d!!*#d!W_WgrpKdds6]pgmK!7S!W_WgrpBadqX+=`rpBgf
+mK!7S!W_ZVrW)c^!!*#d!W_WgrpBgfmK!7S!!)l`rrE)e!!)l`!!*#d!!)rb!s%cW!7U?;!:Bj%
+mf*9;~>
+Ja.gOJa.gOJa.gOJa0o5!!*#`!!*#`!!*#`!W_Kcrp'L`s69Xcl2^hK!W_KcrosI`qW\%\rosOb
+l2^hK!W_NNrW)cZ!!*#`!W_KcrosObl2^hK!!)l\rrE)a!!)l\!!*#`!!)r^!s%WO!7U37s6BX!
+lMgj7~>
+J`_OGJ`_OGJ`_OGJ`aW-!!*#\!!*#\!!*#\!W_?_roX4\s5j@_joGDC!W_?_roO1\qW7bXroO7^
+joGDC!W_BFrW)cV!!*#\!W_?_roO7^joGDC!!)lXrrE)]!!)lX!!*#\!!)rZ!s%KG!7U'3!9O9r
+k5PF3~>
+JaS*WJaS*WJaS*WJaU2=!!*#d!!*#d!!*#drrE#c!!*#d!W_WgrpBmhmd:&Tq!J+^rpBgfmK!7S
+!W_WgrpBadqX+=`rpBgfmK!7S!W_WgrpBadqX+=`p?hn\rpBgfmdC#Rs6]jedd@)8^@)"$J,~>
+Ja.gOJa.gOJa.gOJa0o5!!*#`!!*#`!!*#`rrE#_!!*#`!W_KcrosUdlKS?Lq!%hZrosObl2^hK
+!W_KcrosI`qW\%\rosObl2^hK!W_KcrosI`qW\%\p?DVXrosOblK\<Js69Radcpi4^?Y^uJ,~>
+J`_OGJ`_OGJ`_OGJ`aW-!!*#\!!*#\!!*#\rrE#[!!*#\!W_?_roO=`k2lXDpuVPVroO7^joGDC
+!W_?_roO1\qW7bXroO7^joGDC!W_?_roO1\qW7bXp>u>TroO7^k2uUBs5j:]dcLN0^?5FqJ,~>
+JaS*WJaS*WJaS*WJaU2=!!*#d!!*#d!!*#d!W_WgrpBadrpBgfmK!7S!!)uc!!)i_!!*#d!W_Wg
+rpBgfmK!7S!!)l`!!*#d!W_WgrpBgfmK!7S!!)l`!!)`\!!*#d!W_WgrpBjgmd:)(mK*CV!5It%
+!.Y~>
+Ja.gOJa.gOJa.gOJa0o5!!*#`!!*#`!!*#`!W_KcrosI`rosObl2^hK!!)u_!!)i[!!*#`!W_Kc
+rosObl2^hK!!)l\!!*#`!W_KcrosObl2^hK!!)l\!!)`X!!*#`!W_KcrosRclKSAul2q"Ns1dk!
+!.Y~>
+J`_OGJ`_OGJ`_OGJ`aW-!!*#\!!*#\!!*#\!W_?_roO1\roO7^joGDC!!)u[!!)iW!!*#\!W_?_
+roO7^joGDC!!)lX!!*#\!W_?_roO7^joGDC!!)lX!!)`T!!*#\!W_?_roO:_k2lZmjoPPF!5I[r
+!.Y~>
+JaS*WJaS*WJaS*WJaU2=!!*#d!!*#d!!*#d"p")Z!:K7TrpBgfmK!7S!W_WgrpBadq<e:amK!7S
+"T[rjmd:)SmJm7dmf*:dmK*CV!<2Bf!:BjdmK*CV!;Z$_!;c*`!<2Bd!<2Bp!:BjTmJm7TmJu\C
+!8$W=!<2Bd!5S%&!.Y~>
+Ja.gOJa.gOJa.gOJa0o5!!*#`!!*#`!!*#`"p!rR!:&hLrosObl2^hK!W_KcrosI`q<A"]l2^hK
+"T[fflKSBKl2Uh`lMgk`l2gtN!<26b!9sR`l2gtN!;Ym[!;bs\!<26`!<26l!9sRLl2UhLl2^,7
+!8$K9s8M9`s1mq"!.Y~>
+J`_OGJ`_OGJ`_OGJ`aW-!!*#\!!*#\!!*#\"p!fJ!9WDDroO7^joGDC!W_?_roO1\q;q_YjoGDC
+"T[Zbk2l[Cjo>D\k5PG\joPPF!<2*^!9O:\joPPF!;YaW!;bgX!<2*\!<2*h!9O:Djo>DDjoFQ+
+!8$?5!<2*\!5Ras!.Y~>
+JaS*WJaS*WJaS*WJaU2=r;cibrW)ud!!*#d!W_WgrpBgfmdC&SrpKacp[/"]r9aObrU0XbrU'Xc
+r9aObr9aObr9aObq!J+^qsOF`rpK^bs6fme!U]semf*:=mJm7bmJm7'mf*9;~>
+Ja.gOJa.gOJa.gOJa0o5r;ci^rW)u`!!*#`!W_KcrosOblK\?Krp'I_pZ__Yr9=7^rTa@^rTX@_
+r9=7^r9=7^r9=7^q!%hZqs+.\rp'F^s6BUa!U9[alMgk9l2^k^l2^k#lMgj7~>
+J`_OGJ`_OGJ`_OGJ`aW-r;ciZrW)u\!!*#\!W_?_roO7^k2uXCroX1[pZ;GUr8mtZrT=(ZrT4([
+r8mtZr8mtZr8mtZpuVPVqr[kXroX.Zs5s=]!TjC]k5PG5jo>DZjo>Ctk5PF3~>
+JaS*WJaS*WJaS*WJaSonquH-P!!)?QquHN[!!("+!!)l`!!'n(rr@Q~>
+Ja.gOJa.gOJa.gOJa/WfquH-L!!)?MquHNW!!("'!<;o\!<9q$rr@Q~>
+J`_OGJ`_OGJ`_OGJ``?^quH-H!!)?IquHNS!!("#!!)lX!!'murr@Q~>
+JaS*WJaS*WJaS*WJaS*WT'cRYq!J+^_s[O)J,~>
+Ja.gOJa.gOJa.gOJa.gOT'?=Uq!%kZ_s77%J,~>
+J`_OGJ`_OGJ`_OGJ`_OGT&p"QpuVPV_rgt!J,~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaU>A!!*#d!!)oarrE&d!!)$H!!)rb!!)ucrW)]\!!)rb!!)rb!!)6N!!)TX
+!!(mD!!)uc!!)uc!!'q)rr@Q~>
+Ja.gOJa.gOJa.gOJa1&9!!*#`!!)o]rrE&`!!)$D!!)r^!!)u_rW)]X!!)r^!!)r^!!)6J!!)TT
+!!(m@!!)u_!!)u_!!'q%rr@Q~>
+J`_OGJ`_OGJ`_OGJ`ac1!!*#\!!)oYrrE&\!!)$@!!)rZ!!)u[rW)]T!!)rZ!!)rZ!!)6F!!)TP
+!!(m<!<<#[!<<#[!<9t!rr@Q~>
+JaS*WJaS*WJaS*WJaU>A!!*#d!!)l`!!*#d!!)'I!W_WgrpBpimJu\C!<2Bd!;Z$a!:BjdmK*CV
+!<2Bf!:BjOmJm7_mJm7amJm7CmJm7dmJm7dmJm7(mf*9;~>
+Ja.gOJa.gOJa.gOJa1&9!!*#`!!)l\!!*#`!!)'E!W_KcrosXel2^,7!<26`!;Ym]!9sR`l2gtN
+!<26b!9sRKl2Uh[l2Uh]l2Uh?l2Uh`l2Uh`l2Uh$lMgj7~>
+J`_OGJ`_OGJ`_OGJ`ac1!!*#\!!)lX!!*#\!!)'A!W_?_roO@ajoFQ+!<2*\!;YaY!9O:\joPPF
+!<2*^!9O:Gjo>DWjo>DYjo>D;joGG\joGG\joGFuk5PF3~>
+JaS*WJaS*WJaS*WJaU>A!!*#d!!)l`!!*#d!!)*J!!*#d!W_WgrpBgfmK!7S!!)l`!!*#d!W_Wg
+rpBgfmK!7S!!)<P!!)i_!!)oa!!(gB"p")Z!:K7T_=%='J,~>
+Ja.gOJa.gOJa.gOJa1&9!!*#`!!)l\!!*#`!!)*F!!*#`!W_KcrosObl2^hK!!)l\!!*#`!W_Kc
+rosObl2^hK!!)<L!!)i[!!)o]!!(g>"p!rR!:&hL_<V%#J,~>
+J`_OGJ`_OGJ`_OGJ`ac1!!*#\!!)lX!!*#\!!)*B!!*#\!W_?_roO7^joGDC!!)lX!!*#\!W_?_
+roO7^joGDC!!)<H!!)iW!!)oY!!(g:#63iJs5rJD_<1atJ,~>
+JaS*WJaS*WJaS*WJaU2=r;cfa!!*#d#lsD]!:K7TmJm7dmf!4cmf!4^mJm7dmK*CV!<2Bf!:Bjd
+mJm7`mJm7dmK*CV!<2Bf!:BjdmJm7`mJm7dmJm7_mem.cmf!4dmem.:mK<OX!:Bj&mf*9;~>
+Ja.gOJa.gOJa.gOJa0o5r;cf]!!*#`#ls8U!:&hLl2Uh`lM^e_lM^eZl2Uh`l2gtN!<26b!9sR`
+l2Uh\l2Uh`l2gtN!<26b!9sR`l2Uh\l2Uh`l2Uh[lMU__lM^e`lMU_6l3%+P!9sR"lMgj7~>
+J`_OGJ`_OGJ`_OGJ`aW-r;cfY!!*#\#ls,M!9WDDjo>D\k5GA[k5GAVjo>D\joPPF!<2*^!9O:\
+jo>DXjo>D\joPPF!<2*^!9O:\jo>DXjo>D\jo>DWk5>;[k5GA\k5>;2jok_Hs5s?sk5PF3~>
+JaS*WJaS*WJaS*WJaU2=!!*#d!!*#d!!*#d!W_WgrpKdds6]pgmK!7S!W_WgrpBadqX+=`rpBgf
+mK!7S!W_ZVrW)c^!!*#d!W_WgrpBgfmK!7S!!)l`!!*#d!!)l`!!*#d!!)rb!s%cW!7UB8!5It%
+!.Y~>
+Ja.gOJa.gOJa.gOJa0o5!!*#`!!*#`!!*#`!W_Kcrp'L`s69Xcl2^hK!W_KcrosI`qW\%\rosOb
+l2^hK!W_NNrW)cZ!!*#`!W_KcrosObl2^hK!!)l\!!*#`!!)l\!!*#`!!)r^!s%WO!7U64!5Ih!
+!.Y~>
+J`_OGJ`_OGJ`_OGJ`aW-!!*#\!!*#\!!*#\!W_?_roX4\s5j@_joGDC!W_?_roO1\qW7bXroO7^
+joGDC!W_BFrW)cV!!*#\!W_?_roO7^joGDC!!)lX!!*#\!!)lX!!*#\!!)rZ!s%KG!7U*0s1d^r
+!.Y~>
+JaS*WJaS*WJaS*WJaU2=!!*#d!!*#d!!*#drrE#c!!*#d!W_WgrpBmhmd:&Tq!J+^rpBgfmK!7S
+!W_WgrpBadqX+=`rpBgfmK!7S!W_WgrpBadqX+IdmJuYTqX+=`rpBgfmdC#Rs6]jefC&>4_s[O)
+J,~>
+Ja.gOJa.gOJa.gOJa0o5!!*#`!!*#`!!*#`rrE#_!!*#`!W_KcrosUdlKS?Lq!%hZrosObl2^hK
+!W_KcrosI`qW\%\rosObl2^hK!W_KcrosI`qW\1`l2^)LqW\%\rosOblK\<Js69RafBW&0_s77%
+J,~>
+J`_OGJ`_OGJ`_OGJ`aW-!!*#\!!*#\!!*#\rrE#[!!*#\!W_?_roO=`k2lXDpuVPVroO7^joGDC
+!W_?_roO1\qW7bXroO7^joGDC!W_?_roO1\qW7n\joFNDqW7bXroO7^k2uUBs5j:]fB2f,_rgt!
+J,~>
+JaS*WJaS*WJaS*WJaU2=!!*#d!!*#d!!*#d!W_WgrpBadrpBgfmK!7S!!)uc!!)i_!!*#d!W_Wg
+rpBgfmK!7S!!)l`!!*#d!W_WgrpBgfmK!7S!!)l`"9@iimK!+O!!*#d!W_WgrpBjgmd:)(mf!4$
+mf*9;~>
+Ja.gOJa.gOJa.gOJa0o5!!*#`!!*#`!!*#`!W_KcrosI`rosObl2^hK!!)u_!!)i[!!*#`!W_Kc
+rosObl2^hK!!)l\!!*#`!W_KcrosObl2^hK!!)l\"9@]el2^\G!!*#`!W_KcrosRclKSAulM^du
+lMgj7~>
+J`_OGJ`_OGJ`_OGJ`aW-!!*#\!!*#\!!*#\!W_?_roO1\roO7^joGDC!!)u[!!)iW!!*#\!W_?_
+roO7^joGDC!!)lX!!*#\!W_?_roO7^joGDC!!)lX"9@QajoG8?!!*#\!W_?_roO:_k2lZmk5PCq
+k5PF3~>
+JaS*WJaS*WJaS*WJaU2=!!*#d!!*#d!!*#d"p")Z!:K7TrpBgfmK!7S!W_WgrpBadq<e:amK!7S
+"T[rjmd:)SmJm7dmf*:dmK*CV!<2Bf!:BjdmK*CV!;Z$c!:BjT!<2Bd!<2Bd!<2Bp!:BjTmJm7T
+mJu\C!8$WA!:BjT!5S%&!.Y~>
+Ja.gOJa.gOJa.gOJa0o5!!*#`!!*#`!!*#`"p!rR!:&hLrosObl2^hK!W_KcrosI`q<A"]l2^hK
+"T[fflKSBKl2Uh`lMgk`l2gtN!<26b!9sR`l2gtN!;Ym_!9sRL!<26`!<26`!<26l!9sRLl2UhL
+l2^,7!8$K=!9sRL!5Rn"!.Y~>
+J`_OGJ`_OGJ`_OGJ`aW-!!*#\!!*#\!!*#\"p!fJ!9WDDroO7^joGDC!W_?_roO1\q;q_YjoGDC
+"T[Zbk2l[Cjo>D\k5PG\joPPF!<2*^!9O:\joPPF!;Ya[!9O:D!<2*\!<2*\!<2*h!9O:Djo>DD
+joFQ+!8$?9s5s@Ds1mds!.Y~>
+JaS*WJaS*WJaS*WJaU2=r;cibrW)ud!!*#d!W_WgrpBgfmdC&SrpKacp[/"]r9aObrU0XbrU'Xc
+r9aObr9aObr9aObp[/(_mK!7SrW)rcr;clcrr<)f!<2Ed!8$WC!:K7Tmd:(kmf*9;~>
+Ja.gOJa.gOJa.gOJa0o5r;ci^rW)u`!!*#`!W_KcrosOblK\?Krp'I_pZ__Yr9=7^rTa@^rTX@_
+r9=7^r9=7^r9=7^pZ_e[l2^hKrW)r_r;cl_rr<)b!<29`!8$K?!:&hLlKSAclMgj7~>
+J`_OGJ`_OGJ`_OGJ`aW-r;ciZrW)u\!!*#\!W_?_roO7^k2uXCroX1[pZ;GUr8mtZrT=(ZrT4([
+r8mtZr8mtZr8mtZpZ;MWjoGDCrW)r[r;cl[rr<)^!<2-\!8$?;s5rJDk2u][k5PF3~>
+JaS*WJaS*WJaS*WJaSonquH-P!!)?QquHN[!!("+!!*#d!!*#d!!'n(rr@Q~>
+Ja.gOJa.gOJa.gOJa/WfquH-L!!)?MquHNW!!("'!!*#`!!*#`!!'n$rr@Q~>
+J`_OGJ`_OGJ`_OGJ``?^quH-H!!)?IquHNS!!("#!<<&\!<<&\!<9purr@Q~>
+JaS*WJaS*WJaS*WJaS*WT'cRYrU'XcrU'Xc_s[O)J,~>
+Ja.gOJa.gOJa.gOJa.gOT'?:UrTX@_rTX@__s77%J,~>
+J`_OGJ`_OGJ`_OGJ`_OGT&p%QrT4+[rT4+[_rgt!J,~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaU>A!!*#d!!)oarrE&d!!)$H!!)rb!!)ucrW)]\!!*#dquHcbrW)3N!!)TX
+!!(mDpA`%urr@Q~>
+Ja.gOJa.gOJa.gOJa1&9!!*#`!!)o]rrE&`!!)$D!!)r^!!)u_rW)]X!!*#`quHc^rW)3J!!)TT
+!!(m@p&N"qrr@Q~>
+J`_OGJ`_OGJ`_OGJ`ac1!!*#\!!)oYrrE&\!!)$@!!)rZ!!)u[rW)]T!!*#\quHcZrW)3F!!)TP
+!!(m<pA`%mrr@Q~>
+JaS*WJaS*WJaS*WJaU>A!!*#d!!)l`!!*#d!!)'I!W_WgrpBpimJu\C!<2Bd!;Z$a!:BjamK*CV
+!<2Bd!:&tP!;Z$_!;l0a!8d,Ds7l!^s24:)!.Y~>
+Ja.gOJa.gOJa.gOJa1&9!!*#`!!)l\!!*#`!!)'E!W_KcrosXel2^,7!<26`!;Ym]!9sR]l2gtN
+!<26`!:&hL!;Ym[!;l$]!8cu@!;PgZ!5n+%!.Y~>
+J`_OGJ`_OGJ`_OGJ`ac1!!*#\!!)lX!!*#\!!)'A!W_?_roO@ajoFQ+!<2*\!;YaY!9O:YjoPPF
+!<2*\!:&\H!;YaW!;kmY!8ci<s7k^Vs24"!!.Y~>
+JaS*WJaS*WJaS*WJaU>A!!*#d!!)l`!!*#d!!)*J!!*#d!W_WgrpBgfmK!7S!!)l`!!*#d!!)uc
+!s%cW!<2Bd!:&tP!;Z$_!;l0a!8d,Ds7l!^s24:)!.Y~>
+Ja.gOJa.gOJa.gOJa1&9!!*#`!!)l\!!*#`!!)*F!!*#`!W_KcrosObl2^hK!!)l\!!*#`!!)u_
+!s%WO!<26`!:&hL!;Ym[!;l$]!8cu@!;PgZ!5n+%!.Y~>
+J`_OGJ`_OGJ`_OGJ`ac1!!*#\!!)lX!!*#\!!)*B!!*#\!W_?_roO7^joGDC!!)lX!!*#\!!)u[
+!s%KG!<2*\!:&\H!;YaW!;kmY!8ci<s7k^Vs24"!!.Y~>
+JaS*WJaS*WJaS*WJaU2=r;cfa!!*#d#lsD]!:K7TmJm7dmf!4cmf!4^mJm7dmK*CV!<2Bf!:Bjd
+mJm7`mJm7dmJm7dmJm7`mJm7`mJm7dmJm7_mem.cmf!4dmem.=mK!:^mK!:)mf*9;~>
+Ja.gOJa.gOJa.gOJa0o5r;cf]!!*#`#ls8U!:&hLl2Uh`lM^e_lM^eZl2Uh`l2gtN!<26b!9sR`
+l2Uh\l2Uh`l2Uh`l2Uh\l2Uh\l2Uh`l2Uh[lMU__lM^e`lMU_9l2UhZl2Uh%lMgj7~>
+J`_OGJ`_OGJ`_OGJ`aW-r;cfY!!*#\#ls,M!9WDDjo>D\k5GA[k5GAVjo>D\joPPF!<2*^!9O:\
+jo>DXjo>D\jo>D\jo>DXjo>DXjo>D\jo>DWk5>;[k5GA\k5>;5joGGVjoGG!k5PF3~>
+JaS*WJaS*WJaS*WJaU2=!!*#d!!*#d!!*#d!W_WgrpKdds6]pgmK!7S!W_WgrpBadqX+=`rpBgf
+mK!7S!W_ZVrW)c^!!*#d!W_ZVrW)la!!)i_!!*#d!!)l`!!*#d!!)rb!s%cW!8$W=s7l!^s24:)
+!.Y~>
+Ja.gOJa.gOJa.gOJa0o5!!*#`!!*#`!!*#`!W_Kcrp'L`s69Xcl2^hK!W_KcrosI`qW\%\rosOb
+l2^hK!W_NNrW)cZ!!*#`!W_NNrW)l]!!)i[!!*#`!!)l\!!*#`!!)r^!s%WO!8$K9!;PgZ!5n+%
+!.Y~>
+J`_OGJ`_OGJ`_OGJ`aW-!!*#\!!*#\!!*#\!W_?_roX4\s5j@_joGDC!W_?_roO1\qW7bXroO7^
+joGDC!W_BFrW)cV!!*#\!W_BFrW)lY!!)iW!!*#\!!)lX!!*#\!!)rZ!s%KG!8$?5s7k^Vs24"!
+!.Y~>
+JaS*WJaS*WJaS*WJaU2=!!*#d!!*#d!!*#drrE#c!!*#d!W_WgrpBmhmd:&Tq!J+^rpBgfmK!7S
+!W_WgrpBadqX+=`rpBadr9aObrpBadq!J7bmJuYTqX+=`rpBgfmdC#Rs6]jefBrY=rU'[crU'[c
+_s[O)J,~>
+Ja.gOJa.gOJa.gOJa0o5!!*#`!!*#`!!*#`rrE#_!!*#`!W_KcrosUdlKS?Lq!%hZrosObl2^hK
+!W_KcrosI`qW\%\rosI`r9=7^rosI`q!%t^l2^)LqW\%\rosOblK\<Js69RafBN>9rTX@_rTX@_
+_s77%J,~>
+J`_OGJ`_OGJ`_OGJ`aW-!!*#\!!*#\!!*#\rrE#[!!*#\!W_?_roO=`k2lXDpuVPVroO7^joGDC
+!W_?_roO1\qW7bXroO1\r8mtZroO1\puV\ZjoFNDqW7bXroO7^k2uUBs5j:]fB*)5rT4+[rT4+[
+_rgt!J,~>
+JaS*WJaS*WJaS*WJaU2=!!*#d!!*#d!!*#d!W_WgrpBadrpBgfmK!7S!!)uc!!)i_!!*#d!W_Wg
+rpBgfmK!7S!!)l`!!*#d!!)rb!s%cW!;Gma!:BjT!;c*`!<2Bf!:BjdmK3IWmJtl,!<;i^!<9t)
+rr@Q~>
+Ja.gOJa.gOJa.gOJa0o5!!*#`!!*#`!!*#`!W_KcrosI`rosObl2^hK!!)u_!!)i[!!*#`!W_Kc
+rosObl2^hK!!)l\!!*#`!!)r^!s%WO!;Ga]!9sRL!;bs\!<26b!9sR`l2q%Ol2]H$!!)fZ!!'q%
+rr@Q~>
+J`_OGJ`_OGJ`_OGJ`aW-!!*#\!!*#\!!*#\!W_?_roO1\roO7^joGDC!!)u[!!)iW!!*#\!W_?_
+roO7^joGDC!!)lX!!*#\!!)rZ!s%KG!;GUY!9O:D!;bgX!<2*^!9O:\joYVGjoF#q!<;iV!<9t!
+rr@Q~>
+JaS*WJaS*WJaS*WJaU2=!!*#d!!*#d!!*#d"p")Z!:K7TrpBgfmK!7S!W_WgrpBadq<e:amK!7S
+"T[rjmd:)SmJm7dmf*:dmKEUY!:K7TrpBgfmJutK"9@iimK!7S!!*#d!!*#d$io\qmd:&Tmd:)C
+mJtu/!<;i^!<9t)rr@Q~>
+Ja.gOJa.gOJa.gOJa0o5!!*#`!!*#`!!*#`"p!rR!:&hLrosObl2^hK!W_KcrosI`q<A"]l2^hK
+"T[fflKSBKl2Uh`lMgk`l3.1Q!:&hLrosObl2^PC"9@]el2^hK!!*#`!!*#`$ioPmlKS?LlKSB7
+l2]Q'!!)fZ!!'q%rr@Q~>
+J`_OGJ`_OGJ`_OGJ`aW-!!*#\!!*#\!!*#\"p!fJ!9WDDroO7^joGDC!W_?_roO1\q;q_YjoGDC
+"T[Zbk2l[Cjo>D\k5PG\jokbI!9WDDroO7^joG,;"9@QajoGDC!!*#\!!*#\$ioDik2lXDk2l[+
+joF,t!<;iV!<9t!rr@Q~>
+JaS*WJaS*WJaS*WJaU2=r;cibrW)ud!!*#d!W_WgrpBgfmdC&SrpKacp[/"]r9aObrU0XbrU'Xc
+r9aObrU0Xbs6fdbq<e:amK!7SrW)rcr;clcrr<)f!<2Ed!86c?s7l!^s24:)!.Y~>
+Ja.gOJa.gOJa.gOJa0o5r;ci^rW)u`!!*#`!W_KcrosOblK\?Krp'I_pZ__Yr9=7^rTa@^rTX@_
+r9=7^rTa@^s6BL^q<A"]l2^hKrW)r_r;cl_rr<)b!<29`!86W;!;PgZ!5n+%!.Y~>
+J`_OGJ`_OGJ`_OGJ`aW-r;ciZrW)u\!!*#\!W_?_roO7^k2uXCroX1[pZ;GUr8mtZrT=(ZrT4([
+r8mtZrT=(Zs5s4Zq;q_YjoGDCrW)r[r;cl[rr<)^!<2-\!86K7s7k^Vs24"!!.Y~>
+JaS*WJaS*WJaS*WJaSonquH-P!!)?QquHN[!!(%,!<;i^!<9t)rr@Q~>
+Ja.gOJa.gOJa.gOJa/WfquH-L!!)?MquHNW!!(%(!!)fZ!!'q%rr@Q~>
+J`_OGJ`_OGJ`_OGJ``?^quH-H!!)?IquHNS!!(%$!<;iV!<9t!rr@Q~>
+JaS*WJaS*WJaS*WJaS*WT'l=P_s[O)J,~>
+Ja.gOJa.gOJa.gOJa.gOT'H"L_s77%J,~>
+J`_OGJ`_OGJ`_OGJ`_OGT'#bH_rgt!J,~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+NpZlIrU0XbrU'Xcr9aObJaS*WJaS*WJaS*WJaS*Wg[>(AJ,~>
+Np6TErTa@^rTX@_r9=7^Ja.gOJa.gOJa.gOJa.gOgZne=J,~>
+Nog<ArT=(ZrT4([r8mtZJ`_OGJ`_OGJ`_OGJ`_OGgZJM9J,~>
+O7*#JrpBadrpBpimd:)C!<2Bf!:Bi<mXaeWmXaeWmXaeWmXaf]mf*9;~>
+O6Z`FrosI`rosXelKSB7!<26b!9sQ8l@J5Ol@J5Ol@J5Ol@J6UlMgj7~>
+O66HBroO1\roO@ak2l[+!<2*^!9O94k(2ZGk(2ZGk(2ZGk(2[Mk5PF3~>
+OR</MmK!7S!!*#d!W_WgrpBgfmK!7S!!%T<JaS*WJaS*WJaS*WJaV@^rr@Q~>
+OQllIl2^hK!!*#`!W_KcrosObl2^hK!!%T8Ja.gOJa.gOJa.gOJa2(Vrr@Q~>
+OQHTEjoGDC!!*#\!W_?_roO7^joGDC!!%T4J`_OGJ`_OGJ`_OGJ`beNrr@Q~>
+NpZlIqX+CbmK!7S!W_WgrpBadJaS*WJaS*WJaS*WJaS*Wh<t:CJ,~>
+Np6TEqW\+^l2^hK!W_KcrosI`Ja.gOJa.gOJa.gOJa.gOh<P"?J,~>
+Nog<AqW7hZjoGDC!W_?_roO1\J`_OGJ`_OGJ`_OGJ`_OGh<+_;J,~>
+NpZlIqsFOdmd:)SmK*CV!<2Bd!:]FQ!.jQhmXaeWmXaeWmXaeWme-#J!.Y~>
+Np6TEqs"7`lKSBKl2gtN!<26`!:]:M!.jEdl@J5Ol@J5Ol@J5OlLjHB!.Y~>
+Nog<AqrRt\k2l[CjoPPF!<2*\!:].I!.j9`k(2ZGk(2ZGk(2ZGk4Rm:!.Y~>
+NpZlIr9aObrpBadrpBgfmK!7S!!)QWq#H!6JaS*WJaS*WJaS*WJaW4!rr@Q~>
+Np6TEr9=7^rosI`rosObl2^hK!!)QSq#H!2Ja.gOJa.gOJa.gOJa2pnrr@Q~>
+Nog<Ar8mtZroO1\roO7^joGDC!!)QOq#H!.J`_OGJ`_OGJ`_OGJ`cXfrr@Q~>
+NpZlIrU'XcrU'XcrpBgfmK!7S!!)QWrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Np6TErTX@_rTX@_rosObl2^hK!!)QSrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+Nog<ArT4([rT4([roO7^joGDC!!)QOrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+NpZlIrpBadqsFLcmK!7S!W_WgnF$;VJaS*WJaS*WJaS*WJaS*Wn*^2UJ,~>
+Np6TErosI`qs"4_l2^hK!W_KcnEU#RJa.gOJa.gOJa.gOJa.gOn*9oQJ,~>
+Nog<AroO1\qrRq[joGDC!W_?_nE0`NJ`_OGJ`_OGJ`_OGJ`_OGn)jWMJ,~>
+ORE#H!:KabrpBadr9aObn*^2UJaS*WJaS*WJaS*WJaS*Wn*^2UJ,~>
+OQu`D!:'I^rosI`r9=7^n*9oQJa.gOJa.gOJa.gOJa.gOn*9oQJ,~>
+OQQH@!9X1ZroO1\r8mtZn)jWMJ`_OGJ`_OGJ`_OGJ`_OGn)jWMJ,~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WJaS*WJaS*WJaW!prr@Q~>
+Ja2Lbrr@W8Ja.gOJa.gOJa.gOJa2^hrr@Q~>
+J`c4Zrr@W4J`_OGJ`_OGJ`_OGJ`cF`rr@Q~>
+JaVdjrr@W<JaS*WMs^QFrpKdds6fjds6fmerpBadJaS*WJaS*Wq!S.^J,~>
+Ja2Lbrr@W8Ja.gOMs:9Brp'L`s6BR`s6BUarosI`Ja.gOJa.gOq!.kZJ,~>
+J`c4Zrr@W4J`_OGMrk$>roX7\s5s=\s5s@]roO4\J`_OGJ`_OGpu_SVJ,~>
+JaVdjrr@W<JaS*W[I+"prU'^emdC&Ss6fme"muBY!!)Hc!!)Hc!!)H8!<2Ed!<2Ed!.jQhmXaei
+mf*9;~>
+Ja2Lbrr@W8Ja.gO[H[_lrTXFalK\?Ks6BUa"mQ*Q!!)<_!!)<_!!)<4!<29`!<29`!.jEdl@J5a
+lMgj7~>
+J`c4Zrr@W4J`_OG[H7JhrT41]k2u[Cs5s@]"m5jIs8V6[rrD3[rrD30s8M0\s8M0\s+0<`k(2ZY
+k5PF3~>
+JaVdjrr@W<JaS*Wg$Sh?rpKddrpKacs6fgcs6fjd!:KL[!:I#j!:Kgds6fjds6fjdJaS*WJaT&r
+rr@Q~>
+Ja2Lbrr@W8Ja.gOg$/P;rp'L`rp'I_s6BO_s6BR`!:'4W!:$`f!:'O`s6BR`s6BR`Ja.gOJa/cj
+rr@Q~>
+J`c4Zrr@W4J`_OGg#`;7roX7\roX4[s5s:[s5s=\!9WtS!9UKb!9X:\s5s=\s5s=\J`_OGJ``Kb
+rr@Q~>
+JaVdjrr@W<JaSZg!!)uc!!)uc!!)ucrrE&drrE&drrE&dr;Zici;`lGM#[VF!!%T<JaS*WT'lUY
+J,~>
+Ja2Lbrr@W8Ja/B_!!)u_!!)u_!!)u_rrE&`rrE&`rrE&`r;Zi_i;`lCM#[VB!!%T8Ja.gOT'H=U
+J,~>
+J`c4Zrr@W4J``*W!<<#[!<<#[!<<#[s8W)\s8W)\s8W)\rVll[iVro?M>mY>s8RZ4J`_OGT'$%Q
+J,~>
+JaVdjrr@W<JaW=$rrE)eJH16$irB/K!!%T<JaS*WSaQLXJ,~>
+Ja2Lbrr@W8Ja3$qrrE)aJH16$irB/G!!%T8Ja.gOSa-4TJ,~>
+J`c4Zrr@W4J`cais8W,]JcC<$j8T2Cs8RZ4J`_OGS`]qPJ,~>
+JaVdjrr@W<QgOhRrU0[cs6fO[!:GC<JH4:%!q$$gJaS*WJaT&rrr@Q~>
+Ja2Lbrr@W8Qg+PNrTaC_s6B7W!:#+8JH4:%!pTacJa.gOJa/cjrr@Q~>
+J`c4Zrr@W4Qf\;JrT=.[s5s"S!9Sk4JcF@%!p9O_J`_OGJ``Kbrr@Q~>
+JaVdjrr@W<\*a4rrpKddrpKacs6fjds6fjds6fjd!:Kdc!:GC<JH3IcJaS*WJaT#qrr@Q~>
+Ja2Lbrr@W8\*<qnrp'L`rp'I_s6BR`s6BR`s6BR`!:'L_!:#+8JH3IcJa.gOJa/`irr@Q~>
+J`c4Zrr@W4\)m\jroX7\roX4[s5s=\s5s=\s5s=\!9X7[!9Sk4JcEOcJ`_OGJ``Harr@Q~>
+JaVdjrrA&H!!)uc!!)uc!!)ucrrE&dr;ZicqZ$Waqu?`br;clcr;ZicJH16$JH5KGJaS*WJaT&r
+rr@Q~>
+Ja2LbrrA&D!!)u_!!)u_!!)u_rrE&`r;Zi_qZ$W]qu?`^r;cl_r;Zi_JH16$JH5KGJa.gOJa/cj
+rr@Q~>
+J`c4ZrrA&@!<<#[!<<#[!<<#[s8W)\rVll[qu6ZYr;QcZrVuo[rVll[JcC<$JcGQGJ`_OGJ``Kb
+rr@Q~>
+JaVdjrrCpDrrE&drrE&drr<)f!<)<j!:BjTmJuYTrU'Xcq<e4_rU($nmJu\C!:BjT!:K:S!<2Ed
+!<2Ed!<;Kd!!)Hd!<;K`!!)G<!.b-$!6kLpmXaeWm[ikH!.Y~>
+Ja2LbrrCp@rrE&`rrE&`rr<)b!<)0f!9sRLl2^)LrTX@_q<@q[rTXajl2^,7!9sRL!:&kK!<29`
+!<29`!<;?`!!)<`!<;?\!!);8!.b-$!6kLpl@J5OlCR;@!.Y~>
+J`c4ZrrCp<s8W)\s8W)\s8N,^s8D'bs5s@Dk5XTDrT4+[q;q\WrT4Lfk5XT+s5s@Ds5rJCs8M0\
+s8M0\s8V6\rrD3\s8V6XrrD24s+13$s3:Rpk(2ZGk+:`8!.Y~>
+JaVdjrrD?PJH16$JH16$m/V_*JaS*WRdU1UJ,~>
+Ja2LbrrD?LJH16$JH16$m/V_&Ja.gORd0nQJ,~>
+J`c4ZrrD?HJcC<$JcC<$mJhb"J`_OGRcaVMJ,~>
+JaVdjrrDTWJH5';!:GC<JH16$q>c*7JaS*WS*p:VJ,~>
+Ja2LbrrDTSJH5';!:#+8JH16$q>c*3Ja.gOS*L"RJ,~>
+J`c4ZrrDTOJcG-;!9Sk4JcC<$qYu-/J`_OGS*'_NJ,~>
+JaVdjrrDf]JH16$JH16$h>i,pJaS*WSF6CWJ,~>
+Ja2LbrrDfYJH16$JH16$h>i,lJa.gOSEg+SJ,~>
+J`c4ZrrDfUJcC<$JcC<$hZ&/hJ`_OGSEBhOJ,~>
+JaVdjrrE&dJH16$JH2/>!:Kdc!:Kgd!:KU^!:K[`!:JJ>JaS*WJaT)srr@Q~>
+Ja2LbrrE&`JH16$JH2/>!:'L_!:'O`!:'=Z!:'C\!:&2:Ja.gOJa/fkrr@Q~>
+J`c4ZrrE&\JcC<$JcD5>!9X7[!9X:\!9X(V!9X.X!9Vr6J`_OGJ``Ncrr@Q~>
+JaVdjJH16$JH3mo!:JqK!q$'Vqu?`brW)udq>_#n!:BjT!:BjT!!)HT!:Kgd!:K[`!:Kdcs6]sh
+mJu\S!<2Bf!:K:M!!)Hc!!)Hc!!)Hd!<2Ed!4qRu!<)<c!<)<c!.jQhmXafqmf*9;~>
+Ja2LbJH16$JH3mo!:&YG!pTdNqu?`^rW)u`q>_#j!9sRL!9sRL!!)<L!:'O`!:'C\!:'L_s69[d
+l2^,K!<26b!:&kE!!)<_!!)<_!!)<`!<29`!4qFq!<)0_!<)0_!.jEdl@J6ilMgj7~>
+J`c4ZJcC<$JcEso!9WDC!p9OFr;QcZrr<#\qYq&fs5s@Ds5s@Ds8V6Ds5s=\!9X.X!9X7[s5jF`
+k5XTCs8M-^s5rJ=rrD3[rrD3[rrD3\s8M0\s17=ms8D'[s8D'[s+0<`k(2[ak5PF3~>
+JaVmmJH16$nGiRWJH4s8!:Kabs6fdbs6]pgmK!7SrW!#f!:Kgd!q$'Vqu?`bqu?lf!:BjTrW!&g
+!:BjcmK3IW!:Kgds6^0nmJu\C!:BjT!<2Ec!!)HO!!)Ha!!_ikmJm7T!<)?a!64I,!!)HL!!)Hc
+!!)Hc!!)Hd!<;Kd!<;Kd!<;Ke!<2Ed!<2Ed!<2Bd!.jQhm[<MC!.Y~>
+Ja2UeJH16$nGiRSJH4s8!:'I^s6BL^s69Xcl2^hKrW!#b!:'O`!pTdNqu?`^qu?lb!9sRLrW!&c
+!9sR_l2q%O!:'O`s69mjl2^,7!9sRL!<29_!!)<K!!)<]!!_]gl2UhL!<)3]!64=(!!)<H!!)<_
+!!)<_!!)<`!<;?`!<;?`!<;?a!<29`!<29`!<26`!.jEdlC$r;!.Y~>
+J`c=]JcC<$nc&UOJcG$8!9X4Zs5s7Zs5jC_k5YGCrr3&^s5s=\!p9OFr;QcZr;Qo^s5s@Drr3)_
+s5s@[jobYGs5s=\s5jXfk5XT+s5s@Ds8M0[rrD3GrrD3Yrs%Wck5YJDs8D*Ys2O4$rrD3DrrD3[
+rrD3[rrD3\s8V6\s8V6\s8V6]s8M0\s8M0\s8M-\s+0<`k*bB3!.Y~>
+JaVjlJH16$fDts>rW)ud#6=/lmJuYTmbRpDmdL2[mJm7T!:Kgd!:Kgd#jq]\!:K7TmdC#R"7?-h
+mf!1jmJuYTmd:)SmJm7dmK*CV!<2Bd!<2Bf!:BjdmK*CVmf!1emK!7S!!)uch>mQCo`4[Qrr<&e
+rW)ud!<DQe!;c-_!<2E[!!2KfrpKI[cgJIH!:Kgds6fmeJaS*WR-stSJ,~>
+Ja2RdJH16$fDts:rW)u`#6=#hl2^)LlJ;L@lL4cWl2UhL!:'O`!:'O`#jMET!:&hLlK\<J"6ojd
+lM^bfl2^)LlKSBKl2Uh`l2gtN!<26`!<26b!9sR`l2gtNlM^bal2^hK!!)u_h>mQ?o`4[Mrr<&a
+rW)u`!<DEa!;c![!<29W!!2?brp'1Wcg&1D!:'O`s6BUaJa.gOR-O\OJ,~>
+J`c:\JcC<$f`2!6rr<#\#QNrdk5XTDk2-+<k4&BSk5YJDs5s=\!9X:\#j20Ls5rJDk2uXB"6TX`
+k5PAbk5XTDk2u^CjoGG\joYSFs8M-\s8M-^s5s@\joYSFk5PA]k5YGC!<<#[hZ*T;p&F^Is8N)]
+rr<#\!WV<]s8(mWs8M0SrrM9^roWqScfVq@!9X:\s5s@]J`_OGR-+DKJ,~>
+JaVgkJH16$o`,']!:Kgd!:Kgds6faas6fme!q$'VrVurdrW!)h!:BgerpK^bs6fmes6f^`"7?-h
+meZtomJm7TmJm7T!:BjT!!)H_!!)Hd!!)Hd!!)Hd!!2KfrpBdemf!4dmJm7dmf*:emf!4dmf*:e
+mK3IW!!)uc!!)uc!!)uc!!)uc!!)uc#QX8mmd:)C!!*#dli7%RquH`a!<DQe!;l0a!<2Be!:Kgd
+o'QPZmdC&SrU'dgmJuYTr9a[fmJuYTrpBgfmdC&Ss6]jerpBadqsOF`i9gXHmd?tQ!q$$gJaS*W
+QgXkRJ,~>
+Ja2OcJH16$o`,'Y!:'O`!:'O`s6BI]s6BUa!pTdNrVur`rW!)d!9sOarp'F^s6BUas6BF\"6ojd
+lMCPkl2UhLl2UhL!9sRL!!)<[!!)<`!!)<`!!)<`!!2?brosLalM^e`l2Uh`lMgkalM^e`lMgka
+l2q%O!!)u_!!)u_!!)u_!!)u_!!)u_#QX,ilKSB7!!*#`li7%NquH`]!<DEa!;l$]!<26a!:'O`
+o'-8VlK\?KrTXLcl2^)Lr9=Cbl2^)LrosOblK\?Ks69RarosI`qs+.\i9C@DlKY8I!pTacJa.gO
+Qg4SNJ,~>
+J`c7[JcC<$p&>*Us5s=\!9X:\s5s4Ys5s@]!p9OFrr2u\rr3,`s5s@]roX1Zs5s@]s5s1X"6TX`
+k55/gk5YJDk5YJDs5s@Ds8V6WrrD3\rrD3\rrD3\rrM9^roO7]k5PD\joGG\k5YJ]k5PD\k5YJ]
+jobYGs8W&[!<<#[!<<#[!<<#[!<<#[#lj&ek2u^+s8W)\m/I(Jr;ZcY!WV<]s81pYs8M-]s5s=\
+o&^#Rk2u[CrT47_k5XTDr8n.^k5XTDroO:^k2u[Cs5j=]roO4\qr[nXi8t+@k2rTA!p9O_J`_OG
+Qfe;JJ,~>
+JaVdjJH1l6rpKdds6fmes6fmes6^$jmd:&Tmf!1lmJm7TmJm7Tmed%bme?e^mf*:emf*7lmJu\C
+!:K7TqsOIarpKdd!:KL[!:Kab"RZ6imdC&SrpKdd"muBYmJu\N!!)HR!<;He!<2Ed!<2Ed!<2Bd
+!:fIW!<)<c!<)?c!<2Bd!<2Bd!;c-_!!)Hb!<2Bn!:BjT!:BjT!:Bjdmf!1emK!4R!!)ucrr</h
+!:BjZme-Y\mK3IWmK!7S$39M^!:K7TmJu\CrW!)h!:BgerpBadrU'dgmJuYTna;P?JaS*WQL=bQ
+J,~>
+Ja2LbJH1l6rp'L`s6BUas6BUas69aflKS?LlM^bhl2UhLl2UhLlMLV^lM(AZlMgkalMghhl2^,7
+!:&hLqs+1]rp'L`!:'4W!:'I^"R5selK\?Krp'L`"mQ*Ql2^,F!!)<N!<;<a!<29`!<29`!<26`
+!:f=S!<)0_!<)3_!<26`!<26`!;c![!!)<^!<26j!9sRL!9sRL!9sR`lM^bal2^eJ!!)u_rr</d
+!9sRVlLk5Xl2q%Ol2^hK$39AV!:&hLl2^,7rW!)d!9sOarosI`rTXLcl2^)Ln`l8;Ja.gOQKnJM
+J,~>
+J`c4ZJcCr6roX7\s5s@]s5s@]s5jLbk2u^Dk5PAdk5YJDk5YJDk5>5Zk4nuVk5YJ]k5YGdk5XT+
+s5rJDqr[qYroX7\!9WtS!9X4Z"Qoaak2u[CroX7\"m5jIk5XT>rrD3Js8V3]s8M0\s8M0\s8M-\
+s7,4Os8D'[s8D*[s8M-\s8M-\s8(mWrrD3Zs8M-fs5s@Ds5s@Ds5s@\k5PA]k5YDB!<<#[s8N2`
+s5s@Rk4\iTjobYGk5YGC$NK8Ns5rJDk5XT+rr3,`s5s@]roO4\rT47_k5XTDn`H#7J`_OGQKJ2I
+J,~>
+JaVdjJH3"V!:KX_"RZ9XmK!7SrVurdq#CWe!:BjTmK!4R"9@iimdC&S&afYe!!)EemJm7T!!)Ee
+md:)Rmf*:emK`g\mJu\C!:BjdmKN[Z!:BjT!<2Bd!;5d[!!;Qgmed%bme-V]mK!(N!<DQ\!<2Be
+!:KgdqX4=_g[5%ArpBadrpKddrU'XcrU'Xcr9j.V#4;HkmJm7ToDnaU"p")Z!:K7Tna?AVs6]je
+rpBadrpBgfmK!7S!!*#d#lsD]!:K7Tmd:)MmKN[ZmJu\C!;,]A!.jQhmZm5?!.Y~>
+Ja2LbJH3"V!:'@["R6!Pl2^hKrVur`q#CWa!9sRLl2^eJ"9@]elK\?K&aBA]!!)9al2UhL!!)9a
+lKSBJlMgkal3ICTl2^,7!9sR`l377R!9sRL!<26`!;5XW!!;EclMLV^lLk2Yl2^YF!<DEX!<26a
+!:'O`qWe%[gZeb=rosI`rp'L`rTX@_rTX@_r9EkR#3l0gl2UhLoDnaQ"p!rR!:&hLn`p)Rs69Ra
+rosI`rosObl2^hK!!*#`#ls8U!:&hLlKSBEl377Rl2^,7!;,Q=!.jEdlBUZ7!.Y~>
+J`c4ZJcE(V!9X+W"QoaHk5YGCrr2u\q>UZ]s5s@Dk5YDB"TRWak2u[C&a',Us8V6]k5YJDs8V6]
+k2u^Bk5YJ]jp;"Lk5XT+s5s@\jp(kJs5s@Ds8M-\s7POSrrV?_k5>5Zk4\fUk5Y8>!WV<Ts8M-]
+s5s=\qW@eWgZAM9roO4\roX7\rT4+[rT4+[r9!VN#3Psck5YJDo`+dM#63iJs5rJDn`KiNs5j=]
+roO4\roO:^k5YGC!<<&\$30/Ms5rJDk2u^=jp(kJk5XT+s7GH9s+0<`k*>*/!.Y~>
+JaVmmJH5QI!:Kdc!q$'Vqu?fd!:Kgd!:Kgd$17cnmd:)C!:K:S!!)H^!<2Bk!:BjT!:BjTpAb3]
+rW)udo)SgY!<DQe!!)Hc!!)Hc!<)<c!8[&N!:K7T!:K7T!:K7TrU0[crpKddrU'Xcp[8%]s6^*l
+mJuYTmJm7dmed%bmf!4^mJm7cmK!=Ur;cib!!)uc"9@iimK!1Q"9@iimJu#0"p")Z!:K7Tna6P\
+md:)Cmem.cmJm7dmL'$_!:BjT!:BjT!:KgdrpBadqsFFarpBadrpBadoBlb^mJuYT!<)<c!<)<c
+!<)<c!<)?c!<2Bd!<2Bd!;c*`!<2Bd!<2Bd!;Go>!.jQhm[<MC!.Y~>
+Ja2UeJH5QI!:'L_!pTdNqu?f`!:'O`!:'O`$0hKjlKSB7!:&kK!!)<Z!<26g!9sRL!9sRLpAb3Y
+rW)u`o)SgU!<DEa!!)<_!!)<_!<)0_!8ZoJ!:&hL!:&hL!:&hLrTaC_rp'L`rTX@_pZhbYs69gh
+l2^)Ll2Uh`lMLV^lM^eZl2Uh_l2^nMr;ci^!!)u_"9@]el2^bI"9@]el2]T("p!rR!:&hLn`g8X
+lKSB7lMU__l2Uh`l3dUW!9sRL!9sRL!:'O`rosI`qs".]rosI`rosI`oBHJZl2^)L!<)0_!<)0_
+!<)0_!<)3_!<26`!<26`!;bs\!<26`!<26`!;Gc:!.jEdlC$r;!.Y~>
+J`c=]JcGWI!9X7[!p9OFr;Qi\s5s=\!9X:\$0M9fk2u^+s5rJCrrD3Vs8M-cs5s@Ds5s@Dp\t6U
+rr<#\oDejQ!WV<]rrD3[rrD3[s8D'[s4ufFs5rJDs5rJDs5rJDrT=.[roX7\rT4+[pZDMUs5jRd
+k5XTDk5YJ\k5>5Zk5PDVjoGG[joPMErVulZ!<<#["TRWak5YAA"TRWak5X2u#63iJs5rJDn`C#T
+k2u^+k5G>[joGG\jpV4Os5s@Ds5s@Ds5s=\roO4\qrRnYroO4\roO4\oB$5Vk5XTDs8D'[s8D'[
+s8D'[s8D*[s8M-\s8M-\s8(jXs8M-\s8M-\s7bZ6s+0<`k*bB3!.Y~>
+NpZlIr9aObr9aObr9aObn*\d-s6f^`!:KX_$gmupmJu\C!:BgemeHh_mf!1imJuYT!:KX_!:Kdc
+#jqZmmd:&TmdC&S!:Kdc!:Kgd!:Kgdr9jRbs6faa"RZ9X!:KabrpBadrpC'mmd:)C!:BgemeHk^
+mK!=UnGiRWo`4sY!!)uc!!*#d#lsD]!!)EemJm7?mL90amJuYTmd:)C!:K7Tl0\NOrU0[cs6fgc
+rpBdeme-YTmK<OX!:Bj`mKN[ZmJu\C!<2Bj!:K7Tmd:)0mK<OX!:BjWmJm7dmL'$_!:BjT!:BjT
+!:Kgds6fjds6]shmJu\S!<2Bd!<)<c!<)<c!<)<c!;5aa!:K7Tmd:)CmJm7cmJm7cmJm7bmJm7c
+mJm7cmJm7]mYq3tmXaenmf*9;~>
+Np6TEr9=7^r9=7^r9=7^n*8L)s6BF\!:'@[$gI]ll2^,7!9sOalM1D[lM^bel2^)L!:'@[!:'L_
+#jMBilKS?LlK\?K!:'L_!:'O`!:'O`r9F:^s6BI]"R6!P!:'I^rosI`rosdilKSB7!9sOalM1GZ
+l2^nMnGiRSo`4sU!!)u_!!*#`#ls8U!!)9al2Uh;l4!aYl2^)LlKSB7!:&hLl086KrTaC_s6BO_
+rosLalLk5Pl3%+P!9sR\l377Rl2^,7!<26f!:&hLlKSB(l3%+P!9sRSl2Uh`l3dUW!9sRL!9sRL
+!:'O`s6BR`s69[dl2^,K!<26`!<)0_!<)0_!<)0_!;5U]!:&hLlKSB;l2Uh_l2Uh_l2Uh^l2Uh_
+l2Uh_l2UhYlAYdpl@J5flMgj7~>
+Nog<Ar8mtZr8mtZr8mtZn)aTMf`2!6qYpQXq>Uibs8V6]k2u^+s8V6WrrD3\rrqQbk5YJDq>UHW
+rVm/cs8V6Ds8V6Drr2u\rVll[rr2u\rr;oYs8W,]qu6f]s5s@Dr;ZcY!<<&\$30/Ms5s@Ds8V6W
+s8M-]s5rkO!9WtSrT4+[rT4+[roOOek2u^Dk5XTDs4QNDs5rJDk5XT+s5s@Dk5X].!<<#[s8W,]
+rVulZ!WV<Us7bXYs5s@Ds8(j^s5rJDk2u^Cjp(kJk5XT+s4cZ=s5s@Ds7,4Os8M-gs5s@Ds5s@D
+s5s@Drr<#\rr<#\"97N`k5PD[joGG[joGG[joGG[joGGSjp(kJk5XT+s6f"Ls8D'[s8D'[s8;!Z
+s8D'[s8D'[s7bZ8s+0<`k*Y<2!.Y~>
+O7*#JrU'^emK!7S!W_WgrpBgfmJubEj8f/H!W_ZVrW!2k!!)EemJu\S!!)H_!!_ikmd:&TmeQn`
+mf!1dmem+cmem.cmf!1fmJu\S!!)H`!!)Hc!!)Hd!!)Hd!!)Hc!<;Ke!<)<c!<)<g!:BjTmdpJ[
+mK!4R!!)oap&OmUqZ-Zarr<&erVurdqu?ie!:Bj[mL'$_mJuYTmJu\C!!'4j!!*#d!!*#d#6=/l
+md:)Cmem.XmKN[ZmJu\C!;u6b!<2Bd!<2Bf!:BjdmJm7dmJm7Amf!4VmJm7cmf*:emem.bmJm7\
+mKN[ZmJu\C!9EPJ!<2Bd!<2Bd!6OYl!!2KfJaS*WQL=bQJ,~>
+O6Z`FrTXFal2^hK!W_KcrosObl2^>=j8f/D!W_NNrW!2g!!)9al2^,K!!)<[!!_]glKS?LlM:J\
+lM^b`lMU\_lMU__lM^bbl2^,K!!)<\!!)<_!!)<`!!)<`!!)<_!<;?a!<)0_!<)0c!9sRLlLY&W
+l2^eJ!!)o]p&OmQqZ-Z]rr<&arVur`qu?ia!9sRWl3dUWl2^)Ll2^,7!!'4f!!*#`!!*#`#6=#h
+lKSB7lMU_Tl377Rl2^,7!;u*^!<26`!<26b!9sR`l2Uh`l2Uh=lM^eRl2Uh_lMgkalMU_^l2UhX
+l377Rl2^,7!9EDF!<26`!<26`!6OMh!!2?bJa.gOQKnJMJ,~>
+O66HBrT4.]joGDC!W_?_roO7^joFo5jT#2@!rqEFrr35cs8V6]k5XTCrrD3Wrs%Wck2u^Dk5,)X
+k5PA\k5G;[k5G>[k5PA^k5XTCrrD3XrrD3[rrD3\rrD3\rrD3[s8V6]s8D'[s8D'_s5s@Dk4JZS
+k5YDB!<;rYpAapMqu?]Ys8N)]rr2u\r;Ql]s5s@SjpV4Ok5XTDk5XT+s8T:b!<<&\!<<&\#QNrd
+k2u^+k5G>Pjp(kJk5XT+s8;!Zs8M-\s8M-^s5s@\joGG\joGG9k5PDNjoGG[k5YJ]k5G>ZjoGGT
+jp(kJk5XT+s5`;Bs8M-\s8M-\s2jDdrrM9^J`_OGQKJ2IJ,~>
+OR</MmK!7S!!*#d!W_WgrpBgfmK!7S!!)TXkQ(GH!W_ZVr;clcrr<&enGij_!:K7T!:BjTr;Zic
+r;ZicrW)udo`,![p&OaQ"9@iimJuqJ!!*#d!!*#d!<DQe!:9.Q!;5a^!:BjTrW)udrrE)e!<DQb
+!!M]imd:)ImJm7cmJm7cmJm6lmJm7cmJm7cmJm7dmK*CVmf!1emJutK!!*#d!!*#d!!*#d!!)uc
+!!)uc!!)uc!!)uc!!(sFp&OUM!!*#d!!*#d!!)ZZ!!*#d!!*#d!!)0L!!)uc!!)uc!!(./OoPON
+!.jQhm[*AA!.Y~>
+OQllIl2^hK!!*#`!W_KcrosObl2^hK!!)TTkQ(GD!W_NNr;cl_rr<&anGij[!:&hL!9sRLr;Zi_
+r;Zi_rW)u`o`,!Wp&OaM"9@]el2^MB!!*#`!!*#`!<DEa!:9"M!;5UZ!9sRLrW)u`rrE)a!<DE^
+!!MQelKSBAl2Uh_l2Uh_l2Ughl2Uh_l2Uh_l2Uh`l2gtNlM^bal2^PC!!*#`!!*#`!!*#`!!)u_
+!!)u_!!)u_!!)u_!!(sBp&OUI!!*#`!!*#`!!)ZV!!*#`!!*#`!!)0H!!)u_!!)u_!!(.+OoPOJ
+!.jEdlBgf9!.Y~>
+OQHTEjoGDC!!*#\!W_?_roO7^joGDC!!)TPkl:J@!rqEFrVuo[s8N)]nc&mWs5rJDs5s@DrVll[
+rVll[rr<#\p&>$SpAadI"TRWak5Y,:!<<&\!<<&\!WV<]s6SnIs7PLVs5s@Drr<#\s8W,]!WV<Z
+rrhKak2u^9joGG[joGG[joGFdjoGG[joGG[joGG\joYSFk5PA]k5Y/;!<<&\!<<&\!<<&\!<<#[
+!<<#[!<<#[!<<#[!<;!>pAaXE!<<&\!<<&\!<;]R!<<&\!<<&\!<;3D!<<#[!<<#[!<:1'P5bRF
+s+0<`k*P61!.Y~>
+NpZlIrpBadrpBgfmK!7S!W_WgrpBadoBu&In*U/UrpBadrpKdd#4;KZ!:BjTqZ$WarW!5l!:K7T
+mJuYTqsFFarU'XcrU'^emdC&Sq!S+]n*^/Tp$Me[rU'XcrU'dgmJuYTmd:2XmJuYTp[/.amJm7T
+qZ$]c!:Kgds6^!imd:&TrpBadOmW2LrU'pkmJu\C!:K7Tq!J+^rU'XcrU'Xc`U<^*mHsrSrU'Xc
+rU'Xcp?hn\rU'XcrU'XcV='EF!U]r=mXaenmf*9;~>
+Np6TErosI`rosObl2^hK!W_KcrosI`oBPcEn*0lQrosI`rp'L`#3l3R!9sRLqZ$W]rW!5h!:&hL
+l2^)Lqs".]rTX@_rTXFalK\?Kq!.hYn*9lPp$)MWrTX@_rTXLcl2^)LmcjoTl2^)LpZ_k]l2UhL
+qZ$]_!:'O`s69^elKS?LrosI`Om2oHrTXXgl2^,7!:&hLq!%hZrTX@_rTX@_`TmF&mHOZOrTX@_
+rTX@_p?DVXrTX@_rTX@_V<X-B!U9Z9l@J5flMgj7~>
+Nog<AroO1\roO7^joGDC!W_?_roO1\oB,NAn)aWMroO4\roX7\#3PsJs5s@Dqu6ZYrr38ds5rJD
+k5XTDqrRnYrT4+[rT41]k2u[Cpu_SUn)jWLp#Z8SrT4+[rT47_k5XTDmcFZPk5XTDpZ;VYk5YJD
+qu6`[s5s=\s5jIak2u^DroO4\OlcZDrT4Cck5XT+s5rJDpuVSVrT4+[rT4+[`TI1"mH+EKrT4+[
+rT4+[p>uATrT4+[rT4+[V<3m>!TsE5k(2Z^k5PF3~>
+NpZlIrpBadrpBgfmK!7S!W_WgrpBado^;;N!U]sTmJm7cmJm7dmeZtameHhgmJuYT!:BjTmf!4S
+mK<OX!:Bj`mK<OX!:BjZme-YMmKN[ZmJu\C!:]C\!:K7Tmd:)NmKrs^!:BjT!:BjT!;u6f!:K7T
+!<2Bd!<)<c!0$=G!<2Bd!<2Bd!42(r!:BjT!7pQ<!<)<c!<)<c!3,Co!!)H@!!2KfJaS*WRI:(T
+J,~>
+Np6TErosI`rosObl2^hK!W_KcrosI`o]l#J!U9[Pl2Uh_l2Uh`lMCP]lM1Dcl2^)L!9sRLlM^eO
+l3%+P!9sR\l3%+P!9sRVlLk5Il377Rl2^,7!:]7X!:&hLlKSBFl3[OV!9sRL!9sRL!;u*b!:&hL
+!<26`!<)0_!0$1C!<26`!<26`!41qn!9sRL!7pE8!<)0_!<)0_!3,7k!!)<<!!2?bJa.gORHjeP
+J,~>
+Nog<AroO1\roO7^joGDC!W_?_roO1\o]H,P!!)fo!TsFLjoGG[joGG\k55/Yk5##_k5XTDs5s@D
+k5PDKjok_Hs5s@Xjok_Hs5s@Rk4\iEjp(kJk5XT+s7#.Ts5rJDk2u^>jpM.Ns5s@Ds5s@Ds8;!^
+s5rJDs8M-\s8D'[s,?(?s8M-\s8M-\s0Lhjs5s@Ds46<4s8D'[s8D'[s/G.grrD38rrM9^J`_OG
+RHFMLJ,~>
+NpZlIrpBadrpBgfmK!7S!W_WgrpBadna?2Q"muBY!:BjMme-V`mJu\C!;l3X!;#U_!:K7Tmd:)Q
+mKN[ZmJu\C!:fLV!:B1S!<2Bd!<2Bd!:oOX!<2Bd!<2Bd!;l0m!:BjTmJuYTmd:)C!<2Bd!<)<c
+!<)<c!/^+D!<)<c!<)<c!4D5!!:K7Tmd:)+mJm7dmJm7dmJm6_m`YY3mJunI!!*#drrE&drrE&d
+rrE&drVurdrVurdr;clcrVurdr;clcrr@W<JaSonrr@Q~>
+Np6TErosI`rosObl2^hK!W_KcrosI`n`ooM"mQ*Q!9sRIlLk2\l2^,7!;l'T!;#I[!:&hLlKSBI
+l377Rl2^,7!:f@R!:B%O!<26`!<26`!:oCT!<26`!<26`!;l$i!9sRLl2^)LlKSB7!<26`!<)0_
+!<)0_!/]t@!<)0_!<)0_!4D(r!:&hLlKSB#l2Uh`l2Uh`l2Ug[lHB5/l2^JA!!*#`rrE&`rrE&`
+rrE&`rVur`rVur`r;cl_rVur`r;cl_rr@W8Ja/Wfrr@Q~>
+Nog<AroO1\roO7^joGDC!W_?_roO1\n`C8\rrE'!rrE)]s5s@Ds6&P<rrhKak2u^@k4\iHjp(kJ
+k5XT+s8;!`s5rJDk2u^6k5PDJjoGG\joGG\joGGPjoGG\joGG\joGGYjp_:Ps5rJDk5XT+s5s@\
+joGG[joGG[joGF<joGG[joGG[joGFhjp(kJk5XT+s46<4s8M-\s8M-\s.nf$rrM9^o]?/RroX7\
+roX7\roX7\roX4[!9X:\!9X7[s5s=\!9X7[s5s@]J`_OGR-+DKJ,~>
+NpZlIrpBadrpBgfmK!7S!W_WgrpBadna?AV$gmupmJuYT!:BjT!9ESI!!2KfrpBadrpBadq!S+]
+nEp8VrpBadrpBadrpBadrpBadrpBadoBl_]mJuYTn*U/UrU'XcrU'Xco^2\ZrU'XcrU'XcJaNL<
+rU'XcrU'Xco'QJXrU'XcrU'Xc\F'=srpBadrpBadf'W_Bmd:)CmJs'Nd/_bc$io\qmJuYTmJu\C
+!!*#d!!%T<JaS]hrr@Q~>
+Np6TErosI`rosObl2^hK!W_KcrosI`n`p)R$gI]ll2^)L!9sRL!9EGE!!2?brosI`rosI`q!.hY
+nEKuRrosI`rosI`rosI`rosI`rosI`oBHGYl2^)Ln*0lQrTX@_rTX@_o]cDVrTX@_rTX@_Ja*48
+rTX@_rTX@_o'-2TrTX@_rTX@_\EX%orosI`rosI`f'3G>lKSB7l2[XFd/_b_$ioPml2^)Ll2^,7
+!!*#`!!%T8Ja/E`rr@Q~>
+Nog<AroO1\roO7^joGDC!W_?_roO1\n`C>]!<;3]s5s@Ds8V6]k5XN)rr3#]s8M-\s8M-\s7kaU
+s7#.Ns8M-\s8M-\s8M-\s8M-\s8M-\s7>@Us5s@Ds6o(Ms8D'[s8D'[s7GFRs8D'[s8D'[s+0;4
+s8D'[s8D'[s75:Ps8D'[s8D'[s1%1ks8M-\s8M-\s46<:s5rJDk2u]>k0a4[jp_:Ps5s@Ds5s@D
+k5YJ\joGF4k(2ZXk5PF3~>
+NpZlIrU'^emK!7S!W_WgrpBgfmJubErrC^>"9@iimK!4R!!)uc!!)l`"9@iimJuhG!!)uc!!)uc
+!W_WgrU'XcrU'Xcp$N"amd:)CmJqh+bjGH2rpBadrpBadnEp8VrpBadrpBad\F'=srU'XcrU'Xc
+o'QJXrU'XcrU'XcnEpDZmJuYTV!d1A`:!U)rU'XcrU'XcJaS*WO7*#JJ,~>
+Np6TErTXFal2^hK!W_KcrosObl2^>=rrC^:"9@]el2^eJ!!)u_!!)l\"9@]el2^D?!!)u_!!)u_
+!W_KcrTX@_rTX@_p$)_]lKSB7l2ZD#bj#0.rosI`rosI`nEKuRrosI`rosI`\EX%orTX@_rTX@_
+o'-2TrTX@_rTX@_nEL,Vl2^)LV!?n=`9R=%rTX@_rTX@_Ja.gOO6Z`FJ,~>
+Nog<ArT4.]joGDC!W_?_roO7^joFo5rrC^6"TRWak5YDB!<<#[!<;oX"TRWak5Y#7!<<#[!<<#[
+!rqE_rT4+[rT4+[p#ZJYk2u^+k5U"pbiSp*roO4\roO4\nE'`NroO4\roO4\\E3ekrT4+[rT4+[
+o&]rPrT4+[rT4+[nE'lRk5XTDUupY9`9.(!rT4+[rT4+[J`_OGO66HBJ,~>
+ORE#HrpBadr9aObr9aObn*^2Ug$T%Emd:)CmJuhG"p")Z!:K7TdI$u7rpBadrpBadJaUbM"p")Z
+!:K7Tmd:8Zmd:)CmJrdF!!*#d!!*#d!!)HTrW&b^o)Q2dp&K[3JaSB_rr@Q~>
+OQu`DrosI`r9=7^r9=7^n*9oQg$/bAlKSB7l2^D?"p!rR!:&hLdHU]3rosI`rosI`Ja1JE"p!rR
+!:&hLmcjuVlKSB7l2[@>!!*#`!!*#`!!)HPrW&bZo)Q2`p&K[/Ja/*Wrr@Q~>
+OQQH@roO1\r8mtZr8mtZn)jWMg#`M=k2u^+k5Y#7#63iJs5rJDdH1H/roO4\roO4\J`b2=#63iJ
+s5rJDmcF`Rk2u^+k5Ut6!<<&\!<<&\!<;KLrr8eVoDc5\pA]^+J`_gOrr@Q~>
+JaVdjrrCd@!!*#d!!*#d!!)ZZ!!*#d!!*#d!!(L9!!)uc!!)uc!!(O:!!)uc!!)uc!!)WY!!)uc
+!!)uc!!&SX"9@iimJuVA"9@iimJr^D"p")Z!:K7Tna?)NWUB`cs6fjds6fjdYO;AiJaS*WL$ns@
+J,~>
+Ja2LbrrCd<!!*#`!!*#`!!)ZV!!*#`!!*#`!!(L5!!)u_!!)u_!!(O6!!)u_!!)u_!!)WU!!)u_
+!!)u_!!&ST"9@]el2^29"9@]el2[:<"p!rR!:&hLn`ofJWTsH_s6BR`s6BR`YNl)eJa.gOL$J[<
+J,~>
+J`c4ZrrCd8!<<&\!<<&\!<;]R!<<&\!<<&\!<:O1!<<#[!<<#[!<:R2!<<#[!<<#[!<;ZQ!<<#[
+!<<#[!<8VP"TRWak5Xf1"TRWak5Un4#63iJs5rJDn`KQFWTO3[s5s=\s5s=\YNGiaJ`_OGL$&C8
+J,~>
+JaVdjrrCgA!!)uc!!)uc!!)`\!!)uc!!)uc!!&MV!!*#d!!*#d!!)QW!!*#d!!*#d!!&MVrW)6O
+rW&>R"9@iimJuVArW%N;a6j'1mJuYTJaS*WL@5'AJ,~>
+Ja2LbrrCg=!!)u_!!)u_!!)`X!!)u_!!)u_!!&MR!!*#`!!*#`!!)QS!!*#`!!*#`!!&MRrW)6K
+rW&>N"9@]el2^29rW%N7a6Ed-l2^)LJa.gOL?ed=J,~>
+J`c4ZrrCg9!<<#[!<<#[!<;cT!<<#[!<<#[!<8PN!<<&\!<<&\!<;TO!<<&\!<<&\!<8PNrr;9G
+rr8AJ"TRWak5Xf1rr7Q3a6!O)k5XTDJ`_OGL?AL9J,~>
+JaVdjrr@W<e*[D?md:)CmJu_D"p")Z!:K7TT'l:Po'Z2OS*p7Um-XuVmJuYTJaUYJ"p")Z!:K7T
+JaS*WL[P0BJ,~>
+Ja2Lbrr@W8e*7,;lKSB7l2^;<"p!rR!:&hLT'H"Lo'5oKS*KtQm-4]Rl2^)LJa1AB"p!rR!:&hL
+Ja.gOL[+m>J,~>
+J`c4Zrr@W4e)gl7k2u^+k5Xo4#63iJs5rJDT'#bHo&fZGS*'_Mm,eHNk5XTDJ`b):#63iJs5rJD
+J`_OGLZ\U:J,~>
+JaVdjrr@W<dd@5<mJuYTmHt)WmJuYTRI:%SlL+WOS*otMna6S]md:)CmJqh+bO,?1rpBadrpBad
+JaS*WM!k9CJ,~>
+Ja2Lbrr@W8dcpr8l2^)LmHOfSl2^)LRHjbOlK\?KS*K\In`g;YlKSB7l2ZD#bN]'-rosI`rosI`
+Ja.gOM!G!?J,~>
+J`c4Zrr@W4dcL]4k5XTDmH+QOk5XTDRHFMKlK8*GS*'GEn`C&Uk2u^+k5U"pbN8g)roO4\roO4\
+J`_OGM!"^;J,~>
+JaVdjrr@W<dI-u6lgF`PRI11XmJuYTm-XuVmJuYTR-sqRmd:&TrpBadrpBadJaUeN!!)uc!!)uc
+!!%T<JaSB_rr@Q~>
+Ja2Lbrr@W8dH^]2lg"HLRHanTl2^)Lm-4]Rl2^)LR-OYNmcjcProsI`rosI`Ja1MF!!)u_!!)u_
+!!%T8Ja/*Wrr@Q~>
+J`c4Zrr@W4dH:H.lfS3HRH=YPk5XTDm,eHNk5XTDR-+DJmcFNLroO4\roO4\J`b5>!<<#[!<<#[
+!<7W4J`_gOrr@Q~>
+JaVdjrr@W<eaE,2oBu;PT'cd_md:)CmJu\C"p")Z!:K7TcL(Z4rU'XcrU'Xcf^8kBmJuYTnEp8V
+rU'XcrU'Xcp?hn\rU'XcrU'XcJaS*WJaS*WiU6^GJ,~>
+Ja2Lbrr@W8e`ui.oBQ#LT'?L[lKSB7l2^8;"p!rR!:&hLcKYB0rTX@_rTX@_f]iS>l2^)LnEKuR
+rTX@_rTX@_p?DVXrTX@_rTX@_Ja.gOJa.gOiTgFCJ,~>
+J`c4Zrr@W4e`QT*oB,cHT&p7Wk2u^+k5Xl3#63iJs5rJDcK5-,rT4+[rT4+[f]E>:k5XTDnE'`N
+rT4+[rT4+[p>uATrT4+[rT4+[J`_OGJ`_OGiTC.?J,~>
+JaVdjrrB1h!!)uc!!)uc!!'7krW)9PrW&GU!!*#d!!*#d!!)NV!!*#d!!*#d!!(=4!!*#d!!*#d
+!!(gB!!*#drr<2i!:K7Tn*U/UrU'XcrU'Xcp[/"]rpBadrpBadJaS*WJaS*Wi9pUFJ,~>
+Ja2LbrrB1d!!)u_!!)u_!!'7grW)9LrW&GQ!!*#`!!*#`!!)NR!!*#`!!*#`!!(=0!!*#`!!*#`
+!!(g>!!*#`rr<2e!:&hLn*0lQrTX@_rTX@_pZ__YrosI`rosI`Ja.gOJa.gOi9L=BJ,~>
+J`c4ZrrB1`!<<#[!<<#[!<9:crr;<Hrr8JM!<<&\!<<&\!<;QN!<<&\!<<&\!<:@,!<<&\!<<&\
+!<:j:!<<&\s8N5as5rJDn)aWMrT4+[rT4+[pZ;JUroO4\roO4\J`_OGJ`_OGi9(%>J,~>
+JaVdjrrB.g!!*#d!!*#d!!'7k"9@iimJuYB"9@iimJrgG!!)uc!!)uc!!)TX!!)uc!!)uc!!(=4
+"p")Z!:K7Tg?o:JmJuYTmJuYTmJu_D!!*#d!!*#d!!)]["p")Z!:K7TJaS*WJaS*WhsULEJ,~>
+Ja2LbrrB.c!!*#`!!*#`!!'7g"9@]el2^5:"9@]el2[C?!!)u_!!)u_!!)TT!!)u_!!)u_!!(=0
+"p!rR!:&hLg?K"Fl2^)Ll2^)Ll2^;<!!*#`!!*#`!!)]W"p!rR!:&hLJa.gOJa.gOhs14AJ,~>
+J`c4ZrrB._!<<&\!<<&\!<9:c"TRWak5Xi2"TRWak5V"7!<<#[!<<#[!<;WP!<<#[!<<#[!<:@,
+#63iJs5rJDg?&bBk5XTDk5XTDk5Xo4!<<&\!<<&\!<;`S#63iJs5rJDJ`_OGJ`_OGhraq=J,~>
+JaVdjrrB+f"p")Z!:K7TYjM\qmd:)CmJu_D"p")Z!:K7TJaUMF"9@iimJto-"p")Z!:BgerpBad
+n*UA[md:)CmJukH"9@iimJqh+JaS*WJaVC_rr@Q~>
+Ja2LbrrB+b"p!rR!:&hLYj)DmlKSB7l2^;<"p!rR!:&hLJa15>"9@]el2]K%"p!rR!9sOarosI`
+n*1)WlKSB7l2^G@"9@]el2ZD#Ja.gOJa2+Wrr@Q~>
+J`c4ZrrB+^#63iJs5rJDYiZ/ik2u^+k5Xo4#63iJs5rJDJ`ar6"TRWak5X)r#63iJs5s@]roO4\
+n)aiSk2u^+k5Y&8"TRWak5U"pJ`_OGJ`bhOrr@Q~>
+JaVdjrrB(e"9@iimJsKZ!!*#d!!*#d!!)QW!!*#d!!*#d!!%T<`U<^*f'WY@mJuYTl0\ZSmJuYT
+na?AVJaS*WJaS*Wh<t:CJ,~>
+Ja2LbrrB(a"9@]el2\'R!!*#`!!*#`!!)QS!!*#`!!*#`!!%T8`TmF&f'3A<l2^)Ll08BOl2^)L
+n`p)RJa.gOJa.gOh<P"?J,~>
+J`c4ZrrB(]"TRWak5V[J!<<&\!<<&\!<;TO!<<&\!<<&\!<7W4`TI1"f&d,8k5XTDl/i-Kk5XTD
+n`KiNJ`_OGJ`_OGh<+_;J,~>
+JaVdjrrB%drW'1j!!)uc!!)uc!!)WY!!)uc!!)uc!!%T<b3ns'g$\h>kO/<Lo^;DQJaS*WJaS*W
+iU6^GJ,~>
+Ja2LbrrB%`rW'1f!!)u_!!)u_!!)WU!!)u_!!)u_!!%T8b3J[#g$8P:kN`$Ho]l,MJa.gOJa.gO
+iTgFCJ,~>
+J`c4ZrrB%\rr94b!<<#[!<<#[!<;ZQ!<<#[!<<#[!<7W4b3&Etg#i;6kN;dDo]GlIJ`_OGJ`_OG
+iTC.?J,~>
+JaVdjrrB1hp&LNK!!)uc!!)uc!!%T<aR9$-g$\P6n*]lLo^;\YJaS*WJaS*Wh<t:CJ,~>
+Ja2LbrrB1dp&LNG!!)u_!!)u_!!%T8aQia)g$882n*9THo]lDUJa.gOJa.gOh<P"?J,~>
+J`c4ZrrB1`pA^QC!<<#[!<<#[!<7W4aQEL%g#i#.n)j?Do]H/QJ`_OGJ`_OGh<+_;J,~>
+JaVdjrrB%drW&2N!!*#d!!*#d!!%T<aR002mJuYTf'`M;kO/<Lna6M[mJuYTJaS*WJaS*WhX:CD
+J,~>
+Ja2LbrrB%`rW&2J!!*#`!!*#`!!%T8aQ`m.l2^)Lf'<57kN`$Hn`g5Wl2^)LJa.gOJa.gOhWk+@
+J,~>
+J`c4ZrrB%\rr85F!<<&\!<<&\!<7W4aQ<X*k5XTDf&lu3kN;dDn`BuSk5XTDJ`_OGJ`_OGhWFh<
+J,~>
+JaVdjrrB(e"9@iimJrL>"p")Z!:K7TJaUVI"p")Z!:K7Tf^8kBmJuYTl0\ZSmJuYToBle_md:)C
+mJqh+JaS*WJaVF`rr@Q~>
+Ja2LbrrB(a"9@]el2[(6"p!rR!:&hLJa1>A"p!rR!:&hLf]iS>l2^)Ll08BOl2^)LoBHM[lKSB7
+l2ZD#Ja.gOJa2.Xrr@Q~>
+J`c4ZrrB(]"TRWak5U\.#63iJs5rJDJ`b&9#63iJs5rJDf]E>:k5XTDl/i-Kk5XTDoB$8Wk2u^+
+k5U"pJ`_OGJ`bkPrr@Q~>
+JaVdjrrB+f"p")Z!:K7TPjSYSmJuYTJaUVI!!*#d!!*#d!!(a@"p")Z!:K7Tlg=rWmd:)CmJuqJ
+!!*#d!!*#d!!%T<JaS*WJaVIarr@Q~>
+Ja2LbrrB+b"p!rR!:&hLPj/AOl2^)LJa1>A!!*#`!!*#`!!(a<"p!rR!:&hLlfnZSlKSB7l2^MB
+!!*#`!!*#`!!%T8Ja.gOJa21Yrr@Q~>
+J`c4ZrrB+^#63iJs5rJDPi`,Kk5XTDJ`b&9!<<&\!<<&\!<:d8#63iJs5rJDlfJEOk2u^+k5Y,:
+!<<&\!<<&\!<7W4J`_OGJ`bnQrr@Q~>
+JaVjl"T[rj!:BjcmJm7%mJm7cmJm7cmK*CV!<2Bd!<2Bd!0lpN!.jRZmJm7cmJm7cmJm7BmJm7d
+mJm7dmJm7SmJm7dmJm7dmJm7]mJm7cmJm7cmJm6<mXaeWmXafbmf*9;~>
+Ja2Rd"T[ff!9sR_l2Uh!l2Uh_l2Uh_l2gtN!<26`!<26`!0ldJ!.jFVl2Uh_l2Uh_l2Uh>l2Uh`
+l2Uh`l2UhOl2Uh`l2Uh`l2UhYl2Uh_l2Uh_l2Ug8l@J5Ol@J6ZlMgj7~>
+J`c:\"om]b!9X=[joGFrjoGG[joGG[joYSFs8M-\s8M-\s-2[Fs+0=RjoGG[joGG[joGG:joGG\
+joGG\joGGKjoGG\joGG\joGGUjoGG[joGG[joGF4k(2ZGk(2[Rk5PF3~>
+JaVgkrVuue!<2Bd!57e#!<2Bd!<2Bf!:BjcmJm7cmJm6Tme-Y\mJm7cmJm7cmJm6<mcj->!<)<c
+!<)<c!6sp3!<)<c!<)<c!:T=U!<)<c!<)<c!.jQhmXaeWm`k2"!.Y~>
+Ja2OcrVuua!<26`!57Xt!<26`!<26b!9sR_l2Uh_l2UgPlLk5Xl2Uh_l2Uh_l2Ug8lKRR6!<)0_
+!<)0_!6sd/!<)0_!<)0_!:T1Q!<)0_!<)0_!.jEdl@J5OlHSVo!.Y~>
+J`c7["TJH%k5YGC!<9ap!<<&\!<<&\!rqE_rT4+[rT4+[RHF5Cs5j=]rT4+[rT4+[J`c4Z!<<#[
+!<<#[!<:=+!<<#[!<<#[!<;NM!<<#[!<<#[!<7W4J`_OGJ`b5>rr@Q~>
+JaVdjrr<2i!:K7T_sRL)rU'slmd:)C!!)HT!/U(B!;c*`!<2Bd!<2Bd!.jS$mJm7dmJm7dmJm6<
+mXaeWmXaeWmdTZE!.Y~>
+Ja2Lbrr<2e!:&hL_s.4%rTX[hlKSB7!!)<L!/Tq>!;bs\!<26`!<26`!.jFul2Uh`l2Uh`l2Ug8
+l@J5Ol@J5OlL=*=!.Y~>
+J`c4Z#6+\cs5rJD_r^t!rT4Fdk2u^+s8V6Ds+oh:s8(jXs8M-\s8M-\s+0=qjoGG\joGG\joGF4
+k(2ZGk(2ZGk4%O5!.Y~>
+JaVdjrr</h!:BjKmJm7cmJm7cmJm7NmJm7dmJm7dmK<OX!:BiCmK<OX!:Bj`mKN[ZmJu\C!.jS"
+mKN[ZmJu\C!.jQhmXaeWmXafpmf*9;~>
+Ja2Lbrr</d!9sRGl2Uh_l2Uh_l2UhJl2Uh`l2Uh`l3%+P!9sQ?l3%+P!9sR\l377Rl2^,7!.jFs
+l377Rl2^,7!.jEdl@J5Ol@J6hlMgj7~>
+J`c4Z"T\Sbs5s@CjoGG[joGG[joGGFjoGG\joGG\jok_Hs5s?;jok_Hs5s@Xjp(kJk5XT+s+0=o
+jp(kJk5XT+s+0<`k(2ZGk(2[`k5PF3~>
+JaVdjquGdF!!*#d!!*#d!!)0L#6=2[!:K7Tmf!3ImJm7cmK`g\!:K7Tmd:)OmK<OX!:Bi<mc3^<
+!:BjT!.jQhmXaeWmXafomf*9;~>
+Ja2LbquGdB!!*#`!!*#`!!)0H#6=&S!:&hLlM^dEl2Uh_l3ICT!:&hLlKSBGl3%+P!9sQ8lJq.4
+!9sRL!.jEdl@J5Ol@J6glMgj7~>
+J`c4ZrrE&uj5p@AroO4\roO4\k2lpKk2u^+k5XTCs,Z:Bs8D'cs5s@Dk5XT+s8(j\s5s@Ds+0=m
+jok_Hs5s?4k(2ZGk(2ZGk3hC3!.Y~>
+JaVjlp&O7C"p")Z!:K7TjR*$Kme$RCmJm7dmf*:emf*:dmJm7`mf!3FmJm7cmJm7cmJm7Gmf!3;
+mXaeWmXaeWmd9HB!.Y~>
+Ja2Rdp&O7?"p!rR!:&hLjQZaGlLb.?l2Uh`lMgkalMgk`l2Uh\lM^dBl2Uh_l2Uh_l2UhClM^d7
+l@J5Ol@J5OlL!m:!.Y~>
+J`c:\pAa:;#63iJs5rJDjQ6LCk4Sb;joGG\k5YJ]k5YJ\joGGXk5PC>joGG[joGG[joGG?k5PC3
+k(2ZGk(2ZGk3_=2!.Y~>
+JaVdjquG^D"9@iimJu87rW)rcrW%rG#QX;\!:K7TmK!4R!W_ZVp&L0A!!*#d!!*#d!!)*Jp&K[3
+JaS*WJaS*Wna?DWJ,~>
+Ja2LbquG^@"9@]el2]i/rW)r_rW%rC#QX/T!:&hLl2^eJ!W_NNp&L0=!!*#`!!*#`!!)*Fp&K[/
+Ja.gOJa.gOn`p,SJ,~>
+J`c4ZrrE&uiT::Ck5XTDio^7?roX4[NTLNHk2u^+k5XTDrT41]k2uC;O6-HBroO4\roO4\jQ?19
+J`_OGJ`_OGJ`cLbrr@Q~>
+JaVdjrr</h!:BjGmf!4Jme$P\mJs'N!!)uc!!)uc!!)]["9@iimJukHrW%iD"p")Z!:K7ThsUID
+JaS*WJaS*WJaVpnrr@Q~>
+Ja2Lbrr</d!9sRClM^eFlLb,Xl2[XF!!)u_!!)u_!!)]W"9@]el2^G@rW%i@"p!rR!:&hLhs11@
+Ja.gOJa.gOJa2Xfrr@Q~>
+J`c4Z"T\Sbs5s@?k5PDBk4S`Tk5V7>!<<#[!<<#[!<;`S"TRWak5Y&8rr7l<#63iJs5rJDhraq<
+J`_OGJ`_OGJ`c@^rr@Q~>
+JaVdjrr<2i!:K7Tk3hpCl0\NOrpKac#OVT[!!)HT!2T#_!<2Bd!<2Bd!;#XX!;#U]!:BjT!:B1S
+!<)<c!<)<c!<)<c!<)<c!42(r!:BjT!8m2L!:BjT!:K7TrU'XcJaS*WJaS*WJaW7"rr@Q~>
+Ja2Lbrr<2e!:&hLk3DX?l086Krp'I_#O2<S!!)<L!2Sl[!<26`!<26`!;#LT!;#IY!9sRL!:B%O
+!<)0_!<)0_!<)0_!<)0_!41qn!9sRL!8m&H!9sRL!:&hLrTX@_Ja.gOJa.gOJa2sorr@Q~>
+J`c4Z#6+\cs5rJDk2uC;l/i!GroX4[#Nl'Ks8V6Ds.ncWs8M-\s8M-\s7>CPs7>@Us5s@Ds6\qK
+s8D'[s8D'[s8D'[s8D'[s0Lhjs5s@Ds52rDs5s@Ds5rJDrT4+[J`_OGJ`_OGJ`c[grr@Q~>
+JaVgkrVuue!<2Bd!9<MH!9EPT!:BjT!:BjT!:BjdmJm6_mKN[ZmJu\C!;>jS!;Psd!:K7Tmd:)B
+mJm7dmJm7dmK*CV!<2Bd!<2Bd!3ttk!8m2M!:K7T!:BjT!<2Bd!1N<U!<)<c!<)<c!.jQhmXaeW
+mcX$<!.Y~>
+Ja2OcrVuua!<26`!9<AD!9EDP!9sRL!9sRL!9sR`l2Ug[l377Rl2^,7!;>^O!;Pg`!:&hLlKSB:
+l2Uh`l2Uh`l2gtN!<26`!<26`!3thg!8m&I!:&hL!9sRL!<26`!1N0Q!<)0_!<)0_!.jEdl@J5O
+lK@I4!.Y~>
+J`c7["TJH%k5YGC!<;*Arr;'A$NK8gk5XTDk5XTDroO4\Uuhm]k2u^+k5Y/;pAapM#63iJs5rJD
+mH+EKroO4\roO:^k5YGC!<<&\!<9=drr:m<#lj&Ls8V6]k5YGC!<8MM!<<#[!<<#[!<7W4J`_OG
+J`c.Xrr@Q~>
+JaVjl"T[rj!:BjcmJm7KmK<OX!:BjJmKim]mJm7T!:K7TrU'XcV!\?cmJuYTna?AVp$Me[rpBad
+rpBadmHt/Ymd:)CmK!7S"p")Z!:K7T[-mVfjR*!JrpC$lmJuYT!:K7TcL(Z4rU'XcrU'Xcf'WM<
+rpBadrpBadJaS*WJaS*Wk3i6LJ,~>
+Ja2Rd"T[ff!9sR_l2UhGl3%+P!9sRFl3RIUl2UhL!:&hLrTX@_V!8'_l2^)Ln`p)Rp$)MWrosI`
+rosI`mHOlUlKSB7l2^hK"p!rR!:&hL[-I>bjQZ^Frosahl2^)L!:&hLcKYB0rTX@_rTX@_f'358
+rosI`rosI`Ja.gOJa.gOk3DsHJ,~>
+J`c:\"om]b!9X=[joGGCjok_Hs5s@BjpD(Mk5YJDs5rJDrT4+[Uuhg[k5XTDn`KiNp#Z8SroO4\
+roO4\mH+WQk2u^+k5YGC#63iJs5rJD[-%)^jQ6IBroOLdk5XTDs5rJDcK5-,rT4+[rT4+[f&cu4
+roO4\roO4\J`_OGJ`_OGk2u[DJ,~>
+JaVdjrrCsE"p")Z!:K7Tk3`KTmJuYTmJuYTSF6@Vna6M[mJuYTp[/"]rU'XcrU'XcmHt)WmJuYT
+r9a[fmJuYTYO;AiiU-[GrU'pkmd:)C!:BgerU'Xcdd@)8rpBadrpBadeF!M@md:)CmJqh+JaS*W
+JaVXfrr@Q~>
+Ja2LbrrCsA"p!rR!:&hLk3<3Pl2^)Ll2^)LSEg(Rn`g5Wl2^)LpZ__YrTX@_rTX@_mHOfSl2^)L
+r9=Cbl2^)LYNl)eiT^CCrTXXglKSB7!9sOarTX@_dcpf4rosI`rosI`eER5<lKSB7l2ZD#Ja.gO
+Ja2@^rr@Q~>
+J`c4ZrrCs=#63iJs5rJDk2lsLk5XTDk5XTDSEBhNn`BuSk5XTDpZ;JUrT4+[rT4+[mH+QOk5XTD
+r8n.^k5XTDYNGiaiT:.?rT4Cck2u^+s5s@]rT4+[dcLQ0roO4\roO4\eE-u8k2u^+k5U"pJ`_OG
+J`c(Vrr@Q~>
+JaVdjrrD!F!!*#d!!*#d!!)6N!!*#drW)rc!!&_\p&OgS"p")Z!:K7Tf^A_=qX4=_YO2MnmJuYT
+g$\h>!U]semJm76mKN[ZmJu\C!7L9<!:BjT!.jQhmXaeWmc<g9!.Y~>
+Ja2LbrrD!B!!*#`!!*#`!!)6J!!*#`rW)r_!!&_Xp&OgO"p!rR!:&hLf]rG9qWe%[YNc5jl2^)L
+g$8P:!U9[al2Uh2l377Rl2^,7!7L-8!9sRL!.jEdl@J5OlK%71!.Y~>
+J`c4ZrrD!>!<<&\!<<&\!<;9F!<<&\rr;u[!<8bTpAajK#63iJs5rJDf]N25qW@eWYN>ufk5XTD
+g#i;6!TsF]joGG.jp(kJk5XT+s3g$4s5s@Ds+0<`k(2ZGk2b\)!.Y~>
+JaVdjrrD$G!!)uc!!)uc!!)9Op&LZOrW)QX!!*#d!!*#d!!(jCli=E\"p")Z!:K7ThX:%:cL(f8
+mJuYTd-gl5JaS*WJaS*Wj6lpIJ,~>
+Ja2LbrrD$C!!)u_!!)u_!!)9Kp&LZKrW)QT!!*#`!!*#`!!(j?li=EX"p!rR!:&hLhWjb6cKYN4
+l2^)Ld-CT1Ja.gOJa.gOj6HXEJ,~>
+J`c4ZrrD$?!<<#[!<<#[!<;<GpA^]Grr;TP!<<&\!<<&\!<:m;m/OHT#63iJs5rJDhWFM2cK590
+k5XTDd,t?-J`_OGJ`_OGj6$@AJ,~>
+JaVdjrrBXurW&DT"9@iimJuqJ!!)uc!!)uc!!(a@rW)f_rW'4k!!*#d!!*#d!!(dArW!&g!:Bj2
+mf!48me-X3mXaeWmXafhmf*9;~>
+Ja2LbrrBXqrW&DP"9@]el2^MB!!)u_!!)u_!!(a<rW)f[rW'4g!!*#`!!*#`!!(d=rW!&c!9sR.
+lM^e4lLk4/l@J5Ol@J6`lMgj7~>
+J`c4ZrrBXmrr8GL"TRWak5Y,:!<<#[!<<#[!<:d8rr;iWrr97c!<<&\!<<&\!<:g9rr3)_s5s@*
+k5PD0k4\h+k(2ZGk(2[Xk5PF3~>
+JaVdjrrB\!"9@iimJrdF"p")Z!:K7T`U3j/mJuYTr9a[fmJuYTrU'XcrU'XcrU'Xc_X7C(rU'Xc
+rU'Xch<k@FmJu\S!71*,!7UB8!.jQhmXaeWmc3a8!.Y~>
+Ja2LbrrB[r"9@]el2[@>"p!rR!:&hL`TdR+l2^)Lr9=Cbl2^)LrTX@_rTX@_rTX@__Wh+$rTX@_
+rTX@_h<G(Bl2^,K!70s(!7U64!.jEdl@J5OlJq10!.Y~>
+J`c4ZrrB[n"TRWak5Ut6#63iJs5rJD`T@='k5XTDr8n.^k5XTDrT4+[rT4+[rT4+[_WCjurT4+[
+rT4+[h<"h>k5XTCs3Kj$s3p-0s+0<`k(2ZGk2YV(!.Y~>
+JaVdjrrB_""p")Z!:K7TT'cRYrpBadrpBada6j-3md:)CmK!7S"p")Z!:K7TrU'XcrpBadrpBad
+POA)Dg$Sh?rU'XcrU0Xbd-_#:mJuYTJaS*WJaS*WjR3$JJ,~>
+Ja2LbrrB^s"p!rR!:&hLT'?:UrosI`rosI`a6Ej/lKSB7l2^hK"p!rR!:&hLrTX@_rosI`rosI`
+PNqf@g$/P;rTX@_rTa@^d-:`6l2^)LJa.gOJa.gOjQcaFJ,~>
+J`c4ZrrB^o#63iJs5rJDT&p%QroO4\roO4\a6!U+k2u^+k5YGC#63iJs5rJDrT4+[roO4\roO4\
+PNMQ<g#`;7rT4+[rT=+Zd,kK2k5XTDJ`_OGJ`_OGjQ?IBJ,~>
+JaVdjrrBb#!!*#d!!*#d!!&\[!!)uc!!)uc!!(./!!*#d!!*#d!W_WgrpBadrpBadrU'jimd:)C
+mJuD;!!)uc!!)uc!!'Rt!!*#d!<DQe!7^E:!<2Bd!<2Bh!:BjT!7L9>!:K7Tmd:(+meQ8N!<)<c
+!<)<c!.jQhmXag$mf*9;~>
+Ja2LbrrBat!!*#`!!*#`!!&\W!!)u_!!)u_!!(.+!!*#`!!*#`!W_KcrosI`rosI`rTXRelKSB7
+l2]u3!!)u_!!)u_!!'Rp!!*#`!<DEa!7^96!<26`!<26d!9sRL!7L-:!:&hLlKSA#lM9]F!<)0_
+!<)0_!.jEdl@J6qlMgj7~>
+J`c4ZrrBap!<<&\!<<&\!<8_S!<<#[!<<#[!<:1'!<<&\!<<&\!rqE_roO4\roO4\rT4=ak2u^+
+k5XT+!<<#[!<<#[!<9Ul!<<&\!WV<]s4$02s8M-\s8M-`s5s@Ds3g$6s5rJDk2u\pk5"->s8D'[
+s8D'[s+0<`k(2[ik5PF3~>
+JaVdjrrBe$!!)uc!!)uc!!'%e!!)uc!!)uc!!)0L!!)uc!!)uc!!)3M!!)uc!!)uc!!)uc!!)uc
+!!)uc"9@iimJu>9!!*#d!!*#d!!'Rt!!)ucrr</h!:Bj:mL0*`mJu\C!:K7Tmd:)@mJm7cmJm7c
+mJm7[mJm7dmJm7dmJm6<meQ8N!<2Bd!<2Bd!.jQhmXag#mf*9;~>
+Ja2LbrrBdu!!)u_!!)u_!!'%a!!)u_!!)u_!!)0H!!)u_!!)u_!!)3I!!)u_!!)u_!!)u_!!)u_
+!!)u_"9@]el2]o1!!*#`!!*#`!!'Rp!!)u_rr</d!9sR6l3m[Xl2^,7!:&hLlKSB8l2Uh_l2Uh_
+l2UhWl2Uh`l2Uh`l2Ug8lM9]F!<26`!<26`!.jEdl@J6plMgj7~>
+J`c4ZrrBdq!<<#[!<<#[!<9(]!<<#[!<<#[!<;3D!<<#[!<<#[!<;6E!<<#[!<<#[!<<#[!<<#[
+!<<#["TRWak5XN)!<<&\!<<&\!<9Ul!<<#[s8N2`s5s@2jp_:Pk5XT+s5rJDk2u^0joGG[joGG[
+joGGSjoGG\joGG\joGF4k5"->s8M-\s8M-\s+0<`k(2[hk5PF3~>
+JaVdjrr@W<g[5%ArpBadrpBadjR*!JrpBadrpBadbjPH1ipI!Nmd:)CmJsT]"p")Z!:K7TeF!G>
+mJuYTrpBadrpBadlg=`QrpBadrpBadp$Me[rU'XcrU'XcJaW@%"p")Z!:K7TJaS*WJaW7"rr@Q~>
+Ja2Lbrr@W8gZeb=rosI`rosI`jQZ^FrosI`rosI`bj,0-ip$^JlKSB7l2\0U"p!rR!:&hLeER/:
+l2^)LrosI`rosI`lfnHMrosI`rosI`p$)MWrTX@_rTX@_Ja3'r"p!rR!:&hLJa.gOJa2sorr@Q~>
+J`c4Zrr@W4gZAM9roO4\roO4\jQ6IBroO4\roO4\bi\p)ioUIFk2u^+k5VdM#63iJs5rJDeE-o6
+k5XTDroO4\roO4\lfJ3IroO4\roO4\p#Z8SrT4+[rT4+[J`cdj#63iJs5rJDJ`_OGJ`c[grr@Q~>
+JaVdjrr@W<g?o.Fmd:)CmJu87"p")Z!:K7TcgLK,jmE6OmJuYTZgIenrpBadrpBadeF*;9rU'Xc
+rU'Xclg=rWmd:)CmJqh+i9g^JmJuYTJaS*WJaW4!rr@Q~>
+Ja2Lbrr@W8g?JkBlKSB7l2]i/"p!rR!:&hLcg(3(jlusKl2^)LZg%MjrosI`rosI`eE[#5rTX@_
+rTX@_lfnZSlKSB7l2ZD#i9CFFl2^)LJa.gOJa2pnrr@Q~>
+J`c4Zrr@W4g?&V>k2u^+k5XH'#63iJs5rJDcfXs$jlQ^Gk5XTDZfV8froO4\roO4\eE6c1rT4+[
+rT4+[lfJEOk2u^+k5U"pi8t1Bk5XTDJ`_OGJ`cXfrr@Q~>
+h<t4ArpKddo'QJXfC&V<rpKacg$\k?JaV4Z"9@iimJu25"9@iimJtDtrW(mErW':m!!)uc!!)uc
+!!(^?p&O1A"9@iimJqh+hX:@CJaS*WJaW0urr@Q~>
+h<Oq=rp'L`o'-2TfBW>8rp'I_g$8S;Ja1qR"9@]el2]c-"9@]el2\ulrW(mArW':i!!)u_!!)u_
+!!(^;p&O1="9@]el2ZD#hWk(?Ja.gOJa2mmrr@Q~>
+h<+Y9roX4\o&]oPfB3&4roX1[g#i;7J`bYJ"TRWak5XB%"TRWak5WTdrr:p=rr9=e!<<#[!<<#[
+!<:a7pAa49"TRWak5U"phWFh;J`_OGJ`cUerr@Q~>
+kjAKPmK!%M!s%cW!<2Bd!:oOX!7pQ<!<2Bd!<2Bd!8?l@!.jRjmf!4Cmf!4/mK<OX!:BjKme-X3
+mJu\S!8m5D!.jRsme-Y\mJm7cmJm6<mXaeWmK2eV!.Y~>
+kir3Ll2^VE!s%WO!<26`!:oCT!7pE8!<26`!<26`!8?`<!.jFflM^e?lM^e+l3%+P!9sRGlLk4/
+l2^,K!8m)@!.jFolLk5Xl2Uh_l2Ug8l@J5Ol2p5N!.Y~>
+kiMpHjoG2=!s%KG!<2*\!:o7P!7p94!<2*\!<2*\!8?T8!.j:bk5PD;k5PD'jok_Hs5s@Ck4\h+
+joFQCs52u<s+0=kk4\iTjoGG[joGF4k(2ZGjoXZF!.Y~>
+kjAKPmK!%M!s%cW!<2Bd!:oOX!7pQ<!<2Bd!<2Bd!8?l@!.jRnme-YCme-Y,mKN[ZmJu\C!93GG
+!;c*`!<)<c!<)<c!0?ON!:BjT!9ESA!.jRsmf!4dmJm7dmJm7dmJm6<mXaeWmf2_T!.Y~>
+kir3Ll2^VE!s%WO!<26`!:oCT!7pE8!<26`!<26`!8?`<!.jFjlLk5?lLk5(l377Rl2^,7!93;C
+!;bs\!<)0_!<)0_!0?CJ!9sRL!9EG=!.jFolM^e`l2Uh`l2Uh`l2Ug8l@J5OlMp/L!.Y~>
+kiMpHjoG2=!s%KG!<2*\!:o7P!7p94!<2*\!<2*\!8?T8!.j:fk4\i;k4\i$jp(kJk5XT+s5N2?
+s8(jXs8D'[s8D'[s,Z:Fs5s@Ds5`>9s+0=kk5PD\joGG\joGG\joGF4k(2ZGk5XTD!.Y~>
+l0eHLq<e=bmd:)SmJm7cmf!4cmf!4dmK3IWmK!7SrW)c^r;cibrW)ud!s%`h!;Gm]!<2Bd!<2Bd
+!8?l@!.jRjmf!4Cmf!41mJm7dmJm7dmJm7JmK<OX!:Bj`mJm7dmJm7dmJm6OmJm7cmKN[ZmJuYT
+!9*AF!.jRpmL90a!:BjTmJu\C!:K7TJaS*WJaWO*rr@Q~>
+l0A0Hq<A%^lKSBKl2Uh_lM^e_lM^e`l2q%Ol2^hKrW)cZr;ci^rW)u`!s%Td!;GaY!<26`!<26`
+!8?`<!.jFflM^e?lM^e-l2Uh`l2Uh`l2UhFl3%+P!9sR\l2Uh`l2Uh`l2UgKl2Uh_l377Rl2^)L
+!9*5B!.jFll4!aY!9sRLl2^,7!:&hLJa.gOJa37"rr@Q~>
+l/qmDq;qbZk2l[Cjo>D[k5GA[k5GA\joYVGjoGDCrW)cVr;ciZrW)u\!s%H`!;GUU!<2*\!<2*\
+!8?T8!.j:bk5PD;k5PD)joGG\joGG\joGGBjok_Hs5s@XjoGG\joGG\joGFGjoGG[jp(kJk5XTD
+s5E,>s+0=hjph@Qs5s@Dk5XT+s5rJDJ`_OGJ`csorr@Q~>
+kjAKPmK!%MrW)ob!!*#d!!*#d!W_WgrpBmhmJuYTrpBadrpBadqX+=`rpBgfmK!7S"p"&k!:K7T
+q!J+^rpBadrpBadg@"t@JaV4Z"9@iimJu25"9@iimJtQ#!!)uc!!)uc!!)0L"p")Z!:K7TqX+Of
+md:)CmJrF<$NTV_!!)HT!!)HT!9<JM!:BjT!.jRrmL90amJu\C!:K7TmJuYTJaS*WJaWL)rr@Q~>
+kir3Ll2^VErW)o^!!*#`!!*#`!W_KcrosUdl2^)LrosI`rosI`qW\%\rosObl2^hK"p!og!:&hL
+q!%hZrosI`rosI`g?S\<Ja1qR"9@]el2]c-"9@]el2],p!!)u_!!)u_!!)0H"p!rR!:&hLqW\7b
+lKSB7l2["4$NTJW!!)<L!!)<L!9<>I!9sRL!.jFnl4!aYl2^,7!:&hLl2^)LJa.gOJa34!rr@Q~>
+kiMpHjoG2=rW)oZ!!*#\!!*#\!W_?_roO=`joFNDroO1\roO1\qW7bXroO7^joGDC"p!cc!9WDD
+puVPVroO1\roO1\g?/D8J`bYJ"TRWak5XB%"TRWak5W`h!<<#[!<<#[!<;3D#63iJs5rJDqW8"^
+k2u^+k5UV,$ifAOs8V6Ds8V6Ds5W5Es5s@Ds+0=jjph@Qk5XT+s5rJDk5XTDJ`_OGJ`cpnrr@Q~>
+l0eHLq<e=bmd:)SmJm7dmJm7dmK*CV!;u9b!;u9b!;Ps^!<2Be!:Kab!U]s[mJm7dmJm7dmJm7@
+mf*9<mb7(5!:K7Tmd:)7mKN[ZmJu\C!35Ge!<2Bd!<2Bd!;c*d!:BjT!0HXK!!M]imd:)RmJm7c
+mJm7cmJm7UmKN[ZmJu\C!.jRtmJm7dmJm7dmK*CVmf!3;mXaeWmelMQ!.Y~>
+l0A0Hq<A%^lKSBKl2Uh`l2Uh`l2gtN!;u-^!;u-^!;PgZ!<26a!:'I^!U9[Wl2Uh`l2Uh`l2Uh<
+lMgj8lItM-!:&hLlKSB/l377Rl2^,7!35;a!<26`!<26`!;bs`!9sRL!0HLG!!MQelKSBJl2Uh_
+l2Uh_l2UhQl377Rl2^,7!.jFpl2Uh`l2Uh`l2gtNlM^d7l@J5OlMTrI!.Y~>
+l/qmDq;qbZk2l[Cjo>D\jo>D\joPPF!;u!Z!;u!Z!;P[V!<2*]!9X1Z!TjCSjo>D\jo>D\jo>D8
+k5PF4k1\r%s5rJDk2u^'jp(kJk5XT+s/P2]s8M-\s8M-\s8(j\s5s@Ds,cCCrrhKak2u^BjoGG[
+joGG[joGGMjp(kJk5XT+s+0=ljoGG\joGG\joYSFk5PC3k(2ZGk5=BA!.Y~>
+kjAKPmK!%M!s%cW!<2Bd!<2Bd!<2Bf!:BjbmK*CV!;l0a!;Z$_!<2Bf!:BjbmJm7ZmJm7dmJm7d
+mJm7@mf*9<mb@.0!<2Bd!<2Bd!9EPJ!<2Bd!<2Bd!3GSg!<)<c!<)<c!;c-_!6":*!<)<c!<)<c
+!7pQ@!:BjT!;l0a!<2Bd!<2Bd!:T=U!<2Bd!<2Bd!.jS!mJm7cmK*CVme-X3mXaeWmK2eV!.Y~>
+kir3Ll2^VE!s%WO!<26`!<26`!<26b!9sR^l2gtN!;l$]!;Ym[!<26b!9sR^l2UhVl2Uh`l2Uh`
+l2Uh<lMgj8lJ(S(!<26`!<26`!9EDF!<26`!<26`!3GGc!<)0_!<)0_!;c![!6".&!<)0_!<)0_
+!7pE<!9sRL!;l$]!<26`!<26`!:T1Q!<26`!<26`!.jFrl2Uh_l2gtNlLk4/l@J5Ol2p5N!.Y~>
+kiMpHjoG2=!s%KG!<2*\!<2*\!<2*^!9O:ZjoPPF!;kmY!;YaW!<2*^!9O:Zjo>DRjo>D\jo>D\
+jo>D8k5PF4k1f"us8M-\s8M-\s5`;Bs8M-\s8M-\s/b>_s8D'[s8D'[s8(mWs2=%"s8D'[s8D'[
+s46<8s5s@Ds81pYs8M-\s8M-\s6o(Ms8M-\s8M-\s+0=njoGG[joYSFk4\h+k(2ZGjoXZF!.Y~>
+kjAKPmK!%M!s%cW!<2Bd!<2Bd!<2Bf!:BjdmK`g\!:K7Tmd:)SmJm7`mem.cmJm7dmK*CV!;,[Z
+!<2Bd!<2Bd!8?l@!.jRnmJm7cmJm7cmJm7LmJm7cmJm7cmJm6Zme-Y\mJm7cmJm7cmJm7:mJm7d
+mJm7dmJm7:mf!4^mKN[ZmJu\C!:T=U!<)<c!<)<c!.jRkmf!3;mXaeWmelMQ!.Y~>
+kir3Ll2^VE!s%WO!<26`!<26`!<26b!9sR`l3ICT!:&hLlKSBKl2Uh\lMU__l2Uh`l2gtN!;,OV
+!<26`!<26`!8?`<!.jFjl2Uh_l2Uh_l2UhHl2Uh_l2Uh_l2UgVlLk5Xl2Uh_l2Uh_l2Uh6l2Uh`
+l2Uh`l2Uh6lM^eZl377Rl2^,7!:T1Q!<)0_!<)0_!.jFglM^d7l@J5OlMTrI!.Y~>
+kiMpHjoG2=!s%KG!<2*\!<2*\!<2*^!9O:\jp1tL!9WDDk2l[Cjo>DXk5>;[jo>D\joPPF!;,CR
+!<2*\!<2*\!8?T8!.j:fjoGG[joGG[joGGDjoGG[joGG[joGFRk4\iTjoGG[joGG[joGG2joGG\
+joGG\joGG2k5PDVjp(kJk5XT+s6o(Ms8D'[s8D'[s+0=ck5PC3k(2ZGk5=BA!.Y~>
+h<t4ArpKacrpKacrpKacs6]jerpBgfmdC&Sq<e4_qsOF`s6]jep$VeZrpKacg$\k?JaS*W`U<^*
+qX+=`rpBadrpBaddd@;>md:)CmJtl,p&P$Y"9@iimJqh+]^>n&mJuYTJaS*WJaWL)rr@Q~>
+h<Oq=rp'I_rp'I_rp'I_s69RarosOblK\?Kq<@q[qs+.\s69Rap$2MVrp'I_g$8S;Ja.gO`TmF&
+qW\%\rosI`rosI`dcq#:lKSB7l2]H$p&P$U"9@]el2ZD#]]oV"l2^)LJa.gOJa34!rr@Q~>
+h<+Y9roX1[roX1[roX1[s5j:]roO7^k2uXCq;qYWqr[kXs5j:]p#c5RroX1[g#i;7J`_OG`TI1"
+qW7eXroO4\roO4\dcLc6k2u^+k5X&qpAb'Q"TRWak5U"p]]K@sk5XTDJ`_OGJ`cpnrr@Q~>
+ZgIen\F0@sJaS*W`pNs0mJuYTqX+Ofmd:)CmJtW%"9@iimJt]'rW)]\rW%N;]^>t(md:)CmJqh+
+JaS*WrpKddJ,~>
+Zg%Mj\Ea(oJa.gO`p*[,l2^)LqW\7blKSB7l2]2r"9@]el2]8trW)]XrW%N7]]o\$lKSB7l2ZD#
+Ja.gOrp'L`J,~>
+ZfV5f\E<ekJ`_OG`o[F(k5XTDqW8"^k2u^+k5Wfj"TRWak5Wllrr;`Trr7Q3]]KFuk2u^+k5U"p
+J`_OGroX4\J,~>
+ZgIen\F0@sJaS*Wa6j-3md:)CmK!+O"9@iimJtQ#rW(C7"9@iimK!1Qp&K[3_<q:'rpBadrpBad
+JaS*WJaWR+rr@Q~>
+Zg%Mj\Ea(oJa.gOa6Ej/lKSB7l2^\G"9@]el2],prW(C3"9@]el2^bIp&K[/_<M"#rosI`rosI`
+Ja.gOJa3:#rr@Q~>
+ZfV5f\E<ekJ`_OGa6!U+k2u^+k5Y;?"TRWak5W`hrr:F/"TRWak5YAApA]^+_<(atroO4\roO4\
+J`_OGJ`d!prr@Q~>
+JaVdjrr@W<JaUVI!!*#d!!*#d!!)l`rW(@6p&N_4"p")Z!:K7Tq<n4^JaU8?!!)uc!!)uc!!%T<
+JaS*W!q$$gJ,~>
+Ja2Lbrr@W8Ja1>A!!*#`!!*#`!!)l\rW(@2p&N_0"p!rR!:&hLq<IqZJa0u7!!)u_!!)u_!!%T8
+Ja.gO!pTacJ,~>
+J`c4Zrr@W4J`b&9!<<&\!<<&\!<;oXrr:C.pA`b,#63iJs5rJDq<%\VJ`a]/!<<#[!<<#[!<7W4
+J`_OG!p0I_J,~>
+JaVdjrr@W<JaUYJ!!)uc!!)uc!W_ZVp&NM.rW(I9!!*#d!!*#d!!)oa"9@iimJti+!!)uc!!)uc
+!!%T<JaS*WJaVdjrr@Q~>
+Ja2Lbrr@W8Ja1AB!!)u_!!)u_!W_NNp&NM*rW(I5!!*#`!!*#`!!)o]"9@]el2]E#!!)u_!!)u_
+!!%T8Ja.gOJa2Lbrr@Q~>
+J`c4Zrr@W4J`b):!<<#[!<<#[!rqEFpA`P&rr:L1!<<&\!<<&\!<;rY"TRWak5X#p!<<#[!<<#[
+!<7W4J`_OGJ`c4Zrr@Q~>
+JaVdjrr@W<JaU&9rW(73"9@iimJti+!!)uc!!)uc!!)uc"p")Z!:K7TlL"WPrU'XcrU'Xcq!J+^
+rpBadrpBadJaS*WJaS*WkjJHNJ,~>
+Ja2Lbrr@W8Ja0c1rW(7/"9@]el2]E#!!)u_!!)u_!!)u_"p!rR!:&hLlKS?LrTX@_rTX@_q!%hZ
+rosI`rosI`Ja.gOJa.gOkj&0JJ,~>
+J`c4Zrr@W4J`aK)rr::+"TRWak5X#p!<<#[!<<#[!<<#[#63iJs5rJDlK/*HrT4+[rT4+[puVSV
+roO4\roO4\J`_OGJ`_OGkiVmFJ,~>
+JaVdjrr@W<JaU):"9@iimJtW%"p")Z!:K7TamK-/rpBadrpBadlL"WPrpBadrpBadp?i+bmd:)C
+mJqh+JaS*WJaV^hrr@Q~>
+Ja2Lbrr@W8Ja0f2"9@]el2]2r"p!rR!:&hLam&j+rosI`rosI`lKS?LrosI`rosI`p?Dh^lKSB7
+l2ZD#Ja.gOJa2F`rr@Q~>
+J`c4Zrr@W4J`aN*"TRWak5Wfj#63iJs5rJDalWU'roO4\roO4\lK/*HroO4\roO4\p>uSZk2u^+
+k5U"pJ`_OGJ`c.Xrr@Q~>
+JaVdjrr@W<JaU,;"p")Z!:K7Tdd@)8rpBadrpBadbO,?1rU'XcrU'XclL"iVmd:)CmJunI"9@ii
+mJqh+JaS*WJaV[grr@Q~>
+Ja2Lbrr@W8Ja0i3"p!rR!:&hLdcpf4rosI`rosI`bN]'-rTX@_rTX@_lKSQRlKSB7l2^JA"9@]e
+l2ZD#Ja.gOJa2C_rr@Q~>
+J`c4Zrr@W4J`aQ+#63iJs5rJDdcLQ0roO4\roO4\bN8g)rT4+[rT4+[lK/<Nk2u^+k5Y)9"TRWa
+k5U"pJ`_OGJ`c+Wrr@Q~>
+JaVdjrr@W<JaU/<!!*#d!!*#d!!)l`!!)uc!!)uc!!)0L!!)uc!!)uc!!'"d"9@iimJuhGrW%N;
+JaS*WJaVXfrr@Q~>
+Ja2Lbrr@W8Ja0l4!!*#`!!*#`!!)l\!!)u_!!)u_!!)0H!!)u_!!)u_!!'"`"9@]el2^D?rW%N7
+Ja.gOJa2@^rr@Q~>
+J`c4Zrr@W4J`aT,!<<&\!<<&\!<;oX!<<#[!<<#[!<;3D!<<#[!<<#[!<9%\"TRWak5Y#7rr7Q3
+J`_OGJ`c(Vrr@Q~>
+JaVdjrr@W<JaU2=!!)uc!!)uc!!)l`!!*#d!!*#d!!%T<rW)WZp&K[3JaS*WJaVdjrr@Q~>
+Ja2Lbrr@W8Ja0o5!!)u_!!)u_!!)l\!!*#`!!*#`!!%T8rW)WVp&K[/Ja.gOJa2Lbrr@Q~>
+J`c4Zrr@W4J`aW-!<<#[!<<#[!<;oX!<<&\!<<&\!<7W4rr;ZRpA]^+J`_OGJ`c4Zrr@Q~>
+JaVdjrr@W<JaTN*"p")Z!:K7TK^SO6rU'Xcr9aRcmed(amf*:dmf*:dmJm7cmK*CV!<)<c!<)<c
+!.jQhmXae\mf*9;~>
+Ja2Lbrr@W8Ja06""p!rR!:&hLK^/72rTX@_r9=:_lMLY]lMgk`lMgk`l2Uh_l2gtN!<)0_!<)0_
+!.jEdl@J5TlMgj7~>
+J`c4Zrr@W4J``ro#63iJs5rJDK]`".rT4+[r8n%[k5>8Yk5YJ\k5YJ\joGG[joYSFs8D'[s8D'[
+s+0<`k(2ZLk5PF3~>
+JaVdjrr@W<i9gRFrU'XcrU'Xch<k7CrU'XcrU'XcKC/jBmJuYTM!b6CrpKdd!q$'Vr;[&i!!)Ee
+mK!+O$39JomJuYTmJuYTrpKdd#OVT[!:K7T!<2Bd!<2Bd!<2Bd!.jQhmXae[mf*9;~>
+Ja2Lbrr@W8i9C:BrTX@_rTX@_h<Ft?rTX@_rTX@_KB`R>l2^)LM!=s?rp'L`!pTdNr;[&e!!)9a
+l2^\G$39>kl2^)Ll2^)Lrp'L`#O2<S!:&hL!<26`!<26`!<26`!.jEdl@J5SlMgj7~>
+J`c4Zrr@W4i8t%>rT4+[rT4+[h<"_;rT4+[rT4+[KB<=:k5XTDLun^;roX7\!p9OFrVm)as8V6]
+k5Y;?$NK8gk5XTDk5XTDroX7\#Nl'Ks5rJDs8M-\s8M-\s8M-\s+0<`k(2ZKk5PF3~>
+JaVdjrrCa?!!)uc!!)uc!!&2M!!*#d!!*#d!!(dA!!*#d!!*#d!!%T<rW'Y"!!)uc!!)uc!!*#d
+!!)uc!!)uc!!)'I!!*#d!W_ZVrW!2k!!)Ee!:Bj`mM>lk!!)Ee!:BjTmJu\C!:K7TmJm7TmK!7S
+#QX8mmd:)CmJqh+JaS*WK^Sj?J,~>
+Ja2LbrrCa;!!)u_!!)u_!!&2I!!*#`!!*#`!!(d=!!*#`!!*#`!!%T8rW'Xs!!)u_!!)u_!!*#`
+!!)u_!!)u_!!)'E!!*#`!W_NNrW!2g!!)9a!9sR\l5'Hc!!)9a!9sRLl2^,7!:&hLl2UhLl2^hK
+#QX,ilKSB7l2ZD#Ja.gOK^/R;J,~>
+J`c4ZrrCa7!<<#[!<<#[!<85E!<<&\!<<&\!<:g9!<<&\!<<&\!<7W4rr9[o!<<#[!<<#[!<<&\
+!<<#[!<<#[!<;*A!<<&\!rqEFrr35cs8V6]s5s@Xjqn'[s8V6]s5s@Dk5XT+s5rJDk5YJDk5YGC
+#lj&ek2u^+k5U"pJ`_OGK]`:7J,~>
+JaVdjrrC^>!!*#d!!*#d!!&,K"p")Z!:K7Tg$T%Emd:)CmJsof!!)uc!!)uc!!([>!!*#do`,?e
+!:K7TmJu\C!!*#drrE#c!!)l`!!)uc!!)uc!s%cW!<)<c!<)<c!<)<c!<)<j!:K7TmJuYTrpBad
+r9aObrpBadrpBadiU-aImdBrP#4;HkmJuYTqX+=`rpC*nmJuYTmJuYTmK!4R#QX8mmJm7TmK!7S
+"9@iimJqh+JaS*WKC8a>J,~>
+Ja2LbrrC^:!!*#`!!*#`!!&,G"p!rR!:&hLg$/bAlKSB7l2\K^!!)u_!!)u_!!([:!!*#`o`,?a
+!:&hLl2^,7!!*#`rrE#_!!)l\!!)u_!!)u_!s%WO!<)0_!<)0_!<)0_!<)0f!:&hLl2^)LrosI`
+r9=7^rosI`rosI`iT^IElK\6H#3l0gl2^)LqW\%\rosgjl2^)Ll2^)Ll2^eJ#QX,il2UhLl2^hK
+"9@]el2ZD#Ja.gOKBiI:J,~>
+J`c4ZrrC^6!<<&\!<<&\!<8/C#63iJs5rJDg#`M=k2u^+k5W*V!<<#[!<<#[!<:^6!<<&\p&>B]
+s5rJDk5XT+s8W)\s8W&[!<;oX!<<#[!<<#["97NGs8D'[s8D'[s8D'[s8D'bs5rJDk5XTDroO4\
+r8n"ZroO4\roO4\iT:4Ak2uR@#3Psck5XTDqW7eXroORfk5XTDk5XTDk5YDB#lj&ek5YJDk5YGC
+"TRWak5U"pJ`_OGKBE16J,~>
+JaVdjrrC[="p")Z!:BgerpBadrU'XcQgOtVmJuYTfBrbAmJuYTipHdHrU'XcrpKddrpBadrU'Xc
+mHsrSrpBadrpBadiU-[GrU'XcrU0[cs6fmes6fjds6fme!:Kgd%.4)qmd:&TmJuYTmK!7S!!)f^
+!!*#d!!*#d!!)uc!!*#d!!*#d!!)oa!!*#d!!*#d"p")Z!:K7TqX+Ofmd:)CmJu/4!<DQe!!)Hc
+!!)Hd!;c*`!<)?a!!;Qgmf!4`mf!1gmJuYTr9jOaJaS*WJaS-Xrr@Q~>
+Ja2LbrrC[9"p!rR!9sOarosI`rTX@_Qg+\Rl2^)LfBNJ=l2^)Lip$LDrTX@_rp'L`rosI`rTX@_
+mHOZOrosI`rosI`iT^CCrTX@_rTaC_s6BUas6BR`s6BUa!:'O`%-dfmlKS?Ll2^)Ll2^hK!!)fZ
+!!*#`!!*#`!!)u_!!*#`!!*#`!!)o]!!*#`!!*#`"p!rR!:&hLqW\7blKSB7l2]`,!<DEa!!)<_
+!!)<`!;bs\!<)3]!!;EclM^e\lM^bcl2^)Lr9F7]Ja.gOJa.jPrr@Q~>
+J`c4ZrrC[5#63iJs5s@]roO4\rT4+[Qf\GNk5XTDfB*59k5XTDioU7@rT4+[roX7\roO4\rT4+[
+mH+EKroO4\roO4\iT:.?rT4+[rT=.[s5s@]s5s=\s5s@]!9X:\%-ITik2u^Dk5XTDk5YGC!<;iV
+!<<&\!<<&\!<<#[!<<&\!<<&\!<;rY!<<&\!<<&\#63iJs5rJDqW8"^k2u^+k5X?$!WV<]rrD3[
+rrD3\s8(jXs8D*YrrV?_k5PDXk5PA_k5XTDr9""YJ`_OGJ`_RHrr@Q~>
+JaVdjrrCX<"T[rjmJm7dmJm7dmJm6Pmf!4:mf!4[mJm7cmJm7cmf*:dmf*:dmf!4dmf*:dmf*:d
+mJm7dmJm7QmKN[ZmJu\C!8m2E!<2Bd!<2Bk!:K7Tmd:)CrW!f'!:Bgemd:)CmJuYT!:BjTmJu\C
+!:K7Tp?i+bmd:)CmK!.P"p")Z!:K7Tq<eXkmd:)CmJuYTmJuYTq!J7bmJuYTh<t7B!:KIZr9i_J
+!:KO\JaS*WJaS9\rr@Q~>
+Ja2LbrrCX8"T[ffl2Uh`l2Uh`l2UgLlM^e6lM^eWl2Uh_l2Uh_lMgk`lMgk`lM^e`lMgk`lMgk`
+l2Uh`l2UhMl377Rl2^,7!8m&A!<26`!<26g!:&hLlKSB7rW!f#!9sOalKSB7l2^)L!9sRLl2^,7
+!:&hLp?Dh^lKSB7l2^_H"p!rR!:&hLq<A@glKSB7l2^)Ll2^)Lq!%t^l2^)Lh<Ot>!:'1Vr9EGF
+!:'7XJa.gOJa/!Trr@Q~>
+J`c4ZrrCX4"om`bk5YJ\joGG\joGFHk5PD2k5PDSjoGG[joGG[k5YJ\k5YJ\k5PD\k5YJ\k5YJ\
+joGG\joGGIjp(kJk5XT+s52r=s8M-\s8M-cs5rJDk2u^+rr3hts5s@]k2u^+k5XTDs5s@Dk5XT+
+s5rJDp>uSZk2u^+k5Y>@#63iJs5rJDq;r+ck2u^+k5XTDk5XTDpuV_Zk5XTDh<+_:!9WqRr9!2B
+!9X"TJ`_OGJ`_^Lrr@Q~>
+M=1?CrU'Xcr9aObn*^2UeaED:s6^'kmd:)CmJrXBp&OXNrrE&drrE&drrDl_o`,Wm!:K7Tmd:)C
+!:BjTmJm7TmK!7S!!*#d&ch@f!!)Eemd:)CmJu\C!:K7Tl0\ZSmJuYTh<kIImd:)CmK!4R!<DQe
+!!_ik!:BgemeZtmmJm7T!:BjT!:BjT!;,[^!:BjT!;Z$c!:BjT!;Gma!:BjT!<2Ec!;>j[!:B1S
+!<)<c!<)<e!:K:D!;u6b!<)<d!:Kdcs6fjdr9j7Ys6fjdJaS*WJaS-Xrr@Q~>
+M<b'?rTX@_r9=7^n*9oQea!,6s69dglKSB7l2[4:p&OXJrrE&`rrE&`rrDl[o`,Wi!:&hLlKSB7
+!9sRLl2UhLl2^hK!!*#`&ch4^!!)9alKSB7l2^,7!:&hLl08BOl2^)Lh<G1ElKSB7l2^eJ!<DEa
+!!_]g!9sOalMCPil2UhL!9sRL!9sRL!;,OZ!9sRL!;Ym_!9sRL!;Ga]!9sRL!<29_!;>^W!:B%O
+!<)0_!<)0a!:&k<!;u*^!<)0`!:'L_s6BR`r9EtUs6BR`Ja.gOJa.jPrr@Q~>
+M<=d;rT4([r8mtZn)jWMe`Ql2s5jOck2u^+k5Uh2pAa[Fs8W)\s8W)\s8VoWp&>Zes5rJDk2u^+
+s5s@Dk5YJDk5YGC!<<&\'*%+Vs8V6]k2u^+k5XT+s5rJDl/i-Kk5XTDh<"qAk2u^+k5YDB!WV<]
+rs%Wcs5s@]k55/ek5YJDs5s@Ds5s@Ds7GFVs5s@Ds7td[s5s@Ds7bXYs5s@Ds8M0[s7YUSs6\qK
+s8D'[s8D']s5rJ4s8;!Zs8D'\s5s:[s5s=\r9!_Qs5s=\J`_OGJ`_RHrr@Q~>
+MXCHErpBpimd:)C!<2Bf!:BjVmf*:?me-V_mJuYTl0\NOrpKddrpK^b"RZ9X!!*#drr<)f!<)<c
+!<)<c!;l0a!<)<c!<)<f!:K7TrU'XcrU'Xcm-aiQm-alRs6fmes6fmeo^;\Y!U]semJm7dmf*:e
+mf*7imJuYT!<)<r!:K7T!:Bgemd:&TmJuYTrU'dgmJuYTkO/<Lg[51EmJuYTqsOC_#4;KZ!:BjT
+q>gQ`rW)rcrW)NWr;cfa!!)ucrW)WZo)SdXp&OUM!!*#d!!*#d!!)l`rVurdqZ$`d!:BjamJm7d
+mf*7emf!1imJuYTmK!4R!s%`hmf!4amK<OX!:Bi<mXaeWmXss-!.Y~>
+MWt0ArosXelKSB7!<26b!9sRRlMgk;lLk2[l2^)Ll086Krp'L`rp'F^"R6!P!!*#`rr<)b!<)0_
+!<)0_!;l$]!<)0_!<)0b!:&hLrTX@_rTX@_m-=QMm-=TNs6BUas6BUao]lDU!U9[al2Uh`lMgka
+lMghel2^)L!<)0n!:&hL!9sOalKS?Ll2^)LrTXLcl2^)LkN`$HgZenAl2^)Lqs++[#3l3R!9sRL
+q>gQ\rW)r_rW)NSr;cf]!!)u_rW)WVo)SdTp&OUI!!*#`!!*#`!!)l\rVur`qZ$``!9sR]l2Uh`
+lMghalM^bel2^)Ll2^eJ!s%TdlM^e]l3%+P!9sQ8l@J5Ol@\C%!.Y~>
+MWOm=roO@ak2l[+!<2*^!9O:Nk5PG7k4\fWk5XTDl/i!GroX7\roX1Z"QoaHs8W)\s8N,^s8D'[
+s8D'[s81pYs8D'[s8D'^s5rJDrT4+[rT4+[m,n<Im,n?Js5s@]s5s@]o]H/Q!TsF]joGG\k5YJ]
+k5YGak5XTDs8D'js5rJDs5s@]k2u^Dk5XTDrT47_k5XTDkN;dDgZAY=k5XTDqr[kW#3PsJs5s@D
+qZ$TXrr;u[rr;QOrVuiY!<<#[rr;ZRoDegPpAaXE!<<&\!<<&\!<;oXrr2u\qu6c\s5s@YjoGG\
+k5YG]k5PAak5XTDk5YDB"97N`k5PDYjok_Hs5s?4k(2ZGk(Dgr!.Y~>
+MXCHErpBgfmK!7S!W_WgrpBadna?DWeaED:rU0Xbp?hn\rU0[crpKddrpKdds6^0nmJuYTmd:&T
+mf!4dmf*:dmJm7dmJm7dmJm7_mJm7dmJm7dmJm7cmJm7dmJm7dmJm7RmK<OX!:BjRmf*7jmJm7T
+!!)ZZ'*.G#mJm7TmJuYTmd:)C!!)Eemf!4`mKrs^!:BjT!:BjTmf!4`mf!4Ome-YZmJm7Imf!4c
+me-V\mcXZIme-V\me$SYmdgGPmf!4PmKN[ZmJu\C!;c*e!:BjT!:Kdc"mu?jmd:)PmMZ)nmJu\C
+!:K7Tmd:)CmJu\C!:K7T!:BjT!<2Bj!:K7Tmd:(+mXaeWmY($.!.Y~>
+MWt0ArosObl2^hK!W_KcrosI`n`p,Sea!,6rTa@^p?DVXrTaC_rp'L`rp'L`s69mjl2^)LlKS?L
+lM^e`lMgk`l2Uh`l2Uh`l2Uh[l2Uh`l2Uh`l2Uh_l2Uh`l2Uh`l2UhNl3%+P!9sRNlMghfl2UhL
+!!)ZV'*.:tl2UhLl2^)LlKSB7!!)9alM^e\l3[OV!9sRL!9sRLlM^e\lM^eKlLk5Vl2UhElM^e_
+lLk2XlKA6ElLk2XlLb/UlLP#LlM^eLl377Rl2^,7!;bsa!9sRL!:'L_"mQ'flKSBHl5BZfl2^,7
+!:&hLlKSB7l2^,7!:&hL!9sRL!<26f!:&hLlKSA#l@J5Ol@eI&!.Y~>
+MWOm=roO7^joGDC!W_?_roO1\n`KiOe`Ql2rT=+Zp>uATrT=.[roX7\roX7\s5jXfk5XTDk2u^D
+k5PD\k5YJ\joGG\joGG\joGGWjoGG\joGG\joGG[joGG\joGG\joGGJjok_Hs5s@Jk5YGbk5YJD
+s8V`R'E@4pk5YJDk5XTDk2u^+s8V6]k5PDXjpM.Ns5s@Ds5s@Dk5PDXk5PDGk4\iRjoGGAk5PD[
+k4\fTk32jAk4\fTk4ScQk4AWHk5PDHjp(kJk5XT+s8(j]s5s@Ds5s:["m5jbk2u^@jr49^k5XT+
+s5rJDk2u^+k5XT+s5rJDs5s@Ds8M-bs5rJDk2u\pk(2ZGk(Mms!.Y~>
+MXCHErpBgfmK!7S!W_WgrpBadna?DWf'WV?mJu\K!;Z$_!<2Bj!:BjT!:Bjdmf*:emf*7imJm7T
+mf!1imJm7T!!*#d#QX8mmd:)CmK!"L"p")Z!:K7TqsFXgmd:)CmJuVA"p")Z!:K7Tm-a`No^2tb
+md:&TmJuYTrpBsjmJuYT!:Kdcq<n4^!:K.QlL+WOrpBadrpBadk3hpCrpK4T!:Kdc!q$'VrW)NW
+rW)ud#6=2[!:K7Tmf!4Zmf!4cmK<OX!:Bj^mK<OX!:BjQmK<OX!:Bj`mL90amJm7T!!)Ee!:K7T
+rpBadqsOF`#jqZmmJuYTmK!7SrrE&d#QX;\!!)EemK!7S!!*#d!!%T<JaS*WL$ns@J,~>
+MWt0ArosObl2^hK!W_KcrosI`n`p,Sf'3>;l2^,C!;Ym[!<26f!9sRL!9sR`lMgkalMghel2UhL
+lM^bel2UhL!!*#`#QX,ilKSB7l2^SD"p!rR!:&hLqs"@clKSB7l2^29"p!rR!:&hLm-=HJo]c\^
+lKS?Ll2^)Lros[fl2^)L!:'L_q<IqZ!:&kMlK\?KrosI`rosI`k3DX?rp&qP!:'L_!pTdNrW)NS
+rW)u`#6=&S!:&hLlM^eVlM^e_l3%+P!9sRZl3%+P!9sRMl3%+P!9sR\l4!aYl2UhL!!)9a!:&hL
+rosI`qs+.\#jMBil2^)Ll2^hKrrE&`#QX/T!!)9al2^hK!!*#`!!%T8Ja.gOL$J[<J,~>
+MWOm=roO7^joGDC!W_?_roO1\n`KiOf&d)7k5XT;s7tdWs8M-bs5s@Ds5s@\k5YJ]k5YGak5YJD
+k5PAak5YJDs8W)\#lj&ek2u^+k5Y2<#63iJs5rJDqrS+_k2u^+k5Xf1#63iJs5rJDm,n3Fo]?GZ
+k2u^Dk5XTDroOFbk5XTDs5s:[q<%\V!9WVIlK8*GroO4\roO4\k2uC;roW\L!9X7[!p9OFrr;QO
+rr<#\#QNrKs5rJDk5PDRk5PD[jok_Hs5s@Vjok_Hs5s@Ijok_Hs5s@Xjph@Qk5YJDs8V6]s5rJD
+roO4\qr[nX#j20ek5XTDk5YGCs8W)\#lj&Ls8V6]k5YGC!<<&\!<7W4J`_OGL$&C8J,~>
+M=1?Cs6]jerpBgfmK!7S!!)QWq#K7=#QX;\!:K7TmdC&So^3Rsmd:)CmJu\C!:K7Tmd:)C!:BjT
+!:BgemeQq`mJm7dmK<OX!:Bj[mK<OX!:Bj_mK<OX!:BjRmJm7dmJm7dmJm7Rmem.XmJm7dmK!=U
+rW)laiW/lDrW)-L$39JomJu\C!:K7TiU6[FqsFOdmJu\R!!)Hc!!)Hc!"A8q!:BjT!:BjT!:BjZ
+mL]He!:BjTmJuYTmJuYTmJuYTp[/FimJuYTmJu\C!:K7TqX+Ofmd:)CmJuS@rW)f_!!*#d!W_ZV
+rW!,i!!)Ee!<2Bd!;u9`!!;Qg!<2Ed!<2Ed!<;Ke!<;Hi!:BjT!<)<c!<)<c!.jQhmXae\mf*9;~>
+M<b'?s69RarosObl2^hK!!)QSq#K79#QX/T!:&hLlK\?Ko]d:olKSB7l2^,7!:&hLlKSB7!9sRL
+!9sOalM:M\l2Uh`l3%+P!9sRWl3%+P!9sR[l3%+P!9sRNl2Uh`l2Uh`l2UhNlMU_Tl2Uh`l2^nM
+rW)l]iW/l@rW)-H$39>kl2^,7!:&hLiTgCBqs"7`l2^,J!!)<_!!)<_!"A,m!9sRL!9sRL!9sRV
+l4F$]!9sRLl2^)Ll2^)Ll2^)LpZ`.el2^)Ll2^,7!:&hLqW\7blKSB7l2^/8rW)f[!!*#`!W_NN
+rW!,e!!)9a!<26`!;u-\!!;Ec!<29`!<29`!<;?a!<;<e!9sRL!<)0_!<)0_!.jEdl@J5TlMgj7~>
+M<=d;s5j:]roO7^joGDC!!)QOq#K75#lj&Ls5rJDk2u[Co]@%kk2u^+k5XT+s5rJDk2u^+s5s@D
+s5s@]k5,,XjoGG\jok_Hs5s@Sjok_Hs5s@Wjok_Hs5s@JjoGG\joGG\joGGJk5G>PjoGG\joPME
+rr;oYirAo<rr;0D$NK8gk5XT+s5rJDiTC.>qrS"\k5XTBrrD3[rrD3[rs\&is5s@Ds5s@Ds5s@R
+jq7XUs5s@Dk5XTDk5XTDk5XTDpZ;nak5XTDk5XT+s5rJDqW8"^k2u^+k5Xc0rr;iW!<<&\!rqEF
+rr3/as8V6]s8M-\s8;$XrrV?_s8M0\s8M0\s8V6]s8V3as5s@Ds8D'[s8D'[s+0<`k(2ZLk5PF3~>
+MXCHErpBgfmK!7S!W_WgrpBadna?2QhX1@DrpBadrpKdd"7?0W!;,[d!:BjT!:BjT!:Bjcmf!1d
+mf!1fmJu\Q!!DWhmK!1QrW)QXrW)]\rW)<Q!!)uc!!)uc!!)QWo`4gU!W_ZVkQ(PKrVurdrW)ud
+"9@iimK!4R"9@iimJuM>$39M^!:K7TmJuYTiU-gKmJuYTrU'dgmd:)CrW!#f!:Kgd'(,bfmJuYT
+!:BgemJu\C!:K7Tp?i1dmd:)CmJu\CrW!2k!:K7Tmd:)NmKN[ZmJu\C!<2Bd!<2Bd!;u6b!<2Bd
+!<2Bd!:]FM!<;He!<2Ed!!;Qgmem+gmJuYT!<2Be!:KO\p[/"]rU'XcrU'Xcr9aObrU'XcrU'Xc
+JaS*WJaSNcrr@Q~>
+MWt0ArosObl2^hK!W_KcrosI`n`ooMhWb(@rosI`rp'L`"6omO!;,O`!9sRL!9sRL!9sR_lM^b`
+lM^bbl2^,I!!DKdl2^bIrW)QTrW)]XrW)<M!!)u_!!)u_!!)QSo`4gQ!W_NNkQ(PGrVur`rW)u`
+"9@]el2^eJ"9@]el2^)6$39AV!:&hLl2^)LiT^OGl2^)LrTXLclKSB7rW!#b!:'O`'']J^l2^)L
+!9sOal2^,7!:&hLp?Dn`lKSB7l2^,7rW!2g!:&hLlKSBFl377Rl2^,7!<26`!<26`!;u*^!<26`
+!<26`!:]:I!<;<a!<29`!!;EclMU\cl2^)L!<26a!:'7XpZ__YrTX@_rTX@_r9=7^rTX@_rTX@_
+Ja.gOJa/6[rr@Q~>
+MWOm=roO7^joGDC!W_?_roO1\n`KWIhW=h<roO4\roX7\"6TXGs7GF\s5s@Ds5s@Ds5s@[k5PA\
+k5PA^k5XTArr_E`k5YAArr;TPrr;`Trr;?I!<<#[!<<#[!<;TOp&FjM!rqEFkl:SCrr2u\rr<#\
+"TRWak5YDB"TRWak5X].$NK8Ns5rJDk5XTDiT::Ck5XTDrT47_k2u^+rr3&^s5s=\''B5Vk5XTD
+s5s@]k5XT+s5rJDp>uY\k2u^+k5XT+rr35cs5rJDk2u^>jp(kJk5XT+s8M-\s8M-\s8;!Zs8M-\
+s8M-\s7#1Es8V3]s8M0\rrV?_k5G;_k5XTDs8M-]s5s%TpZ;JUrT4+[rT4+[r8n"ZrT4+[rT4+[
+J`_OGJ`_sSrr@Q~>
+MXCHErpBgfmK!7S!W_WgrpBadna?DWg$Sh?rU'XcrpKdd"RZ9XmJunIrW)rcrVurdl2UhPp&P!X
+p&P-\p&O"<!!)uc#6=2[!:BjTme["Qmf!4amf!4dmem+emJm7bmMGrl!:BjT!:Bgemd:)CmJu\C
+!:K7Tmd:)@mJm7dmJm7dmf!4FmKim]mJu\C!:K7TrpKdds6fme$gmupmd:&Tmd:&Tmf!1imJuYT
+mK!7S!!)f^!!*#d!<DQ\!<2Bd!;l0a!<2Bk!:BjT!:K7TrU'XcrpBadrU'XcrU'XcmI'rRn*U/U
+rpBadrpBadrpBgfmdC&Ss6]jejmE*KrpBadrpBadJaS*WJaSKbrr@Q~>
+MWt0ArosObl2^hK!W_KcrosI`n`p,Sg$/P;rTX@_rp'L`"R6!Pl2^JArW)r_rVur`l2UhLp&P!T
+p&P-Xp&O"8!!)u_#6=&S!9sRLlMCSMlM^e]lM^e`lMU\al2Uh^l50Nd!9sRL!9sOalKSB7l2^,7
+!:&hLlKSB8l2Uh`l2Uh`lM^eBl3RIUl2^,7!:&hLrp'L`s6BUa$gI]llKS?LlKS?LlM^bel2^)L
+l2^hK!!)fZ!!*#`!<DEX!<26`!;l$]!<26g!9sRL!:&hLrTX@_rosI`rTX@_rTX@_mHXZNn*0lQ
+rosI`rosI`rosOblK\?Ks69RajlugGrosI`rosI`Ja.gOJa/3Zrr@Q~>
+MWOm=roO7^joGDC!W_?_roO1\n`KiOg#`;7rT4+[roX7\"QoaHk5Y)9rr;u[rr2u\lMgkHpAb$P
+pAb0TpAa%4!<<#[#QNrKs5s@Dk552Ik5PDYk5PD\k5G;]k5YJZjr"-\s5s@Ds5s@]k2u^+k5XT+
+s5rJDk2u^0joGG\joGG\k5PD>jpD(Mk5XT+s5rJDroX7\s5s@]$g.Khk2u^Dk2u^Dk5PAak5XTD
+k5YGC!<;iV!<<&\!WV<Ts8M-\s81pYs8M-cs5s@Ds5rJDrT4+[roO4\rT4+[rT4+[mH4EJn)aWM
+roO4\roO4\roO:^k2u[Cs5j=]jlQRCroO4\roO4\J`_OGJ`_pRrr@Q~>
+MXCHErpBpimd:)C!<2Bf!:BjVmf*:7mJm7dmJm7dmJm7_mdL2VmcslQmf!4Xmf!4\mf!4?mJm7d
+mJm7dmJm7dme["RmK<OX!:BjdmK3IW!:Kdc"RZ9X!!)uc%05ha!!)Ee!:Bgemd:)Smf*:dmJm7d
+mJm7SmJm7cme-YCmJm7dmJm7dmf*:cmJm7dmed%bmf!4dmeQq_mf*:cmJm7`mJm7cmJm7cmem.a
+mJm7cmJm7cmf*:dmf*:dmf*:cmJm7cmJm7cmJm7OmK<OX!:BjUmKN[ZmJu\C!;u9b!!_ikmJm7T
+!<)<c!<)<c!:T=[!:K7Tmd:(PmJm7cmJm7cmJm7cmJm7amJm7cmJm7cmJm6<mXae]mf*9;~>
+MWt0ArosXelKSB7!<26b!9sRRlMgk3l2Uh`l2Uh`l2Uh[lL4cRlK\HMlM^eTlM^eXlM^e;l2Uh`
+l2Uh`l2Uh`lMCSNl3%+P!9sR`l2q%O!:'L_"R6!P!!)u_%05\Y!!)9a!9sOalKSBKlMgk`l2Uh`
+l2UhOl2Uh_lLk5?l2Uh`l2Uh`lMgk_l2Uh`lMLV^lM^e`lM:M[lMgk_l2Uh\l2Uh_l2Uh_lMU_]
+l2Uh_l2Uh_lMgk`lMgk`lMgk_l2Uh_l2Uh_l2UhKl3%+P!9sRQl377Rl2^,7!;u-^!!_]gl2UhL
+!<)0_!<)0_!:T1W!:&hLlKSAHl2Uh_l2Uh_l2Uh_l2Uh]l2Uh_l2Uh_l2Ug8l@J5UlMgj7~>
+MWOm=roO@ak2l[+!<2*^!9O:Nk5PG/joGG\joGG\joGGWk4&BNk3N'Ik5PDPk5PDTk5PD7joGG\
+joGG\joGG\k552Jjok_Hs5s@\jobYGs5s:["QoaHs8W&[%KGSQs8V6]s5s@]k2u^Ck5YJ\joGG\
+joGGKjoGG[k4\i;joGG\joGG\k5YJ[joGG\k5>5Zk5PD\k5,,Wk5YJ[joGGXjoGG[joGG[k5G>Y
+joGG[joGG[k5YJ\k5YJ\k5YJ[joGG[joGG[joGGGjok_Hs5s@Mjp(kJk5XT+s8;$Zrs%Wck5YJD
+s8D'[s8D'[s6o(Ss5rJDk2u]@joGG[joGG[joGG[joGGYjoGG[joGG[joGF4k(2ZMk5PF3~>
+M=1?CrU'Xcr9aObn*^2Udd@)8rU'XcrU'Xcp?qn[rpKacrU'mjmJuYTmJu\K!;u6f!:BjT!;5a_
+!:BjT!;Z$c!:BjT!8?iQ!:K7Tmd:)C!:BgemJm7T!!)TX%fl%c!:K7TmJu\C!:Bgemem.cmK3IW
+mK!7S!!*#drrE)e!W_WgrpKddrpBadrU'Xcp[/"]rU'XcrU'XcqX4=_j6cmIrU'XcrU'XcrpBad
+rpKdds6fjd!q$'Vp&O=E"9@iimJuhG!!*#d!!*#d!W_WgrpKdds6fmerpBadl0\`Umd:)CmJu_D
+"p"&kmJuYTrU0[c#OVT[!!)HT!<2Bd!<2Bd!:B1W!:BjT!2T#_!<2Ed!<;Ke!<2Bd!;Z$_!<2Ed
+!<;Hg!:BjcmJm7cmJm7cmJm6<mXaemmf*9;~>
+M<b'?rTX@_r9=7^n*9oQdcpf4rTX@_rTX@_p?MVWrp'I_rTXUfl2^)Ll2^,C!;u*b!9sRL!;5U[
+!9sRL!;Ym_!9sRL!8?]M!:&hLlKSB7!9sOal2UhL!!)TT%fkn[!:&hLl2^,7!9sOalMU__l2q%O
+l2^hK!!*#`rrE)a!W_Kcrp'L`rosI`rTX@_pZ__YrTX@_rTX@_qWe%[j6?UErTX@_rTX@_rosI`
+rp'L`s6BR`!pTdNp&O=A"9@]el2^D?!!*#`!!*#`!W_Kcrp'L`s6BUarosI`l08HQlKSB7l2^;<
+"p!ogl2^)LrTaC_#O2<S!!)<L!<26`!<26`!:B%S!9sRL!2Sl[!<29`!<;?a!<26`!;Ym[!<29`
+!<;<c!9sR_l2Uh_l2Uh_l2Ug8l@J5elMgj7~>
+M<=d;rT4([r8mtZn)jWMdcLQ0rT4+[rT4+[p?)ASroX4[rT4@bk5XTDk5XT;s8;!^s5s@Ds7PLW
+s5s@Ds7td[s5s@Ds4ZTIs5rJDk2u^+s5s@]k5YJDs8VZP&-(eSs5rJDk5XT+s5s@]k5G>[jobYG
+k5YGC!<<&\s8W,]!rqE_roX7\roO4\rT4+[pZ;JUrT4+[rT4+[qW@eWj5p@ArT4+[rT4+[roO4\
+roX7\s5s=\!p9OFpAa@="TRWak5Y#7!<<&\!<<&\!rqE_roX7\s5s@]roO4\l/i3Mk2u^+k5Xo4
+#63ick5XTDrT=.[#Nl'Ks8V6Ds8M-\s8M-\s6\qOs5s@Ds.ncWs8M0\s8V6]s8M-\s7tdWs8M0\
+s8V3_s5s@[joGG[joGG[joGF4k(2Z]k5PF3~>
+JaVdjrrBb#&ch>"mJuYTmJuYTmd:)CmJm7Tq>^N`qu?cc!<2Bj!:K7Tmd:)LmKN[ZmJu\C!;l0g
+!:K7Tmd:)/mK<OX!:Bjdmf!1jmJm7TmJm7ZmJm7dmJm7dmJm7dmdgGXmf*:dmf*:dmJm7MmJm7d
+mJm7dmJm7`mK<OX!:Bj3mK`g\mJu\C!:K:S!9`bW!:BjTmJu\C!:BjZmKN[ZmJu\C!<2Bo!:K7T
+mJm7T!:K7Tl0\NOrpBadrpBadn*^/TrpBpimd:&Tmf!4dmKim]mJu\C!:K7TlgF`P!U]semf*:d
+mf*:dmf*9nmL'$_mJuYT!:BjTmK!"L#lsD]!:Bgemd:)SmK*CV!<2Bd!<2Bd!.jQhm[!;@!.Y~>
+Ja2LbrrBat&ch1sl2^)Ll2^)LlKSB7l2UhLq>^N\qu?c_!<26f!:&hLlKSBDl377Rl2^,7!;l$c
+!:&hLlKSB'l3%+P!9sR`lM^bfl2UhLl2UhVl2Uh`l2Uh`l2Uh`lLP#TlMgk`lMgk`l2UhIl2Uh`
+l2Uh`l2Uh\l3%+P!9sR/l3ICTl2^,7!:&kK!9`VS!9sRLl2^,7!9sRVl377Rl2^,7!<26k!:&hL
+l2UhL!:&hLl086KrosI`rosI`n*9lProsXelKS?LlM^e`l3RIUl2^,7!:&hLlg"HL!U9[alMgk`
+lMgk`lMgjjl3dUWl2^)L!9sRLl2^SD#ls8U!9sOalKSBKl2gtN!<26`!<26`!.jEdlB^`8!.Y~>
+J`c4ZrrBap'*%+ok5XTDk5XTDk2u^+k5YJDqYpQXr;Qf[s8M-bs5rJDk2u^<jp(kJk5XT+s81p_
+s5rJDk2u]tjok_Hs5s@\k5PAbk5YJDk5YJRjoGG\joGG\joGG\k4AWPk5YJ\k5YJ\joGGEjoGG\
+joGG\joGGXjok_Hs5s@+jp;"Lk5XT+s5rJCs6&MOs5s@Dk5XT+s5s@Rjp(kJk5XT+s8M-gs5rJD
+k5YJDs5rJDl/i!GroO4\roO4\n)jWLroOCak2u^Dk5PD\jpD(Mk5XT+s5rJDlfS3H!TsF]k5YJ\
+k5YJ\k5YIfjpV4Ok5XTDs5s@Dk5Y2<$30/Ms5s@]k2u^CjoYSFs8M-\s8M-\s+0<`k*G00!.Y~>
+JaVdjrrBe$%05ha!:K7Tmd:)CmJm7dmJm7dmK!=UrVurdrW)udrr</h!:BjdmJm7dmJm7_mJm7d
+mJm7dmJm7cmJm7dmJm7dmJm7@mf!4cmeQq_mf*:\mJm7cmK`g\mJuYTmd:)Rmem+dmJtf*"p")Z
+!:K7TrU('omd:)C!!)HT!!)EerU'XcrU'Xcg?o=KmJuYTmd:)C!:BjMmJm7dmLK<c!:BjTmJu\C
+!:BjTmK!4R"9@iimK!1Q#lsAnmJm7T!:BjOmJm7cmJm7cmJm7ZmcjfPmK<OX!:BjbmJm7cmJm7c
+mJm7dme-Y\mf*:emf*:emf*9lmKim]!:BgemJuYTp$N1fmJuYT!:K7Tmd:)SmKN[ZmJu\C!.jQh
+mZm5?!.Y~>
+Ja2LbrrBdu%05\Y!:&hLlKSB7l2Uh`l2Uh`l2^nMrVur`rW)u`rr</d!9sR`l2Uh`l2Uh[l2Uh`
+l2Uh`l2Uh_l2Uh`l2Uh`l2Uh<lM^e_lM:M[lMgkXl2Uh_l3ICTl2^)LlKSBJlMU\`l2]B""p!rR
+!:&hLrTXdklKSB7!!)<L!!)9arTX@_rTX@_g?K%Gl2^)LlKSB7!9sRIl2Uh`l43m[!9sRLl2^,7
+!9sRLl2^eJ"9@]el2^bI#ls5jl2UhL!9sRKl2Uh_l2Uh_l2UhVlKSBLl3%+P!9sR^l2Uh_l2Uh_
+l2Uh`lLk5XlMgkalMgkalMgjhl3RIU!9sOal2^)Lp$)nbl2^)L!:&hLlKSBKl377Rl2^,7!.jEd
+lBUZ7!.Y~>
+J`c4ZrrBdq%KGSQs5rJDk2u^+k5YJ\joGG\joPMErr2u\rr<#\s8N2`s5s@\joGG\joGGWjoGG\
+joGG\joGG[joGG\joGG\joGG8k5PD[k5,,Wk5YJTjoGG[jp;"Lk5XTDk2u^Bk5G;\k5Wuo#63iJ
+s5rJDrT4Ogk2u^+s8V6Ds8V6]rT4+[rT4+[g?&eCk5XTDk2u^+s5s@EjoGG\jq%LSs5s@Dk5XT+
+s5s@Dk5YDB"TRWak5YAA$30/fk5YJDs5s@GjoGG[joGG[joGGRk3E!Hjok_Hs5s@ZjoGG[joGG[
+joGG\k4\iTk5YJ]k5YJ]k5YIdjpD(Ms5s@]k5XTDp#ZY^k5XTDs5rJDk2u^Cjp(kJk5XT+s+0<`
+k*>*/!.Y~>
+JaVdjrrBh%!!*#d&-2+umJuYTmd:&Tmd:&TmdBuQ#4;KZ!!)HTrVuue!<)<c!<)<c!;l0a!<)<c
+!<)<f!:K7TrU'XcrU'XcrU'XcrU'mjmJu\C!:BjcmJm7[md:)KmJm7cmJm7cmJm7]mK<OX!:Bj9
+mKN[Z!:BjT!<)?c!<;Ke!<;Ke!<;Ke!<;Hl!:BjT!:K7TqsFFarU'XcrU'Xcm-aiQs6^'kmd:)C
+mJuM>$io\qmd:)CmJuYTmK!7S!!*#d!!*#d!<DQe!;c-_!<;Kd!6jm1!;u6e!:BjTrW)f_rW)f_
+!!*#d!!*#d!!)i_rW)rc!W_ZVqZ$]c!!'4jrW)udrW)QXrW)ud"9@iimK!1Q"9@iimJqh+JaScj
+rr@Q~>
+Ja2LbrrBh!!!*#`&-1tql2^)LlKS?LlKS?LlK\9I#3l3R!!)<LrVuua!<)0_!<)0_!;l$]!<)0_
+!<)0b!:&hLrTX@_rTX@_rTX@_rTXUfl2^,7!9sR_l2UhWlL"ZGl2Uh_l2Uh_l2UhYl3%+P!9sR5
+l377R!9sRL!<)3_!<;?a!<;?a!<;?a!<;<h!9sRL!:&hLqs".]rTX@_rTX@_m-=QMs69dglKSB7
+l2^)6$ioPmlKSB7l2^)Ll2^hK!!*#`!!*#`!<DEa!;c![!<;?`!6ja-!;u*a!9sRLrW)f[rW)f[
+!!*#`!!*#`!!)i[rW)r_!W_NNqZ$]_!!'4frW)u`rW)QTrW)u`"9@]el2^bI"9@]el2ZD#Ja/Kb
+rr@Q~>
+J`c4ZrrBgr!<<&\&HCnmk5XTDk2u^Dk2u^Dk2uUA#3PsJs8V6Drr3#]s8D'[s8D'[s81pYs8D'[
+s8D'^s5rJDrT4+[rT4+[rT4+[rT4@bk5XT+s5s@[joGGSk3i9CjoGG[joGG[joGGUjok_Hs5s@1
+jp(kJs5s@Ds8D*[s8V6]s8V6]s8V6]s8V3ds5s@Ds5rJDqrRnYrT4+[rT4+[m,n<Is5jOck2u^+
+k5X].%0,Jik2u^+k5XTDk5YGC!<<&\!<<&\!WV<]s8(mWs8V6\s30X)s8;!]s5s@Drr;iWrr;iW
+!<<&\!<<&\!<;lWrr;u[!rqEFqu6`[s8T:brr<#\rr;TPrr<#\"TRWak5YAA"TRWak5U"pJ``3Z
+rr@Q~>
+JaVdjrrBk&!!)ucrrE&drrE#c!!*#do`5$[!!)uc!s%cW!<)<c!<)<c!93DH!<2Bk!:K7T!:K7T
+rpBadnF$8Ur9jOana6AWrpBadrpBadp[/4cmd:)CmJt`(rW)rc!!*#drrE)err<Vu!:K7Tmd:&T
+mJuYT!:K7Tq<e4_rpBadrpBadn*]lL!U]semJm7MmLfNf!:BjT!:K7Tmd:)C!:K7TmcOStmK<OX
+!:Bjbmf!1imJuYTmdBcKrU'jimd:)CmK!(N"9@iimK!7S!s%`hme[!imdU8XmK!4RoDnaUrW%N;
+JaS`irr@Q~>
+Ja2LbrrBk"!!)u_rrE&`rrE#_!!*#`o`5$W!!)u_!s%WO!<)0_!<)0_!938D!<26g!:&hL!:&hL
+rosI`nETuQr9F7]n`g)SrosI`rosI`pZ_q_lKSB7l2];urW)r_!!*#`rrE)arr<Vq!:&hLlKS?L
+l2^)L!:&hLq<@q[rosI`rosI`n*9TH!U9[al2UhIl4O*^!9sRL!:&hLlKSB7!:&hLlK8/pl3%+P
+!9sR^lM^bel2^)LlK\'CrTXRelKSB7l2^YF"9@]el2^hK!s%TdlMCRelL=iTl2^eJoDnaQrW%N7
+Ja/Harr@Q~>
+J`c4ZrrBjs!<<#[s8W)\s8W&[!<<&\p&G'S!<<#["97NGs8D'[s8D'[s5N/@s8M-cs5rJDs5rJD
+roO4\nE0`Mr9""Yn`BiOroO4\roO4\pZ;\[k2u^+k5Womrr;u[!<<&\s8W,]s8NYms5rJDk2u^D
+k5XTDs5rJDq;q\WroO4\roO4\n)j?D!TsF]joGGEjq@^Vs5s@Ds5rJDk2u^+s5rJDk3)cljok_H
+s5s@Zk5PAak5XTDk2uC;rT4=ak2u^+k5Y8>"TRWak5YGC"97N`k551ak4/HPk5YDBo`+dMrr7Q3
+J``0Yrr@Q~>
+JaVdjrrB"crW)KV!!*#d!!*#d!!(sF%05ha!:K7T!:K7Tmd:)EmK<OX!:BjdmK<OX!:BjWmf*7p
+mJu\C!:BjTmJuYTrpBadrpBadrpBadf^AD4s6]mfmf!1emK!+OrW!)h!:K7Tp[/4cmd:)CmJuP?
+r;cfa#6=/lmd:)C!<)<c!:K:S!<2Bh!:BjT!<2Bh!:BjT!<2Ec!;c-_!<;Kd!7(!9!:K7TmdB]I
+r9jOaq!J7bmJuYTq<eFemd:)CmK!7SrVurdr;`tfrW)udrW!8m!:BjT!:K7T!<2EN!.jQhm[*AA
+!.Y~>
+Ja2LbrrB"_rW)KR!!*#`!!*#`!!(sB%05\Y!:&hL!:&hLlKSB=l3%+P!9sR`l3%+P!9sRSlMghl
+l2^,7!9sRLl2^)LrosI`rosI`rosI`f]r,0s69UblM^bal2^\GrW!)d!:&hLpZ_q_lKSB7l2^,7
+r;cf]#6=#hlKSB7!<)0_!:K.O!<26d!9sRL!<26d!9sRL!<29_!;c![!<;?`!7'j5!:&hLlK\!A
+r9F7]q!%t^l2^)Lq<A.alKSB7l2^hKrVur`r;`tbrW)u`rW!8i!9sRL!:&hL!<29J!.jEdlBgf9
+!.Y~>
+J`c4ZrrB"[rr;NN!<<&\!<<&\!<;!>%KGSQs5rJDs5rJDk2u^5jok_Hs5s@\jok_Hs5s@Ok5YGh
+k5XT+s5s@Dk5XTDroO4\roO4\roO4\f]Ml,s5j@^k5PA]k5Y;?rr3,`s5rJDpZ;\[k2u^+k5X`/
+rVuiY#QNrdk2u^+s8D'[s6f%Ks8M-`s5s@Ds8M-`s5s@Ds8M0[s8(mWs8V6\s3Ba1s5rJDk2u=9
+r9""YpuV_Zk5XTDq;qn]k2u^+k5YGCrr2u\rVs"^rr<#\rr3;es5s@Ds5rJDs8M0Fs+0<`k*P61
+!.Y~>
+JaVdjrrB%d"9@iimJueF"p")Z!:K7ThsULE#OVT[!!)Eemf!4UmLB6bmJu\C!:BjTmJu\C!:fLS
+!!VcjmJuYTrpBadrU'XcrU'XceaED:r9aXemJu\R!;Q!\!!2Kfp$Mq_mJuYTlL"cTmJuYTqX+=`
+rpBadrpBadna>uKr9jOarpBmhmJuYTr9ajkmJuYT!:BjT!7:-6!<2Bd!<2Bd!<2Ec!!2KfrpBad
+rpBmhmJuYTq!S+]q<e4_rpBgfmdBTFZL/;)mJuYT!:BjT!:BjT!!)HT!<2Ed!!VcjmJu\CrW)f_
+rW%N;JaS`irr@Q~>
+Ja2LbrrB%`"9@]el2^A>"p!rR!:&hLhs14A#O2<S!!)9alM^eQl4*gZl2^,7!9sRLl2^,7!:f@O
+!!VWfl2^)LrosI`rTX@_rTX@_ea!,6r9=@al2^,J!;PjX!!2?bp$)Y[l2^)LlKSKPl2^)LqW\%\
+rosI`rosI`n`o]Gr9F7]rosUdl2^)Lr9=Rgl2^)L!9sRL!7:!2!<26`!<26`!<29_!!2?brosI`
+rosUdl2^)Lq!.hYq<@q[rosOblK[m>ZK`#%l2^)L!9sRL!9sRL!!)<L!<29`!!VWfl2^,7rW)f[
+rW%N7Ja/Harr@Q~>
+J`c4ZrrB%\"TRWak5Xu6#63iJs5rJDhrat=#Nl'Ks8V6]k5PDMjpqFRk5XT+s5s@Dk5XT+s7,7K
+rrqQbk5XTDroO4\rT4+[rT4+[e`Ql2r8n+]k5XTBs7kaTrrM9^p#ZDWk5XTDlK/6Lk5XTDqW7eX
+roO4\roO4\n`KHCr9""YroO@`k5XTDr8n=ck5XTDs5s@Ds3Tm.s8M-\s8M-\s8M0[rrM9^roO4\
+roO@`k5XTDpu_SUq;q\WroO:^k2u46ZK;c!k5XTDs5s@Ds5s@Ds8V6Ds8M0\rrqQbk5XT+rr;iW
+rr7Q3J``0Yrr@Q~>
+JaVdjrrCC5!!)uc!!)uc!!)f^%05ha!:BjTmJuYTmd:)SmKim]mJm7T!:K7TrU'Xcq<e@cmJuYT
+qX+=`rU'XcrU'Xcn*^&Qs6fjdnEp8VrpBadrpBadrpBadrpBadna?;T"RZ6imJukH!!)uc!!)uc
+!!(sF"9@iimK!1Qp&G*\p&OdRrW)6O"p")Z!:K7TqX+Ofmd:)CmJuVAlMq(U!:K7TrpC-omd:)C
+!!)Eemd:)'mJm7cmJm7cmKWa[!:BjT!!)uc#QX8mmd:)CmK!4Rp&P*[!!)uc!!)uc!<DQe!!)Hc
+!3bf6!:K7TmJm7T!:K7TmJuYTmJm7TmJm7TmJu\C!!)EemK!1Q"9@iimJqh+JaScjrr@Q~>
+Ja2LbrrCC1!!)u_!!)u_!!)fZ%05\Y!9sRLl2^)LlKSBKl3RIUl2UhL!:&hLrTX@_q<A(_l2^)L
+qW\%\rTX@_rTX@_n*9cMs6BR`nEKuRrosI`rosI`rosI`rosI`n`p#P"R5sel2^G@!!)u_!!)u_
+!!(sB"9@]el2^bIp&G*Xp&OdNrW)6K"p!rR!:&hLqW\7blKSB7l2^29lMq(Q!:&hLrosjklKSB7
+!!)9alKSAtl2Uh_l2Uh_l3@=S!9sRL!!)u_#QX,ilKSB7l2^eJp&P*W!!)u_!!)u_!<DEa!!)<_
+!3bZ2!:&hLl2UhL!:&hLl2^)Ll2UhLl2UhLl2^,7!!)9al2^bI"9@]el2ZD#Ja/Kbrr@Q~>
+J`c4ZrrCC-!<<#[!<<#[!<;iV%KGSQs5s@Dk5XTDk2u^CjpD(Mk5YJDs5rJDrT4+[q;qh[k5XTD
+qW7eXrT4+[rT4+[n)jNIs5s=\nE'`NroO4\roO4\roO4\roO4\n`KcL"Qoaak5Y&8!<<#[!<<#[
+!<;!>"TRWak5YAApAY-TpAagJrr;9G#63iJs5rJDqW8"^k2u^+k5Xf1li.+Ms5rJDroOUgk2u^+
+s8V6]k2u]ljoGG[joGG[jp1qKs5s@Ds8W&[#lj&ek2u^+k5YDBpAb-S!<<#[!<<#[!WV<]rrD3[
+s0(Q.s5rJDk5YJDs5rJDk5XTDk5YJDk5YJDk5XT+s8V6]k5YAA"TRWak5U"pJ``3Zrr@Q~>
+JaVdjrr<)f!<)<c!<)<c!8?i@!<2Bd!<2Bd!;>gg!:K7T!:K7T!:K7TrpBadrpBsjmJuYTmK!7S
+!!)c]rW)`]!!*#d!!*#d!!)QWmf<%K!!)uc#QX;\!:BjTmK!4R!!)`\p&G-]!:fIW!<2Bd!<2Bd
+!9W\L!<)?c!<;Ke!!)H[!;c-W!;l3X!:T=U!<2Bd!<2Bd!;c*d!:BjT!:9+V!:BjT!<2Ec!;u9a
+!!2KfrpBadrpBgfmK!7SrrE)errE&d!!(+."p")Z!:K7Tr9aObrpBadrpBadqX4=_n*U8XmJu\P
+!3tql!<2Ed!<;Ke!<2Be!:Kgd"RZ9X!!*#d#lsD]!!)Eemd:)SmKN[ZmJu\C!.jQhmZm5?!.Y~>
+Ja2Lbrr<)b!<)0_!<)0_!8?]<!<26`!<26`!;>[c!:&hL!:&hL!:&hLrosI`ros[fl2^)Ll2^hK
+!!)cYrW)`Y!!*#`!!*#`!!)QSmf<%G!!)u_#QX/T!9sRLl2^eJ!!)`Xp&G-Y!:f=S!<26`!<26`
+!9WPH!<)3_!<;?a!!)<W!;c!S!;l'T!:T1Q!<26`!<26`!;bs`!9sRL!:8tR!9sRL!<29_!;u-]
+!!2?brosI`rosObl2^hKrrE)arrE&`!!(+*"p!rR!:&hLr9=7^rosI`rosI`qWe%[n*0uTl2^,H
+!3teh!<29`!<;?a!<26a!:'O`"R6!P!!*#`#ls8U!!)9alKSBKl377Rl2^,7!.jEdlBUZ7!.Y~>
+J`c4Zrr<)^s8D'[s8D'[s4ZT8s8M-\s8M-\s7YR_s5rJDs5rJDs5rJDroO4\roOFbk5XTDk5YGC
+!<;fUrr;cU!<<&\!<<&\!<;TOn,N(C!<<#[#lj&Ls5s@Dk5YDB!<;cTpAY0Us7,4Os8M-\s8M-\
+s5rGDs8D*[s8V6]rrD3Ss8(mOs81sPs6o(Ms8M-\s8M-\s8(j\s5s@Ds6SkNs5s@Ds8M0[s8;$Y
+rrM9^roO4\roO:^k5YGCs8W,]s8W)\!<:.&#63iJs5rJDr8n"ZroO4\roO4\qW@eWn)a`Pk5XT@
+s0:\ds8M0\s8V6]s8M-]s5s=\"QoaHs8W)\$30/Ms8V6]k2u^Cjp(kJk5XT+s+0<`k*>*/!.Y~>
+JaVdjrrE)e!!*#d!!*#d!!([>"p")Z!:K7To^3"cmd:)CmJu\C!<2Bd!<)<l!:K7TmJm7TmK!+O
+p&P!X"p")Z!:K7Tm-aTJs6]jeddHo2n*UA[md:)CmK!(N!!)uc!!)uc!!)c]!!*#d!!*#d!!*#d
+!!*#dr;Zrf!:Bj`mK!=Ur;cHWrW)<Q!!)uc!!)uc!!)l`rW)<Q$io_`!:K7TmJuYTmK!7S"9@ii
+mK!4R!!)uc!!)uc!!)uc!!)uc!!(10!!*#d!!*#d!!*#d!!)uc!!)uc!!)rb"9@iimJueF!W_ZV
+qZ$]c!!'@n!!)uc!!)uc!<DQ]!<)<i!:BjTmJm7dmK*CV!<2Bd!<2Bd!.jQhm[!;@!.Y~>
+Ja2LbrrE)a!!*#`!!*#`!!([:"p!rR!:&hLo]c__lKSB7l2^,7!<26`!<)0h!:&hLl2UhLl2^\G
+p&P!T"p!rR!:&hLm-=<Fs69Radd$W.n*1)WlKSB7l2^YF!!)u_!!)u_!!)cY!!*#`!!*#`!!*#`
+!!*#`r;Zrb!9sR\l2^nMr;cHSrW)<M!!)u_!!)u_!!)l\rW)<M$ioSX!:&hLl2^)Ll2^hK"9@]e
+l2^eJ!!)u_!!)u_!!)u_!!)u_!!(1,!!*#`!!*#`!!*#`!!)u_!!)u_!!)r^"9@]el2^A>!W_NN
+qZ$]_!!'@j!!)u_!!)u_!<DEY!<)0e!9sRLl2Uh`l2gtN!<26`!<26`!.jEdlB^`8!.Y~>
+J`c4ZrrE)]!<<&\!<<&\!<:^6#63iJs5rJDo]?J[k2u^+k5XT+s8M-\s8D'ds5rJDk5YJDk5Y;?
+pAb$P#63iJs5rJDm,n'Bs5j=]dcUB*n)aiSk2u^+k5Y8>!<<#[!<<#[!<;fU!<<&\!<<&\!<<&\
+!<<&\rVlu^s5s@XjoPMErVuKOrr;?I!<<#[!<<#[!<;oXrr;?I%0,JPs5rJDk5XTDk5YGC"TRWa
+k5YDB!<<#[!<<#[!<<#[!<<#[!<:4(!<<&\!<<&\!<<&\!<<#[!<<#[!<;uZ"TRWak5Xu6!rqEF
+qu6`[s8TFf!<<#[!<<#[!WV<Us8D'as5s@Dk5YJ\joYSFs8M-\s8M-\s+0<`k*G00!.Y~>
+JaVdjrrE&d"p")Z!:K7Tf'WY@mJuYTo'QMYmem+dmK!.P!!)uc!s%`hmem.amJm7amf!4[mK<OX
+!:BjRmK!=UqZ$ce!:BgeddH`-o'QV\mJuYTp[/"]rpBadrpBadp$N%bmJm7TmJm7cmK3IW!:Kgd
+"RZ9XmK!1Q"9@lX!:Kgdp$Mq_mJuYThsU1<na6AWrpBadrpC6rmd:)CmJuYTmd:)CmJsT]!!)uc
+!!)uc!!)NV"p")Z!:K7ToBlSYrpKdds6fmes6fmeV=+$Ws6]jerU'XcrU'XcrU'XcrU'XcJaS*W
+QgXkRJ,~>
+Ja2LbrrE&`"p!rR!:&hLf'3A<l2^)Lo'-5UlMU\`l2^_H!!)u_!s%TdlMU_]l2Uh]lM^eWl3%+P
+!9sRNl2^nMqZ$ca!9sOadd$H)o'->Xl2^)LpZ__YrosI`rosI`p$)b^l2UhLl2Uh_l2q%O!:'O`
+"R6!Pl2^bI"9@`P!:'O`p$)Y[l2^)Lhs0n8n`g)SrosI`rossnlKSB7l2^)LlKSB7l2\0U!!)u_
+!!)u_!!)NR"p!rR!:&hLoBH;Urp'L`s6BUas6BUaV<[aSs69RarTX@_rTX@_rTX@_rTX@_Ja.gO
+Qg4SNJ,~>
+J`c4ZrrE&\#63iJs5rJDf&d,8k5XTDo&]uQk5G;\k5Y>@!<<#["97N`k5G>YjoGGYk5PDSjok_H
+s5s@JjoPMEqu6f]s5s@]dcU3%o&^)Tk5XTDpZ;JUroO4\roO4\p#ZMZk5YJDk5YJ[jobYGs5s=\
+"QoaHk5YAA"TRWHs5s=\p#ZDWk5XTDhraY4n`BiOroO4\roO^jk2u^+k5XTDk2u^+k5VdM!<<#[
+!<<#[!<;QN#63iJs5rJDoB$&QroX7\s5s@]s5s@]V<7LOs5j=]rT4+[rT4+[rT4+[rT4+[J`_OG
+Qfe;JJ,~>
+JaVdjrrE#c"9@iimJtc)rW)HUqZ-H[!!*#d!W_ZVrVuue!<2Bd!;l0e!:BjT!;>j[!:9.F!7U?=
+!:K7Tmed(Pmf!4ZmKN[ZmJu\C!;#U]!:BjT!;c*g!:K7Tmd:&TrpBadrpC'mmd:&TmJuYT!;Gmc
+!:K7Tmd:)2mem+dmK!4R!!)][!!)uc#6=2[!:BjT!<2Bd!<2Bd!<2Bd!1E6T!<2Bd!<2Bd!;5a[
+!<2Ed!<2Ed!<2Ed!2f/d!:BjTrW%N;JaS*Wr9jRbJ,~>
+Ja2LbrrE#_"9@]el2]?!rW)HQqZ-HW!!*#`!W_NNrVuua!<26`!;l$a!9sRL!;>^W!:9"B!7U39
+!:&hLlMLYLlM^eVl377Rl2^,7!;#IY!9sRL!;bsc!:&hLlKS?LrosI`rosdilKS?Ll2^)L!;Ga_
+!:&hLlKSB*lMU\`l2^eJ!!)]W!!)u_#6=&S!9sRL!<26`!<26`!<26`!1E*P!<26`!<26`!;5UW
+!<29`!<29`!<29`!2f#`!9sRLrW%N7Ja.gOr9F:^J,~>
+J`c4ZrrE#["TRWak5Wrnrr;KMqu?KS!<<&\!rqEFrr3#]s8M-\s81p]s5s@Ds7YUSs6Sn>s3p*5
+s5rJDk5>8Hk5PDRjp(kJk5XT+s7>@Us5s@Ds8(j_s5rJDk2u^DroO4\roOOek2u^Dk5XTDs7bX[
+s5rJDk2u^"k5G;\k5YDB!<;`S!<<#[#QNrKs5s@Ds8M-\s8M-\s8M-\s-`!Ls8M-\s8M-\s7PLS
+s8M0\s8M0\s8M0\s/+o\s5s@Drr7Q3J`_OGr9""ZJ,~>
+JaVdjrrE#cr;Zld!86f6!;Q!R!;u6c!:KL[qsFXgmd:)CmK!.Pp&OXN!!*#dqu?`brW)ud!!(R;
+!!*#drr<&erVuue!;5a]!:K:K!;Psb!:BjT!:fLV!;c*d!:K7T!<2Bd!<)<p!:BjTmJuYTmJu\C
+!!)i_!!*#d!!*#d!!(mDrW!#f!!*#d!!)ES!!)uc#QX;\!:BjTmK!4R!!&MV!!)uc!!)uc!!%uG
+#QX;\!!)EemJqh+JaS*WrU0[cJ,~>
+Ja2LbrrE#_r;Zl`!86Z2!;PjN!;u*_!:'4Wqs"@clKSB7l2^_Hp&OXJ!!*#`qu?`^rW)u`!!(R7
+!!*#`rr<&arVuua!;5UY!:&kC!;Pg^!9sRL!:f@R!;bs`!:&hL!<26`!<)0l!9sRLl2^)Ll2^,7
+!!)i[!!*#`!!*#`!!(m@rW!#b!!*#`!!)EO!!)u_#QX/T!9sRLl2^eJ!!&MR!!)u_!!)u_!!%uC
+#QX/T!!)9al2ZD#Ja.gOrTaC_J,~>
+J`c4Z!<E/uk5G;\k5X,spAapMoDeaN!WV<Ts81p_s5rJDk2u^@k4\iFjoGG\k5>5Zk5PD\joGG3
+joGG\k5YG]k5PA]k5Y,:!rqEFpAapM"TRWak5Xu6rr;iW"TRWHs8W)\!<<#[%KGSjk2u^+s5s@D
+k5YJWjoGG\joGG\joGG<k5PA^k5YJ\joGGKjoGG[jp;"Lk5XTDk2u^BjoGFNjoGG[joGG[joGF?
+jp;"Lk5YJDs5s?4k(2ZGk5FHB!.Y~>
+JaVdjo)RD1rW)HUqZ-BY!s%`hmem+fmJuYTqsFFarpBadrpBadq!S+]md:&TrU0:XfBrV=rU'pk
+mJm7T!!)Eep$Me[rpBdemf!4Xmf!4Yme-Y\mJm7cmJm7cmJm7`mJm7cmJm7cmJm7amJm7cmJm7c
+mJm7FmKim]mJu\C!:K7TJaS*Wo^2\ZrpBsjmd:&TmJqh+JaS*WrpKddJ,~>
+Ja2Lbo)RD-rW)HQqZ-BU!s%TdlMU\bl2^)Lqs".]rosI`rosI`q!.hYmcjcPrTa"TfBN>9rTXXg
+l2UhL!!)9ap$)MWrosLalM^eTlM^eUlLk5Xl2Uh_l2Uh_l2Uh\l2Uh_l2Uh_l2Uh]l2Uh_l2Uh_
+l2UhBl3RIUl2^,7!:&hLJa.gOo]cDVros[flKS?Ll2ZD#Ja.gOrp'L`J,~>
+J`c4ZrrD`lfB3)4nE0WJpZ;SXk5XTBrr_E`k5Y>@!<<&\!<<&\!<;iVrr;EK!<<#[o`*P*!<<#[
+#lj&es5s@]k5Y,:!<<&\!WV<]s7>CPs7GIIs8V3]s8D'[s8D'[s8(jXs8D'[s8D'[s81pYs8D'[
+s8D'[s5<#Gs5rJDk2u^+k5U"pJ`cUe!<<&\#63iJs8V6]J`_OGJ`csorr@Q~>
+JaVdjrr</h!:K:R!7^E>!:BjT!:oOY!:Kdc!U]s^mem+emJu\S!;l0a!<)<c!<)<c!;c*d!:BjT
+!:0(Q!!DWh!:KdccgD,?mJuYTmJuYTmJuqJ#QX;\!!)EemK!%Mp&OaQrW'(g!!*#drr<&erW%N;
+JaW0u!!*#drrE)e"9@iimJqh+JaS*Ws6fmeJ,~>
+Ja2Lbrr</d!:&kJ!7^9:!9sRL!:oCU!:'L_!U9[ZlMU\al2^,K!;l$]!<)0_!<)0_!;bs`!9sRL
+!:/qM!!DKd!:'L_cfti;l2^)Ll2^)Ll2^MB#QX/T!!)9al2^VEp&OaMrW'(c!!*#`rr<&arW%N7
+Ja2mm!!*#`rrE)a"9@]el2ZD#Ja.gOs6BUaJ,~>
+J`c4Zrr</`s5rJBs4$06s5s@Ds75:Qs5s:[!TsFVk5G;]k5XTCs81pYs8D'[s8D'[s8(j\s5s@D
+s6JhIrr_E`s5s:[cfPT7k5XTDk5XTDk5Y,:#lj&Ls8V6]k5Y5=pAadIrr9+_!<<&\s8N)]rr7Q3
+J`cUe!<<&\s8W,]"TRWak5U"pJ`_OGs5s=]J,~>
+JaVdjrrE)e"p"&kmJuYTf'W_Bmd:)CmJunI#lsD]!:K7Tmd:)QmdC/DmKN[ZmJu\C!:B4S!<;Ke
+!!)Hd!!2KfdI%DCmJu\C!:BjTmJuYTp$N(cmJuYT!:K7Tp$VeZna6M[mJuYTYO2AjrU'[dmem-:
+mXafrmJm7cmJm7cmJm6<mXaeWmK2eV!.Y~>
+Ja2LbrrE)a"p!ogl2^)Lf'3G>lKSB7l2^JA#ls8U!:&hLlKSBIlL+`@l377Rl2^,7!:B(O!<;?a
+!!)<`!!2?bdHV,?l2^,7!9sRLl2^)Lp$)e_l2^)L!:&hLp$2MVn`g5Wl2^)LYNc)frTXC`lMU^6
+l@J6jl2Uh_l2Uh_l2Ug8l@J5Ol2p5N!.Y~>
+J`c4ZrrE)]#63ick5XTDf&d2:k2u^+k5Y)9$30/Ms5rJDk2u^Ak3r?<jp(kJk5XT+s6\tKs8V6]
+rrD3\rrM9^dH1l;k5XT+s5s@Dk5XTDp#ZP[k5XTDs5rJDp#c8Rn`BuSk5XTDYN>ibrT4.\k5G=2
+k(2[bjoGG[joGG[joGF4k(2ZGjoXZF!.Y~>
+JaVdjrrE&dr;clc!!([>!!*#d!!*#d!!)`\$NTV_!!)HT!!)HT!;Z'^!<;Hf!:Kgdlg=`QrpBad
+rpBadn*^2UrpKacs6fme!U]rtmf!1emK!7S!!)c]"9@iimJukH"p")Z!:K7TXmYl_JaS*WJaS*W
+JaVairr@Q~>
+Ja2LbrrE&`r;cl_!!([:!!*#`!!*#`!!)`X$NTJW!!)<L!!)<L!;YpZ!<;<b!:'O`lfnHMrosI`
+rosI`n*9oQrp'I_s6BUa!U9ZplM^bal2^hK!!)cY"9@]el2^G@"p!rR!:&hLXm5T[Ja.gOJa.gO
+Ja2Iarr@Q~>
+J`c4ZrrE&\rVuo[!<:^6!<<&\!<<&\!<;cT$ifAOs8V6Ds8V6Ds7tgVs8V3^s5s=\lfJ3IroO4\
+roO4\n)jZMroX4[s5s@]!TsElk5PA]k5YGC!<;fU"TRWak5Y&8#63iJs5rJDXlf?WJ`_OGJ`_OG
+J`c1Yrr@Q~>
+JaVdjoDmV5!!)uc!!)uc!!)f^%05ha!:BjTmJuYTmd:)Pmf!1lmJuYT!:BjT!:B1S!<)<c!<)<c
+!:&tP!<2Bd!<2Bd!57go!<;He!;Z$e!:K7Tmd:)SmJm7cmJm7dmf*:emJm7dmJm6emf!3;mXaeW
+mXaeWmc<g9!.Y~>
+Ja2LboDmV1!!)u_!!)u_!!)fZ%05\Y!9sRLl2^)LlKSBHlM^bhl2^)L!9sRL!:B%O!<)0_!<)0_
+!:&hL!<26`!<26`!57[k!<;<a!;Yma!:&hLlKSBKl2Uh_l2Uh`lMgkal2Uh`l2UgalM^d7l@J5O
+l@J5OlK%71!.Y~>
+J`c4Z!!)]lg?&D8rT4+[rT4+[puW%ck2u^+s5rJDk5XT+s81sXrs7cek5YJDs5s@KjoGG[joGG[
+joGGHjoGG\joGG\joGFpk4\iTjoGGWjp(kJk5XT+s8M-\s8D'[s8M0\s8V3]s8M-\s/P5\s+0<`
+k(2ZGk(2[Uk5PF3~>
+JaVdjrr<,g!:KdcrU'Xc[-eA'md:)CmJm7TmJu\C!6sp3!<)<c!<)<c!4qUt!;#UY!<2Bd!<2Bd
+!<2Bd!<2Bh!:K7T!<2Bd!<)<c!3GSk!:BjT!9!8F!<)<c!<)<c!.jQhmXaeWmZHr;!.Y~>
+Ja2Lbrr<,c!:'L_rTX@_[-A)#lKSB7l2UhLl2^,7!6sd/!<)0_!<)0_!4qIp!;#IU!<26`!<26`
+!<26`!<26d!:&hL!<26`!<)0_!3GGg!9sRL!9!,B!<)0_!<)0_!.jEdl@J5OlB1B3!.Y~>
+J`c4Zrr<,_s5s:[rT4+[[,qhtk2u^+k5YJDk5XT+s39[+s8D'[s8D'[s17@ls7>@Qs8M-\s8M-\
+s8M-\s8M-`s5rJDs8M-\s8D'[s/b>cs5s@Ds5<#>s8D'[s8D'[s+0<`k(2ZGk)ng+!.Y~>
+JaVdjrrE)e"9@iimJsKZ!!*#d#6=2[!!)HT!<2Bd!.jS:mK<OX!:Bj[mJm7cmJm7cmJm7dmKN[Z
+mJu\C!2Jrd!:K7Tmd:)5mJm7dmJm7dmJm6<mXaeWmXaefmf*9;~>
+Ja2LbrrE)a"9@]el2\'R!!*#`#6=&S!!)<L!<26`!.jG6l3%+P!9sRWl2Uh_l2Uh_l2Uh`l377R
+l2^,7!2Jf`!:&hLlKSB-l2Uh`l2Uh`l2Ug8l@J5Ol@J5^lMgj7~>
+J`c4ZrrE)]"TRWak5V[J!<<&\#QNrKs8V6Ds8M-\s+0>2jok_Hs5s@SjoGG[joGG[joGG\jp(kJ
+k5XT+s.e]\s5rJDk2u^%joGG\joGG\joGF4k(2ZGk(2ZVk5PF3~>
+JaVdjrr<;l!:K7Tmd:(\mJm7cmKWa[!:K7TmK!4R!!(41!!)uc!!)uc!!'h&"p")Z!:K7TkO&HQ
+mJuYTU[A*^rpBadrpBadi9gdLmd:)CmJqh+JaS*WJaSTerr@Q~>
+Ja2Lbrr<;h!:&hLlKSATl2Uh_l3@=S!:&hLl2^eJ!!(4-!!)u_!!)u_!!'h""p!rR!:&hLkNW0M
+l2^)LUZqgZrosI`rosI`i9CLHlKSB7l2ZD#Ja.gOJa/<]rr@Q~>
+J`c4Zrr<;ds5rJDk2u]LjoGG[jp1qKs5rJDk5YDB!<:7)!<<#[!<<#[!<9js#63iJs5rJDkN2pI
+k5XTDUZMRVroO4\roO4\i8t7Dk2u^+k5U"pJ`_OGJ``$Urr@Q~>
+JaVdjrW)rc!!*#d!!'%e!!)uc!!)uc!!(72!!*#d!!*#d!!'h&!!*#d!!*#d!!)3MrW&_]!!)uc
+!!)uc!!(sF"9@iimJqh+JaS*WJaSQdrr@Q~>
+Ja2LbrW)r_!!*#`!!'%a!!)u_!!)u_!!(7.!!*#`!!*#`!!'h"!!*#`!!*#`!!)3IrW&_Y!!)u_
+!!)u_!!(sB"9@]el2ZD#Ja.gOJa/9\rr@Q~>
+J`c4Zrr<'!roO4\roO4\Woa<]rT4+[rT4+[biSp*roO4\roO4\^ubXsroO4\roO4\kN;dDUZMRV
+rT4+[rT4+[i8t1Bk5XTDJ`_OGJ`_OGNop?AJ,~>
+JaVdjrrE#c!!)uc!!'%e!!*#d!!*#d!!(10#6=/l!:K7T!<)<c!64F,!<)<c!<)<c!:9.I!.jS7
+mf!3;mXaeWmXaecmf*9;~>
+Ja2LbrrE#_!!)u_!!'%a!!*#`!!*#`!!(1,#6=#h!:&hL!<)0_!64:(!<)0_!<)0_!:9"E!.jG3
+lM^d7l@J5Ol@J5[lMgj7~>
+J`c4Z!<E/ujoGG[joGF]joGG\joGG\joGG(jp1qKs8V6Ds8W&[!<:($!<<#[!<<#[!<;EJpA]^+
+qW@eWJ`_OGJ`_OGNTU6@J,~>
+JaVdjrrA\Z"p")Z!:K7TaR064mJuYTmK!7S!!'\"!!)uc!!)uc!!)QWrW%N;qX4%WJaS*WJaS*W
+Om`5LJ,~>
+Ja2LbrrA\V"p!rR!:&hLaQ`s0l2^)Ll2^hK!!'[s!!)u_!!)u_!!)QSrW%N7qWdbSJa.gOJa.gO
+Om;rHJ,~>
+J`c4ZrrA\R#63iJs5rJDaQ<^,k5XTDk5YGC!<9^o!<<#[!<<#[!<;TOrr7Q3qW@MOJ`_OGJ`_OG
+OllZDJ,~>
+JaVdjrrAYY"9@iimJt8prW)ud!s%cW!6=L-!<)<c!<)<f!:K7TrpBadrpBadna6M[mJuYTJaW:#
+rW%N;JaS*WJaSNcrr@Q~>
+Ja2LbrrAYU"9@]el2\ihrW)u`!s%WO!6=@)!<)0_!<)0b!:&hLrosI`rosI`n`g5Wl2^)LJa3!p
+rW%N7Ja.gOJa/6[rr@Q~>
+J`c4ZrrAYQ"TRWak5WH`rr<#\"97NGs2X7%s8D'[s8D'^s5rJDroO4\roO4\n`BuSk5XTDJ`c^h
+rr7Q3J`_OGJ`_sSrr@Q~>
+JaVdjrrAVXrW((.o`2u!!!*#d!!*#d!!)uc"p")Z!:K7Tna6S]md:)CmJqh+q<e@cmJuYTK^Jg?
+rU'XcrU'XcJaS*WJaSilrr@Q~>
+Ja2LbrrAVTrW((*o`2tr!!*#`!!*#`!!)u_"p!rR!:&hLn`g;YlKSB7l2ZD#q<A(_l2^)LK^&O;
+rTX@_rTX@_Ja.gOJa/Qdrr@Q~>
+J`c4ZrrAVPrr:+&p&E"n!<<&\!<<&\!<<#[#63iJs5rJDn`C&Uk2u^+k5U"pq;qh[k5XTDK]W:7
+rT4+[rT4+[J`_OGJ``9\rr@Q~>
+JaVdjrrAb\p&N5&rVurdrW'k("p")Z!:K7TqsFRemJuYTna6AWrpBadrpBadJaWF'"p")Z!:K7T
+K^Jg?rpBadrpBadJaS*WJaSfkrr@Q~>
+Ja2LbrrAbXp&N5"rVur`rW'k$"p!rR!:&hLqs":al2^)Ln`g)SrosI`rosI`Ja3-t"p!rR!:&hL
+K^&O;rosI`rosI`Ja.gOJa/Ncrr@Q~>
+J`c4ZrrAbTpA`7srr2u\rr9mu#63iJs5rJDqrS%]k5XTDn`BiOroO4\roO4\J`cjl#63iJs5rJD
+K]W:7roO4\roO4\J`_OGJ``6[rr@Q~>
+JaVdjrrAVXrW't+o`3#""9@iimK!(NrW)KV!!)uc!!)uc!!&na!!)uc!!)uc!!)'I!!*#d!!*#d
+!!(10!!)uc!!)uc!!(%,"p")Z!:K7TJaS*WJaScjrr@Q~>
+Ja2LbrrAVTrW't'o`3"s"9@]el2^YFrW)KR!!)u_!!)u_!!&n]!!)u_!!)u_!!)'E!!*#`!!*#`
+!!(1,!!)u_!!)u_!!(%("p!rR!:&hLJa.gOJa/Kbrr@Q~>
+J`c4ZrrAVPrr:"#p&E%o"TRWak5Y8>rr;NN!<<#[!<<#[!<8qY!<<#[!<<#[!<;*A!<<&\!<<&\
+!<:4(!<<#[!<<#[!<:($#63iJs5rJDJ`_OGJ``3Zrr@Q~>
+JaVdjrrAYY"9@iimJt>r"T[uY!:K:S!5\+&!;u9Y!06II!<2Bd!<2Bd!9<JI!<)<c!<)<c!;l0a
+!<)<c!<)<c!8HoA!<2Bd!<2Bd!6":.!:BjT!.jQhmXaeimf*9;~>
+Ja2LbrrAYU"9@]el2\oj"T[iQ!:&kK!5[t"!;u-U!06=E!<26`!<26`!9<>E!<)0_!<)0_!;l$]
+!<)0_!<)0_!8Hc=!<26`!<26`!6".*!9sRL!.jEdl@J5alMgj7~>
+J`c4ZrrAYQ"TRWak5WNb"om`Is5rJCs2!jss8;$Qs,Q4As8M-\s8M-\s5W5As8D'[s8D'[s81pY
+s8D'[s8D'[s4cZ9s8M-\s8M-\s2=%&s5s@Ds+0<`k(2ZYk5PF3~>
+JaVdjrrA\Z"p")Z!:K7Tb3f60rpBsjmJuYTmJt8pp&G-]!<2Eb!<)<c!<)<c!4_Fs!<)<c!<)<c
+!9ihT!:K7Tmd:)%mJm7dmJm7dmJm7?mKN[ZmJu\C!5e1'!.jQhmXaehmf*9;~>
+Ja2LbrrA\V"p!rR!:&hLb3As,ros[fl2^)Ll2\ihp&G-Y!<29^!<)0_!<)0_!4_:o!<)0_!<)0_
+!9i\P!:&hLlKSArl2Uh`l2Uh`l2Uh;l377Rl2^,7!5e%#!.jEdl@J5`lMgj7~>
+J`c4ZrrA\R#63iJs5rJDb2r^(roOFbk5XTDk5WH`pAY0Us8M0Zs8D'[s8D'[s1%1ks8D'[s8D'[
+s6/SLs5rJDk2u]jjoGG\joGG\joGG7jp(kJk5XT+s2*pts+0<`k(2ZXk5PF3~>
+JaVdjrrA_[!!*#d!!*#d!!(72!!)ucrrE)err<)f!6"='!<2Bd!<2Bi!:BjT!!*#d!!*#d!!'Iq
+!!*#d!!*#d!!)0L"9@iimJtQ#"p")Z!:K7TfBrbAmJuYT`U<F"JaS*WJaSilrr@Q~>
+Ja2LbrrA_W!!*#`!!*#`!!(7.!!)u_rrE)arr<)b!6"1#!<26`!<26e!9sRL!!*#`!!*#`!!'Im
+!!*#`!!*#`!!)0H"9@]el2],p"p!rR!:&hLfBNJ=l2^)L`Tm-sJa.gOJa/Qdrr@Q~>
+J`c4ZrrA_S!<<&\!<<&\!<::*!<<#[s8W,]s8N,^s2='ts8M-\s8M-as5s@Ds8W)\!<<&\!<9Li
+!<<&\!<<&\!<;3D"TRWak5W`h#63iJs5rJDfB*59k5XTD`THmoJ`_OGJ``9\rr@Q~>
+JaVdjrrAb\!!)uc!!)uc!!(+.!!*#d!!*#d!!("+rW!)h!:K7TrpC3qmd:)CmJm7TmJu\C!4;.u
+!:K7Tmd:)9mf!41mK<OX!:Bj;mf!4%mf!3;mXaeWmZR#<!.Y~>
+Ja2LbrrAbX!!)u_!!)u_!!(+*!!*#`!!*#`!!("'rW!)d!:&hLrospmlKSB7l2UhLl2^,7!4;"q
+!:&hLlKSB1lM^e-l3%+P!9sR7lM^e!lM^d7l@J5OlB:H4!.Y~>
+J`c4ZrrAbT!<<#[!<<#[!<:.&!<<&\!<<&\!<:%#rr3,`s5rJDroO[ik2u^+k5YJDk5XT+s0Unm
+s5rJDk2u^)k5PD)jok_Hs5s@3k5PCrk5PC3k(2ZGk*"m,!.Y~>
+JaVdjrr@W<hX1@DrU'XcrU'Xca6j'1md:)CrW)rc!!*#d!!*#drr</h!:BimmK<OX!:BjMme-Y,
+mf!4=me-Y"mK<OX!:Bi<mXaeWmZ[)=!.Y~>
+Ja2Lbrr@W8hWb(@rTX@_rTX@_a6Ed-lKSB7rW)r_!!*#`!!*#`rr</d!9sQil3%+P!9sRIlLk5(
+lM^e9lLk4sl3%+P!9sQ8l@J5OlBCN5!.Y~>
+J`c4Zrr@W4hW=h<rT4+[rT4+[a6!O)k2u^+rr;u[!<<&\!<<&\s8N2`s5s?ejok_Hs5s@Ek4\i$
+k5PD5k4\hojok_Hs5s?4k(2ZGk*+s-!.Y~>
+JaVdjrr@W<RdL.UrpK[as6]jerU'XcrU0UaYjVJjipQdGcgLK,f^A_=_X7U.md:)CmJqh+JaS*W
+Pj\POJ,~>
+Ja2Lbrr@W8Rd'kQrp'C]s69RarTX@_rTa=]Yj22fip-LCcg(3(f]rG9_Wh=*lKSB7l2ZD#Ja.gO
+Pj88KJ,~>
+J`c4Zrr@W4RcXVMroX.Ys5j=]rT4+[rT=(YYibrbio^7?cfXs$f]N25_WD(&k2u^+k5U"pJ`_OG
+PihuGJ,~>
+JaVdjrr@W<S*g:Wme-YXme-Xjme-YDmK<OX!:Bj2mf!1emK!4R!!)uc!!)!G"9@iimJt2n!!*#d
+!!*#d!!%T<JaS*WQ1"YPJ,~>
+Ja2Lbrr@W8S*C"SlLk5TlLk4flLk5@l3%+P!9sR.lM^bal2^eJ!!)u_!!)!C"9@]el2\cf!!*#`
+!!*#`!!%T8Ja.gOQ0SALJ,~>
+J`c4Zrr@W4S)sbOk4\iPk4\hbk4\i<jok_Hs5s@*k5PA]k5YDB!<<#[!<;$?"TRWak5WB^!<<&\
+!<<&\!<7W4J`_OGQ0/)HJ,~>
+JaVdjrr@W<Q1"VOoBuSXYjVJjjR*3Pmd:)CmJtQ#"p"&kmJuYTrpBadrpBadiU-mMmd:)CmJt8p
+!!)uc!!)uc!!%T<JaS*WQL=bQJ,~>
+Ja2Lbrr@W8Q0S>KoBQ;TYj22fjQZpLlKSB7l2],p"p!ogl2^)LrosI`rosI`iT^UIlKSB7l2\ih
+!!)u_!!)u_!!%T8Ja.gOQKnJMJ,~>
+J`c4Zrr@W4Q0/)GoB-&PYibrbjQ6[Hk2u^+k5W`h#63ick5XTDroO4\roO4\iT:@Ek2u^+k5WH`
+!<<#[!<<#[!<7W4J`_OGQKJ2IJ,~>
+JaVdjrr@W<QL4kUmJuYTp$Mq_mJuYTZL.hqmJuYTk3`3LrpBadrpBadd-_ADmd:)CmJuYTmd:)C
+mJu56!!*#d!!*#d!!%T<JaS*WJaUqRrr@Q~>
+Ja2Lbrr@W8QKeSQl2^)Lp$)Y[l2^)LZK_Pml2^)Lk3;pHrosI`rosI`d-;)@lKSB7l2^)LlKSB7
+l2]f.!!*#`!!*#`!!%T8Ja.gOJa1YJrr@Q~>
+J`c4Zrr@W4QKA>Mk5XTDp#ZDWk5XTDZK;;ik5XTDk2l[DroO4\roO4\d,ki<k2u^+k5XTDk2u^+
+k5XE&!<<&\!<<&\!<7W4J`_OGJ`bABrr@Q~>
+JaVdjrr@W<QgP%Xmd:)CmK!"L"p")Z!:K7T[-e+umd:)CmJuJ=!!)uc!!)uc!!(I8!!*#d!!*#d
+"p"&kmJuYTiU-[GrU'XcrU'XcJaS*WJaS*WddI,8J,~>
+Ja2Lbrr@W8Qg+bTlKSB7l2^SD"p!rR!:&hL[-@hqlKSB7l2^&5!!)u_!!)u_!!(I4!!*#`!!*#`
+"p!ogl2^)LiT^CCrTX@_rTX@_Ja.gOJa.gOdd$i4J,~>
+J`c4Zrr@W4Qf\MPk2u^+k5Y2<#63iJs5rJD[,qSmk2u^+k5XZ-!<<#[!<<#[!<:L0!<<&\!<<&\
+#63ick5XTDiT:.?rT4+[rT4+[J`_OGJ`_OGdcUQ0J,~>
+JaVdjrr@W<R-jqSrpBadrpBadq<e4_rpBadrpBad[dF+qrpBadrpBadi9gRFrU'XcrU'Xcna6AW
+rU'XcrU'Xcp[/"]rU'XcrU'[dmf!4EmJm7cmJm7cmJm6<mXaeWmXafSmf*9;~>
+Ja2Lbrr@W8R-FYOrosI`rosI`q<@q[rosI`rosI`[d!hmrosI`rosI`i9C:BrTX@_rTX@_n`g)S
+rTX@_rTX@_pZ__YrTX@_rTXC`lM^eAl2Uh_l2Uh_l2Ug8l@J5Ol@J6KlMgj7~>
+J`c4Zrr@W4R-"DKroO4\roO4\q;q\WroO4\roO4\[cRSiroO4\roO4\i8t%>rT4+[rT4+[n`BiO
+rT4+[rT4+[pZ;JUrT4+[rT4.\k5PD=joGG[joGG[joGF4k(2ZGk(2[Ck5PF3~>
+JaVdjrr@W<RI1%TrU'XcrU'XcqsFFarU'XcrU'Xc\F'=srU'XcrU'Xci9gRFrpBadrpBadn*U/U
+rpBadrpBadmdBcKj6cmIrpBadrpBadJaS*WJaS*WdI.#7J,~>
+Ja2Lbrr@W8RHabPrTX@_rTX@_qs".]rTX@_rTX@_\EX%orTX@_rTX@_i9C:BrosI`rosI`n*0lQ
+rosI`rosI`mcsKGj6?UErosI`rosI`Ja.gOJa.gOdH^`3J,~>
+J`c4Zrr@W4RH=MLrT4+[rT4+[qrRnYrT4+[rT4+[\E3ekrT4+[rT4+[i8t%>roO4\roO4\n)aWM
+roO4\roO4\mcO6Cj5p@AroO4\roO4\J`_OGJ`_OGdH:H/J,~>
+JaVdjrr@W<JaS<]"p")Z!:K7TmHt/Ymd:)CmJuM>rW(gC"p")Z!:K7TJaS*WJaS*Wd-go6J,~>
+Ja2Lbrr@W8Ja/$U"p!rR!:&hLmHOlUlKSB7l2^)6rW(g?"p!rR!:&hLJa.gOJa.gOd-CW2J,~>
+J`c4Zrr@W4J`_aM#63iJs5rJDmH+WQk2u^+k5X].rr:j;#63iJs5rJDJ`_OGJ`_OGd,t?.J,~>
+JaVdjrr@W<JaS9\"9@iimJuS@"9@iimJuM>"9@iimJu56$39M^!:BjT!:K7TJaS*WJaS*WddI,8
+J,~>
+Ja2Lbrr@W8Ja/!T"9@]el2^/8"9@]el2^)6"9@]el2]f.$39AV!9sRL!:&hLJa.gOJa.gOdd$i4
+J,~>
+J`c4Zrr@W4J`_^L"TRWak5Xc0"TRWak5X]."TRWak5XE&$NK8Ns5s@Ds5rJDJ`_OGJ`_OGdcUQ0
+J,~>
+JaVdjrr@W<qsFFarU'XcrU'XcR-jqSrU'XcrU'XcMXLHDl0eNNl0\`Umd:)CmJu56!W_ZVrW)ud
+!!%T<JaS*WJaUqRrr@Q~>
+Ja2Lbrr@W8qs".]rTX@_rTX@_R-FYOrTX@_rTX@_MX(0@l0A6Jl08HQlKSB7l2]f.!W_NNrW)u`
+!!%T8Ja.gOJa1YJrr@Q~>
+J`c4Zrr@W4qrRnYrT4+[rT4+[R-"DKrT4+[rT4+[MWXp<l/r!Fl/i3Mk2u^+k5XE&!rqEFrr<#\
+!<7W4J`_OGJ`bABrr@Q~>
+JaVdjrr@W<qX+=`rpBadrpBadQL4_QrpBadrpBadNUHK?oBlVZme-YKmJm7dmJm7dmJm7Ime-X3
+mXaeWmXafSmf*9;~>
+Ja2Lbrr@W8qW\%\rosI`rosI`QKeGMrosI`rosI`NU$3;oBH>VlLk5Gl2Uh`l2Uh`l2UhElLk4/
+l@J5Ol@J6KlMgj7~>
+J`c4Zrr@W4qW7eXroO4\roO4\QKA2IroO4\roO4\NTTs7oB$)Rk4\iCjoGG\joGG\joGGAk4\h+
+k(2ZGk(2[Ck5PF3~>
+JaVdjrr@W<q<eFemd:)CmJrL>"p")Z!:K7TM!k6Bmd:&TrpK[am-XiRrU'XcrU'XciU6UDJaS*W
+JaS*WcgLf5J,~>
+Ja2Lbrr@W8q<A.alKSB7l2[(6"p!rR!:&hLM!Fs>mcjcPrp'C]m-4QNrTX@_rTX@_iTg=@Ja.gO
+Ja.gOcg(N1J,~>
+J`c4Zrr@W4q;qn]k2u^+k5U\.#63iJs5rJDM!"^:mcFNLroX.Ym,e<JrT4+[rT4+[iTC(<J`_OG
+J`_OGcfY6-J,~>
+JaVdjrr@W<q!J7bmJuYTP3rGQmJuYTM!bBGmJuYTmd:2Xmd:)CrW)`]!!)uc!!)uc!!(R;quD<9
+JaS*WJaUkPrr@Q~>
+Ja2Lbrr@W8q!%t^l2^)LP3N/Ml2^)LM!>*Cl2^)LmcjoTlKSB7rW)`Y!!)u_!!)u_!!(R7quD<5
+Ja.gOJa1SHrr@Q~>
+J`c4Zrr@W4puV_Zk5XTDP3)oIk5XTDLunj?k5XTDmcFZPk2u^+rr;cU!<<#[!<<#[!<:U3r;V?1
+J`_OGJ`b;@rr@Q~>
+JaVdjrr@W<p[8"\ORE)JM!bHImd:)CmJu\CrW!)h!:K7Tq!J+^rpBadrpBadj6cmIrU'XcrU'[d
+me-X3mXaeWmXafSmf*9;~>
+Ja2Lbrr@W8pZh_XOQufFM!>0ElKSB7l2^8;rW!)d!:&hLq!%hZrosI`rosI`j6?UErTX@_rTXC`
+lLk4/l@J5Ol@J6KlMgj7~>
+J`c4Zrr@W4pZDJTOQQQBLunpAk2u^+k5Xl3rr3,`s5rJDpuVSVroO4\roO4\j5p@ArT4+[rT4.\
+k4\h+k(2ZGk(2[Ck5PF3~>
+JaVdjrr@W<qsO.XR-sYJNU?cHrpBadrpBadn*^)RrpBadq!J=dmd:)CmJu56!!*#d!!*#d!!*#d
+!W_ZVrW)ud!!%T<JaS*WJaUqRrr@Q~>
+Ja2Lbrr@W8qs*kTR-OAFNTpKDrosI`rosI`n*9fNrosI`q!&%`lKSB7l2]f.!!*#`!!*#`!!*#`
+!W_NNrW)u`!!%T8Ja.gOJa1YJrr@Q~>
+J`c4Zrr@W4qr[VPR-+,BNTL6@roO4\roO4\n)jQJroO4\puVe\k2u^+k5XE&!<<&\!<<&\!<<&\
+!rqEFrr<#\!<7W4J`_OGJ`bABrr@Q~>
+JaVdjrrAVX!!)uc!!)uc!!)0LrW&&JrW%iD!!)uc!!)uc!!)WYp&G-]!;Psb!:BjT!8m2K!:K7T
+md:)SmKrs^mJuYTmJu\C!.jQhmXaeWmaCP'!.Y~>
+Ja2LbrrAVT!!)u_!!)u_!!)0HrW&&FrW%i@!!)u_!!)u_!!)WUp&G-Y!;Pg^!9sRL!8m&G!:&hL
+lKSBKl3[OVl2^)Ll2^,7!.jEdl@J5OlI+tt!.Y~>
+J`c4ZrrAVP!<<#[!<<#[!<;3Drr8)Brr7l<!<<#[!<<#[!<;ZQpAY0Us7k^Zs5s@Ds52rCs5rJD
+k2u^CjpM.Nk5XTDk5XT+s+0<`k(2ZGk0iDl!.Y~>
+JaVdjrrASW!!*#d!!*#d!!)0L"9@iimJrF<"9@iimJr@:!!)uc!!)uc!!)<PrW)KVrW(dB"9@ii
+mK!.P"p")Z!:K7TJaS*WJaS*Wd-go6J,~>
+Ja2LbrrASS!!*#`!!*#`!!)0H"9@]el2["4"9@]el2Zq2!!)u_!!)u_!!)<LrW)KRrW(d>"9@]e
+l2^_H"p!rR!:&hLJa.gOJa.gOd-CW2J,~>
+J`c4ZrrASO!<<&\!<<&\!<;3D"TRWak5UV,"TRWak5UP*!<<#[!<<#[!<;?Hrr;NNrr:g:"TRWa
+k5Y>@#63iJs5rJDJ`_OGJ`_OGd,t?.J,~>
+JaVdjrrAPVrr<2i!:K7TrU'Xclg=rWmd:)CmJrL>"p")Z!:K7TOR<)KrpBadrpBadlL"cTmJuYT
+p?qVSi9pREqsFFarpBadrpBadJaS*WJaS*WdI.#7J,~>
+Ja2LbrrAPRrr<2e!:&hLrTX@_lfnZSlKSB7l2[(6"p!rR!:&hLOQlfGrosI`rosI`lKSKPl2^)L
+p?M>Oi9L:Aqs".]rosI`rosI`Ja.gOJa.gOdH^`3J,~>
+J`c4ZrrAPNs8N5as5rJDrT4+[lfJEOk2u^+k5U\.#63iJs5rJDOQHQCroO4\roO4\lK/6Lk5XTD
+p?))Ki9(%=qrRnYroO4\roO4\J`_OGJ`_OGdH:H/J,~>
+JaVdjrrC(,!!)uc!!)uc!!(sFrW!#f!!*#d!!)?Q!!*#d!!*#d!!'Y!!!)uc!!)uc!!)3M!!*#d
+!!*#d!!&,K"p")Z!:K7TlL"iVmd:)CmJukHrW(mEp&G-]!<)<c!<)<c!.jQhmXaeWmaCP'!.Y~>
+Ja2LbrrC((!!)u_!!)u_!!(sBrW!#b!!*#`!!)?M!!*#`!!*#`!!'Xr!!)u_!!)u_!!)3I!!*#`
+!!*#`!!&,G"p!rR!:&hLlKSQRlKSB7l2^G@rW(mAp&G-Y!<)0_!<)0_!.jEdl@J5OlI+tt!.Y~>
+J`c4ZrrC($!<<#[!<<#[!<;!>rr3&^s8W)\!<;BI!<<&\!<<&\!<9[n!<<#[!<<#[!<;6E!<<&\
+!<<&\!<8/C#63iJs5rJDlK/<Nk2u^+k5Y&8rr:p=pAY0Us8D'[s8D'[s+0<`k(2ZGk0iDl!.Y~>
+JaVdjrrC%+!!*#d!!*#d!!(mDrW!)h!:K7Tlg=`QrU'XcrU'Xc]C#Y!rpBadrpBadkO&<MrU'Xc
+rU'XcOR<5OmJuYTlL"WPrpBadrpBadp$Mq_mJuYTh<t7BJaS*WJaS*W_X@F(J,~>
+Ja2LbrrC%'!!*#`!!*#`!!(m@rW!)d!:&hLlfnHMrTX@_rTX@_]BT@rrosI`rosI`kNW$IrTX@_
+rTX@_OQlrKl2^)LlKS?LrosI`rosI`p$)Y[l2^)Lh<Ot>Ja.gOJa.gO_Wq.$J,~>
+J`c4ZrrC%#!<<&\!<<&\!<:p<rr3,`s5rJDlfJ3IrT4+[rT4+[]B0+nroO4\roO4\kN2dErT4+[
+rT4+[OQH]Gk5XTDlK/*HroO4\roO4\p#ZDWk5XTDh<+_:J`_OGJ`_OG_WLjuJ,~>
+JaVdjrrC"*"p")Z!:K7TiU6C>R-k.Ymd:)CmJqh+l0eNNlL"WPrU'XcrU'Xcp[/4cmd:)CmJu/4
+"9@iimJqh+JaS*WJaUGDrr@Q~>
+Ja2LbrrC"&"p!rR!:&hLiTg+:R-FkUlKSB7l2ZD#l0A6JlKS?LrTX@_rTX@_pZ_q_lKSB7l2]`,
+"9@]el2ZD#Ja.gOJa1/<rr@Q~>
+J`c4ZrrC""#63iJs5rJDiTBk6R-"VQk2u^+k5U"pl/r!FlK/*HrT4+[rT4+[pZ;\[k2u^+k5X?$
+"TRWak5U"pJ`_OGJ`al4rr@Q~>
+JaVdjrrBt)"9@iimK!%M!!)uc!!)uc!!)NVqZ+V'!!)uc!!)uc!!(jC"9@iimJqh+m-aQIm-XiR
+rU'XcrU'XcqX+=`rpBadrpBadiU-mMmd:)CmJqh+JaS*WJaUJErr@Q~>
+Ja2LbrrBt%"9@]el2^VE!!)u_!!)u_!!)NRqZ+V#!!)u_!!)u_!!(j?"9@]el2ZD#m-=9Em-4QN
+rTX@_rTX@_qW\%\rosI`rosI`iT^UIlKSB7l2ZD#Ja.gOJa12=rr@Q~>
+J`c4ZrrBt!"TRWak5Y5=!<<#[!<<#[!<;QNqu=Xt!<<#[!<<#[!<:m;"TRWak5U"pm,n$Am,e<J
+rT4+[rT4+[qW7eXroO4\roO4\iT:@Ek2u^+k5U"pJ`_OGJ`ao5rr@Q~>
+JaVdjrrBq(rW)Z[!!*#d!!*#d!!)NVp&N2%!!*#d!!*#d!!(dArW(aA!!)uc!!)uc!!&ARrW)-L
+!!*#d!!*#d!!)l`!!)uc!!)uc!!)'I!!*#d!!*#d!!%T<JaS*WJaUMFrr@Q~>
+Ja2LbrrBq$rW)ZW!!*#`!!*#`!!)NRp&N2!!!*#`!!*#`!!(d=rW(a=!!)u_!!)u_!!&ANrW)-H
+!!*#`!!*#`!!)l\!!)u_!!)u_!!)'E!!*#`!!*#`!!%T8Ja.gOJa15>rr@Q~>
+J`c4ZrrBpurr;]S!<<&\!<<&\!<;QNpA`4r!<<&\!<<&\!<:g9rr:d9!<<#[!<<#[!<8DJrr;0D
+!<<&\!<<&\!<;oX!<<#[!<<#[!<;*A!<<&\!<<&\!<7W4J`_OGJ`ar6rr@Q~>
+JaVdjrrCgA!!)uc!!)uc!!)c]p&OpV"p")Z!:K7Tp$Me[rU'^emdBuQ!U]sdmJm70mKN[ZmJu\C
+!8d/;!8m2E!<2Bd!<2Bd!13*V!:BjT!9`bS!:K7Tmd:)&mJm7cmJm7cmJm6<mXaeWmXafGmf*9;~>
+Ja2LbrrCg=!!)u_!!)u_!!)cYp&OpR"p!rR!:&hLp$)MWrTXFalK\9I!U9[`l2Uh,l377Rl2^,7
+!8d#7!8m&A!<26`!<26`!12sR!9sRL!9`VO!:&hLlKSAsl2Uh_l2Uh_l2Ug8l@J5Ol@J6?lMgj7~>
+J`c4ZrrCg9!<<#[!<<#[!<;fUpAasN#63iJs5rJDp#Z8SrT41]k2uUA!TsF\joGG(jp(kJk5XT+
+s5)o3s52r=s8M-\s8M-\s-MjNs5s@Ds6&MKs5rJDk2u]kjoGG[joGG[joGF4k(2ZGk(2[7k5PF3~>
+JaVdjrrCd@!!*#d!!*#d!!)TXrW)TY"9@iimJukH"p")Z!!)HTq>gN_!!(+."9@iimJtr.rW([?
+"p")Z!:K7TQgP%Xmd:)CmJuG<"9@iimJqh+JaS*WJaSE`rr@Q~>
+Ja2LbrrCd<!!*#`!!*#`!!)TTrW)TU"9@]el2^G@"p!rR!!)<Lq>gN[!!(+*"9@]el2]N&rW([;
+"p!rR!:&hLQg+bTlKSB7l2^#4"9@]el2ZD#Ja.gOJa/-Xrr@Q~>
+J`c4ZrrCd8!<<&\!<<&\!<;WPrr;WQ"TRWak5Y&8#63iJs8V6DqZ$QW!<:.&"TRWak5X,srr:^7
+#63iJs5rJDQf\MPk2u^+k5XW,"TRWak5U"pJ`_OGJ`_jPrr@Q~>
+JaVdjrrCa?"p")Z!:K7To'QV\mJuYTo^;\Yna?DW%IO5amJu\C!:Bgemd:(pmf!4>mK<OX!:Bj@
+mK<OX!:BiRmJm7dmJm7dmJm7Mmf!3;mXaeWmXae_mf*9;~>
+Ja2LbrrCa;"p!rR!:&hLo'->Xl2^)Lo]lDUn`p,S%I*rYl2^,7!9sOalKSAhlM^e:l3%+P!9sR<
+l3%+P!9sQNl2Uh`l2Uh`l2UhIlM^d7l@J5Ol@J5WlMgj7~>
+J`c4ZrrCa7#63iJs5rJDo&^)Tk5XTDo]H/Qn`KlO%Hd]Qk5XT+s5s@]k2u]`k5PD6jok_Hs5s@8
+jok_Hs5s?JjoGG\joGG\joGGEk5PC3k(2ZGk(2ZOk5PF3~>
+JaVdjrrD$G!!)uc!!*#drVuue!:oO^!:K7Tmd:)Nme-YQmK<OX!:Bjdmf*7emf!4ZmJm7cmJm7c
+mJm7Fme-Y;mKN[ZmJu\C!8?l?!13*R!<)<c!<)<c!:9.I!.jQhmXaeWmZ$Z7!.Y~>
+Ja2LbrrD$C!!)u_!!*#`rVuua!:oCZ!:&hLlKSBFlLk5Ml3%+P!9sR`lMghalM^eVl2Uh_l2Uh_
+l2UhBlLk57l377Rl2^,7!8?`;!12sN!<)0_!<)0_!:9"E!.jEdl@J5OlAb*/!.Y~>
+J`c4ZrrD$?!<<#[!<<&\rr3#]s75:Vs5rJDk2u^>k4\iIjok_Hs5s@\k5YG]k5PDRjoGG[joGG[
+joGG>k4\i3jp(kJk5XT+s4ZW7s-MjJs8D'[s8D'[s6SnAs+0<`k(2ZGk)JO'!.Y~>
+M=1?CrU'Xcr9aObn*^2Ui9gRFrpBadrpK^bo'QJXrpBadrpBadp?qn[n*^/TrU'[dmem.XmJm7d
+mJm7dmJm7Amf!4JmJm7cmJm7cmJm7dmJm7dmJm7Eme-X3mK)_UrU'XcrpKacmd:&TrU'XcrU'Xc
+qsFFarU'XcrU'XcJaUMF!!)uc!!)uc!!%T<JaS*Ws6fmeJ,~>
+M<b'?rTX@_r9=7^n*9oQi9C:BrosI`rp'F^o'-2TrosI`rosI`p?MVWn*9lPrTXC`lMU_Tl2Uh`
+l2Uh`l2Uh=lM^eFl2Uh_l2Uh_l2Uh`l2Uh`l2UhAlLk4/l2g/MrTX@_rp'I_mcjcPrTX@_rTX@_
+qs".]rTX@_rTX@_Ja15>!!)u_!!)u_!!%T8Ja.gOs6BUaJ,~>
+M<=d;rT4([r8mtZn)jWMi8t%>roO4\roX1Zo&]rProO4\roO4\p?)ASn)jWLrT4.\k5G>PjoGG\
+joGG\joGG9k5PDBjoGG[joGG[joGG\joGG\joGG=k4\h+joOWErT4+[roX4[mcFNLrT4+[rT4+[
+qrRnYrT4+[rT4+[J`ar6!<<#[!<<#[!<7W4J`_OGs5s=]J,~>
+MXCHErpBpimd:)C!<2Bf!:BjVmf*:EmK*CVme$SSmJm7cmJm7cmJm7^mK<OX!:BjZmd0uTmK!4R
+!!)uc"p")Z!:K7Tg[51EmJuYTjmE*KrpBadrpBadrU'XcrU'Xch!Y.ArpBadrU'XcK^Jg?rpBgf
+mdC&S!U]sUmJm7dmJm7dmJm7_mJm7dmJm7dmJm6`mJm7cmJm7cmJm6emJm7dmJm7dmJm6<mXaeW
+mf)YS!.Y~>
+MWt0ArosXelKSB7!<26b!9sRRlMgkAl2gtNlLb/Ol2Uh_l2Uh_l2UhZl3%+P!9sRVlKnQPl2^eJ
+!!)u_"p!rR!:&hLgZenAl2^)LjlugGrosI`rosI`rTX@_rTX@_h!4k=rosI`rTX@_K^&O;rosOb
+lK\?K!U9[Ql2Uh`l2Uh`l2Uh[l2Uh`l2Uh`l2Ug\l2Uh_l2Uh_l2Ugal2Uh`l2Uh`l2Ug8l@J5O
+lMg)K!.Y~>
+MWOm=roO@ak2l[+!<2*^!9O:Nk5PG=joYSFk4ScKjoGG[joGG[joGGVjok_Hs5s@Rk3`0Lk5YDB
+!<<#[#63iJs5rJDgZAY=k5XTDjlQRCroO4\roO4\rT4+[rT4+[gueV9roO4\rT4+[K]W:7roO:^
+k2u[C!TsFMjoGG\joGG\joGGWjoGG\joGG\joGFXjoGG[joGG[joGF]joGG\joGG\joGF4k(2ZG
+k5ONC!.Y~>
+MXCHEr9aObrpBgfmK!7S!!)QWrrCpD"p"&kmJu\CrW)0M!!)uc#lsD]!:Bgemd:)Fmf!4`mf!4`
+mJm7dmJm7dmKN[Z!:BjT!8HoG!:K7Tmd:):mKN[ZmJu\C!9rnO!<)<c!<)<c!;5a\!:Kgds6]je
+rpBadK'j!Hmd:)C!!)Eemd:)CmKN[ZmJu\C!;Gmc!:K7Tmd:(MmJm7dmJm7dmJm6cmKN[ZmJu\C
+!.jQhmXag)mf*9;~>
+MWt0Ar9=7^rosObl2^hK!!)QSrrCp@"p!ogl2^,7rW)0I!!)u_#ls8U!9sOalKSB>lM^e\lM^e\
+l2Uh`l2Uh`l377R!9sRL!8HcC!:&hLlKSB2l377Rl2^,7!9rbK!<)0_!<)0_!;5UX!:'O`s69Ra
+rosI`K'E^DlKSB7!!)9alKSB;l377Rl2^,7!;Ga_!:&hLlKSAEl2Uh`l2Uh`l2Ug_l377Rl2^,7
+!.jEdl@J7!lMgj7~>
+MWOm=r8mtZroO7^joGDC!!)QOrrCp<#63ick5XT+rr;3E!<<#[$30/Ms5s@]k2u^6k5PDXk5PDX
+joGG\joGG\jp(kJs5s@Ds4cZ?s5rJDk2u^*jp(kJk5XT+s68YGs8D'[s8D'[s7PLTs5s=\s5j=]
+roO4\K'!I@k2u^+s8V6]k2u^3jp(kJk5XT+s7bX[s5rJDk2u]=joGG\joGG\joGF[jp(kJk5XT+
+s+0<`k(2[nk5PF3~>
+MXCHEr9aObrpBgfmK!7S!!)QWrrCmCrW)ud"9@iimJuJ=!!*#d"p"&kmJuYTrpBadoBl_]mJuYT
+rU'dgmJuYTqsFXgmd:)CmK!7SrW(^@!!*#d!!*#drrE#c!!)uc!!)NV"9@iimJuG<!!*#d!!*#d
+!!)][$NTV_!:BgemJu\C!9NVK!<)<c!<)<c!2o5c!:Kgds6]jerpBadmd:2XmJuYTp$Mq_mJuYT
+U$`*bmd:)CmJs-P"9@iimJqh+JaS*Wr9jRbJ,~>
+MWt0Ar9=7^rosObl2^hK!!)QSrrCm?rW)u`"9@]el2^&5!!*#`"p!ogl2^)LrosI`oBHGYl2^)L
+rTXLcl2^)Lqs"@clKSB7l2^hKrW(^<!!*#`!!*#`rrE#_!!)u_!!)NR"9@]el2^#4!!*#`!!*#`
+!!)]W$NTJW!9sOal2^,7!9NJG!<)0_!<)0_!2o)_!:'O`s69RarosI`mcjoTl2^)Lp$)Y[l2^)L
+U$;g^lKSB7l2[^H"9@]el2ZD#Ja.gOr9F:^J,~>
+MWOm=r8mtZroO7^joGDC!!)QOrrCm;rr<#\"TRWak5XZ-!<<&\#63ick5XTDroO4\oB$2Uk5XTD
+rT47_k5XTDqrS+_k2u^+k5YGCrr:a8!<<&\!<<&\s8W&[!<<#[!<;QN"TRWak5XW,!<<&\!<<&\
+!<;`S$ifAOs5s@]k5XT+s5iACs8D'[s8D'[s/4u[s5s=\s5j=]roO4\mcFZPk5XTDp#ZDWk5XTD
+U#lRZk2u^+k5V=@"TRWak5U"pJ`_OGr9""ZJ,~>
+MXLECs6]jerpBgfmK!7S!!)QWq#KUGo`5$[!!)6N#lsD]!!)Eemd:)RmJm7[mLfNfmJu\C!:Bge
+md:&TmJu\C!<2Bg!:BjTo`3q<!!)uc!!)ucrrE&d!!*#d!!)HTrW)'J"p")Z!:K7Tp$Me[rpBgf
+mdC&S!U]sJmJm7dmJm7dmJm6`mf!4cmJm7cmJm7Tmf!4Xmf!3YmK<OX!:Bi_mf!3;mXaeWmecGP
+!.Y~>
+MX(-?s69RarosObl2^hK!!)QSq#KUCo`5$W!!)6J#ls8U!!)9alKSBJl2UhWl4O*^l2^,7!9sOa
+lKS?Ll2^,7!<26c!9sRLo`3q8!!)u_!!)u_rrE&`!!*#`!!)HPrW)'F"p!rR!:&hLp$)MWrosOb
+lK\?K!U9[Fl2Uh`l2Uh`l2Ug\lM^e_l2Uh_l2UhPlM^eTlM^dUl3%+P!9sQ[lM^d7l@J5OlMKlH
+!.Y~>
+MWXj;s5j:]roO7^joGDC!!)QOq#KU?p&G'S!<;9F$30/Ms8V6]k2u^BjoGGSjq@^Vk5XT+s5s@]
+k2u^Dk5XT+s8M-_s5s@Dp&Et4!<<#[!<<#[s8W)\!<<&\!<;KLrr;*B#63iJs5rJDp#Z8SroO:^
+k2u[C!TsFBjoGG\joGG\joGFXk5PD[joGG[joGGLk5PDPk5PCQjok_Hs5s?Wk5PC3k(2ZGk54<@
+!.Y~>
+MXCHErpBgfmK!7S!W_WgrpBadna?2Qj6ljGrpBadrpBadkjAQRmJuYTmHsrSrpBgfmdC#R!:Kgd
+s6fmer9jOar9jOad-_)<md:)CmJueFp&P*[!!)uc!!)QW"9@iimJuqJ!!)uc!!*#drW(pF"p")Z
+!:K7TW:'?ZmI'ZJqsO.XU@/!\Vsa6YJaS*WJaWR+rr@Q~>
+MWt0ArosObl2^hK!W_KcrosI`n`ooMj6HRCrosI`rosI`kir9Nl2^)LmHOZOrosOblK\<J!:'O`
+s6BUar9F7]r9F7]d-:f8lKSB7l2^A>p&P*W!!)u_!!)QS"9@]el2^MB!!)u_!!*#`rW(pB"p!rR
+!:&hLW9X'VmHXBFqs*kTU?_^XVs<sUJa.gOJa3:#rr@Q~>
+MWOm=roO7^joGDC!W_?_roO1\n`KWIj6$=?roO4\roO4\kiN$Jk5XTDmH+EKroO:^k2uXB!9X:\
+s5s@]r9""Yr9""Yd,kQ4k2u^+k5Xu6pAb-S!<<#[!<;TO"TRWak5Y,:!<<#[!<<&\rr:s>#63iJ
+s5rJDW93gRmH4-Bqr[VPU?;ITVrm^QJ`_OGJ`d!prr@Q~>
+MXCHErpBgfmK!7S!W_WgrpBadna?DWhX1CEmf!4cmJm7cmJm7Nmf!4RmJm7cmJm7dmf*7emem+c
+mf!1dmdgD]mJuYT!<2Ed!:B1S!<)<c!<)<c!;Gma!:BjT!:9.Q!<2Bd!<2Bd!<2Bd!:T@T!:T@L
+!9EPN!:BjT!2Ju]!9NYJ!;#XX!2AoT!2o8a!.jQhmXag'mf*9;~>
+MWt0ArosObl2^hK!W_KcrosI`n`p,ShWb+AlM^e_l2Uh_l2UhJlM^eNl2Uh_l2Uh`lMghalMU\_
+lM^b`lLOuYl2^)L!<29`!:B%O!<)0_!<)0_!;Ga]!9sRL!:9"M!<26`!<26`!<26`!:T4P!:T4H
+!9EDJ!9sRL!2JiY!9NMF!;#LT!2AcP!2o,]!.jEdl@J6tlMgj7~>
+MWOm=roO7^joGDC!W_?_roO1\n`KiOhW=k=k5PD[joGG[joGGFk5PDJjoGG[joGG\k5YG]k5G;[
+k5PA\k4ATUk5XTDs8M0\s6\qKs8D'[s8D'[s7bXYs5s@Ds6SnIs8M-\s8M-\s8M-\s6o+Ls6o+D
+s5`;Fs5s@Ds.e`Us5iDBs7>CPs.\ZLs/5#Ys+0<`k(2[lk5PF3~>
+MXCHErpBpimd:)C!<2Bf!:BjVmf*:EmKN[ZmJu\C!9ESA!9`bQ!:K7Tmf!4_mf!4cmKEUYmJm7T
+rW)udrrDBQ!!*#d!!*#d!!)][rW)<Q"9@iimK!7S"p")Z!:K7Tq<e4_rU'[dme-YLmf!4Dmf!3]
+mKWa[!:BjTmK!4R!!)uc!!)ZZ"9@iimJuqJ"9@iimJrmIrW&b^"9@iimJqh+JaS*Wr9jRbJ,~>
+MWt0ArosXelKSB7!<26b!9sRRlMgkAl377Rl2^,7!9EG=!9`VM!:&hLlM^e[lM^e_l3.1Ql2UhL
+rW)u`rrDBM!!*#`!!*#`!!)]WrW)<M"9@]el2^hK"p!rR!:&hLq<@q[rTXC`lLk5HlM^e@lM^dY
+l3@=S!9sRLl2^eJ!!)u_!!)ZV"9@]el2^MB"9@]el2[IArW&bZ"9@]el2ZD#Ja.gOr9F:^J,~>
+MWOm=roO@ak2l[+!<2*^!9O:Nk5PG=jp(kJk5XT+s5`>9s6&MIs5rJDk5PDWk5PD[joteIk5YJD
+rr<#\s8VEI!<<&\!<<&\!<;`Srr;?I"TRWak5YGC#63iJs5rJDq;q\WrT4.\k4\iDk5PD<k5PCU
+jp1qKs5s@Dk5YDB!<<#[!<;]R"TRWak5Y,:"TRWak5V(9rr8eV"TRWak5U"pJ`_OGr9""ZJ,~>
+M=1?CrU'Xcr9aObn*^2Ui9gRFrpBadrpBadiU6[FipHgImem.^mKN[Z!:BjT!<2Ec!!Vcj!:Bge
+l0\`Umd:)CmK!%Mp&OXN"p")Z!:K7TrpBmhmJuYTp[/"]rpBadrpBdemf!4QmK<OX!:BjJme-XZ
+mKim]mJu\C!:K7TrpBadrpBado^2n`md:)CmK!"L"p")Z!:K7Tl0\NOrU'XcrU'Xcmd:&TrU'Xc
+rU'XcipHpLmJuYTVX=Wgmd:)CmJqh+JaS*WrU0[cJ,~>
+M<b'?rTX@_r9=7^n*9oQi9C:BrosI`rosI`iTgCBip$OElMU_Zl377R!9sRL!<29_!!VWf!9sOa
+l08HQlKSB7l2^VEp&OXJ"p!rR!:&hLrosUdl2^)LpZ__YrosI`rosLalM^eMl3%+P!9sRFlLk4V
+l3RIUl2^,7!:&hLrosI`rosI`o]cV\lKSB7l2^SD"p!rR!:&hLl086KrTX@_rTX@_mcjcPrTX@_
+rTX@_ip$XHl2^)LVWn?clKSB7l2ZD#Ja.gOrTaC_J,~>
+M<=d;rT4([r8mtZn)jWMi8t%>roO4\roO4\iTC.>ioU:Ak5G>Vjp(kJs5s@Ds8M0[rrqQbs5s@]
+l/i3Mk2u^+k5Y5=pAa[F#63iJs5rJDroO@`k5XTDpZ;JUroO4\roO7]k5PDIjok_Hs5s@Bk4\hR
+jpD(Mk5XT+s5rJDroO4\roO4\o]?AXk2u^+k5Y2<#63iJs5rJDl/i!GrT4+[rT4+[mcFNLrT4+[
+rT4+[ioUCDk5XTDVWJ*_k2u^+k5U"pJ`_OGrT=+[J,~>
+JaVdjrrD$G!!)uc!!)uc!!)'I"9@iimJu>9p&P-\"p")Z!:K7TrU'[dme["ImK<OX!:BjYmf!4S
+mJm7dmJm7dmJm7dmf!4ZmL0*`mJu\C!:BjT!:BjTmKN[ZmJu\C!9*AF!2])`!<2Bd!<2Bm!:K7T
+md:)CmK!"L$NTV_!:BjT!:K7T!;Z$_!<2Bd!<2Bd!9rnO!<2Bd!<2Bd!:9+R!<2Bd!<2Bd!93DN
+!:K7Tmd:(RmJm7dmJm7dmJm6<mXaeWmf)YS!.Y~>
+Ja2LbrrD$C!!)u_!!)u_!!)'E"9@]el2]o1p&P-X"p!rR!:&hLrTXC`lMCSEl3%+P!9sRUlM^eO
+l2Uh`l2Uh`l2Uh`lM^eVl3m[Xl2^,7!9sRL!9sRPl377Rl2^,7!9*5B!2\r\!<26`!<26i!:&hL
+lKSB7l2^SD$NTJW!9sRL!:&hL!;Ym[!<26`!<26`!9rbK!<26`!<26`!:8tN!<26`!<26`!938J
+!:&hLlKSAJl2Uh`l2Uh`l2Ug8l@J5OlMg)K!.Y~>
+J`c4ZrrD$?!<<#[!<<#[!<;*A"TRWak5XN)pAb0T#63iJs5rJDrT4.\k552Ajok_Hs5s@Qk5PDK
+joGG\joGG\joGG\k5PDRjp_:Pk5XT+s5s@Ds5s@Ljp(kJk5XT+s5E,>s/"iXs8M-\s8M-es5rJD
+k2u^+k5Y2<$ifAOs5s@Ds5rJDs7tdWs8M-\s8M-\s68YGs8M-\s8M-\s6SkJs8M-\s8M-\s5N/F
+s5rJDk2u]BjoGG\joGG\joGF4k(2ZGk5ONC!.Y~>
+JaVdjrrBUt"p")Z!:K7TkO/$DrpBadrpBadrpBadqsOC_jmN*JoBl_]mJuYTnEp8VrU'XcrpKI[
+q!JOjmJuYTmJu\C!:K7TnEp8VrpBadrpBadj6d$MmJuYTWU:E"mJu\C!:BjTmJuYTmd:)C!:Bj[
+mf*:emKWa[!:BjTmK!.P!!)uc!!)uc!!)9O"p")Z!:K7TlL"iVmd:)CmJu87!!*#d!!*#d!!'%e
+!!)uc!!)uc!!%T<JaS*Ws6fmeJ,~>
+Ja2LbrrBUp"p!rR!:&hLkN_a@rosI`rosI`rosI`qs++[jm)gFoBHGYl2^)LnEKuRrTX@_rp'1W
+q!&7fl2^)Ll2^,7!:&hLnEKuRrosI`rosI`j6?aIl2^)LWTk,sl2^,7!9sRLl2^)LlKSB7!9sRW
+lMgkal3@=S!9sRLl2^_H!!)u_!!)u_!!)9K"p!rR!:&hLlKSQRlKSB7l2]i/!!*#`!!*#`!!'%a
+!!)u_!!)u_!!%T8Ja.gOs6BUaJ,~>
+J`c4ZrrBUl#63iJs5rJDkN;L<roO4\roO4\roO4\qr[kWjlZRBoB$2Uk5XTDnE'`NrT4+[roWqS
+puW"bk5XTDk5XT+s5rJDnE'`NroO4\roO4\j5pLEk5XTDWTFlok5XT+s5s@Dk5XTDk2u^+s5s@S
+k5YJ]jp1qKs5s@Dk5Y>@!<<#[!<<#[!<;<G#63iJs5rJDlK/<Nk2u^+k5XH'!<<&\!<<&\!<9(]
+!<<#[!<<#[!<7W4J`_OGs5s=]J,~>
+JaVdjrrBXu!!*#d!!*#d!!)*Jr;Zld!<2Bd!<)<c!<)<d!:KL[s6]jenF#uMq!J=dmd:)CmJu>9
+rW)QXrVuue!<2Bd!<2Bd!;#XY!<2Ed!<2Ed!9NVQ!:K7Tmd:(imJm7cmJm7cmJm7\mJm7dmJm7d
+mJm7amf!4XmKN[ZmJu\C!7U?=!:BjT!9ihR!:BjT!93DH!<)<c!<)<c!.jQhmXaetmf*9;~>
+Ja2LbrrBXq!!*#`!!*#`!!)*Fr;Zl`!<26`!<)0_!<)0`!:'4Ws69RanET]Iq!&%`lKSB7l2]o1
+rW)QTrVuua!<26`!<26`!;#LU!<29`!<29`!9NJM!:&hLlKSAal2Uh_l2Uh_l2UhXl2Uh`l2Uh`
+l2Uh]lM^eTl377Rl2^,7!7U39!9sRL!9i\N!9sRL!938D!<)0_!<)0_!.jEdl@J5llMgj7~>
+J`c4ZrrBXm!<<&\!<<&\!<;-BrVlo\s8M-\s8D'[s8D'\s5s"Ss5j=]nE0HEpuVe\k2u^+k5XN)
+rr;TPrr3#]s8M-\s8M-\s7>CQs8M0\s8M0\s5iAIs5rJDk2u]YjoGG[joGG[joGGTjoGG\joGG\
+joGGYk5PDPjp(kJk5XT+s3p*5s5s@Ds6/SJs5s@Ds5N/@s8D'[s8D'[s+0<`k(2Zdk5PF3~>
+JaVdjrrB\!!!)uc!!)uc!!)0LrW!)h!:K7Tn*^,S!U]semJm7Qmf!4ZmJm7dmJm7dmJm7LmK<OX
+!:Bj^me-V]mK!4R!!)WY!!*#drrE)e!W_WgrU'Xclg=`QrpBadrpBad^[;(%rpBadrpBado^2n`
+md:)CmK!7Sp&OgS"9@iimJtZ&rW)*KrW%N;JaS*WJaW-trr@Q~>
+Ja2LbrrB[r!!)u_!!)u_!!)0HrW!)d!:&hLn*9iO!U9[al2UhMlM^eVl2Uh`l2Uh`l2UhHl3%+P
+!9sRZlLk2Yl2^eJ!!)WU!!*#`rrE)a!W_KcrTX@_lfnHMrosI`rosI`^Zke!rosI`rosI`o]cV\
+lKSB7l2^hKp&OgO"9@]el2]5srW)*GrW%N7Ja.gOJa2jlrr@Q~>
+J`c4ZrrB[n!<<#[!<<#[!<;3Drr3,`s5rJDn)jTK!TsF]joGGIk5PDRjoGG\joGG\joGGDjok_H
+s5s@Vk4\fUk5YDB!<;ZQ!<<&\s8W,]!rqE_rT4+[lfJ3IroO4\roO4\^ZGOrroO4\roO4\o]?AX
+k2u^+k5YGCpAajK"TRWak5Wikrr;-Crr7Q3J`_OGJ`cRdrr@Q~>
+JaVdjrrAAQrr<;l!:Bgemd:)FmeQq`mJm7QmK<OX!:Bj]mJm7cmJm7cmJm7NmKN[ZmJu\C!;5dZ
+!9`bV!:K7TmJm7TmK!7S!!)?Q!!)uc!!)uc!!'e%"p")Z!:K7To'QV\mJuYTq<n4^na?AVeF*#1
+rpKddrpKddq!RhUs6]jerU'XcJaS*WJaS*Ws6fmeJ,~>
+Ja2LbrrAAMrr<;h!9sOalKSB>lM:M\l2UhMl3%+P!9sRYl2Uh_l2Uh_l2UhJl377Rl2^,7!;5XV
+!9`VR!:&hLl2UhLl2^hK!!)?M!!)u_!!)u_!!'e!"p!rR!:&hLo'->Xl2^)Lq<IqZn`p)ReEZ`-
+rp'L`rp'L`q!.PQs69RarTX@_Ja.gOJa.gOs6BUaJ,~>
+J`c4ZrrAAIs8N>ds5s@]k2u^6k5,,XjoGGIjok_Hs5s@UjoGG[joGG[joGGFjp(kJk5XT+s7POR
+s6&MNs5rJDk5YJDk5YGC!<;BI!<<#[!<<#[!<9gr#63iJs5rJDo&^)Tk5XTDq<%\Vn`KiNeE6K)
+roX7\roX7\pu_;Ms5j=]rT4+[J`_OGJ`_OGs5s=]J,~>
+JaVdjrrADRrrE)e#6=/lmJu\C!;#XY!!)Hb!!2KfnEp8VrU'jimd:)C!!(R;!!*#d!!*#d!!)c]
+"9@iimJuG<$NTSpmJm7TmJu\C!1`H[!:BjT!:]FU!;Z$c!:BjT!;>jR!<;He!<)<c!<)<e!:Bjc
+mJm7cmLK<cmJuYTmd:)C!:K7TmK!4Rr;clcpAk6]rW)rcrrE&dq>gQ`rW)udrrE#c%05ha!:BjT
+mJuYTmd:(+mXaeWmZHr;!.Y~>
+Ja2LbrrADNrrE)a#6=#hl2^,7!;#LU!!)<^!!2?bnEKuRrTXRelKSB7!!(R7!!*#`!!*#`!!)cY
+"9@]el2^#4$NTGll2UhLl2^,7!1`<W!9sRL!:]:Q!;Ym_!9sRL!;>^N!<;<a!<)0_!<)0a!9sR_
+l2Uh_l43m[l2^)LlKSB7!:&hLl2^eJr;cl_pAk6YrW)r_rrE&`q>gQ\rW)u`rrE#_%05\Y!9sRL
+l2^)LlKSA#l@J5OlB1B3!.Y~>
+J`c4ZrrADJs8W,]#QNrdk5XT+s7>CQrrD3ZrrM9^nE'`NrT4=ak2u^+s8UX3!<<&\!<<&\!<;fU
+"TRWak5XW,$ifAhk5YJDk5XT+s.&3Ss5s@Ds7#1Ms7td[s5s@Ds7YUJs8V3]s8D'[s8D']s5s@[
+joGG[jq%LSk5XTDk2u^+s5rJDk5YDBrVuo[p](9Urr;u[s8W)\qZ$TXrr<#\s8W&[%KGSQs5s@D
+k5XTDk2u\pk(2ZGk)ng+!.Y~>
+JaVdjrrAGS!!)uc!!)uc!!)TXrrE)err<&erW)BS$NTV_!!)HT!!)HT!8$W=!<)<c!<)<c!;Z$e
+!:K7Tmd:)<mf!4dmK<OX!:BiUmf!4ZmK!=Uo`5$["9@ii!:Kdc!:Kdc"7?-hme["amf*:dmf*:d
+mf*:emK<OX!:BjdmJm7dmJm7cmKrs^!:BjT!:BjT!<)<j!:BjT!!)HTq#CE_rVuue!<2Ed!<2Bg
+!:BjTr;[,k!!)HT!:K7TrpKdds6fme!:Kdc$17f]mJuYTmd:)RmJm6<mXaeWm[`eG!.Y~>
+Ja2LbrrAGO!!)u_!!)u_!!)TTrrE)arr<&arW)BO$NTJW!!)<L!!)<L!8$K9!<)0_!<)0_!;Yma
+!:&hLlKSB4lM^e`l3%+P!9sQQlM^eVl2^nMo`5$W"9@]e!:'L_!:'L_"6ojdlMCS]lMgk`lMgk`
+lMgkal3%+P!9sR`l2Uh`l2Uh_l3[OV!9sRL!9sRL!<)0f!9sRL!!)<Lq#CE[rVuua!<29`!<26c
+!9sRLr;[,g!!)<L!:&hLrp'L`s6BUa!:'L_$0hNUl2^)LlKSBJl2Ug8l@J5OlCI5?!.Y~>
+J`c4ZrrAGK!<<#[!<<#[!<;WPs8W,]s8N)]rr;EK$ifAOs8V6Ds8V6Ds4?B5s8D'[s8D'[s7td]
+s5rJDk2u^,k5PD\jok_Hs5s?Mk5PDRjoPMEp&G'S"TRWas5s:[!9X7["6TX`k552Yk5YJ\k5YJ\
+k5YJ]jok_Hs5s@\joGG\joGG[jpM.Ns5s@Ds5s@Ds8D'bs5s@Ds8V6Dq>UHWrr3#]s8M0\s8M-_
+s5s@DrVm/cs8V6Ds5rJDroX7\s5s@]!9X7[$0M9Mk5XTDk2u^BjoGF4k(2ZGk+1Z7!.Y~>
+JaVdjrr@W<s6fmes6fR\na?DW"RZ9XmK!4R!!(%,!!*#d!!*#d!!)BRoDn[S!!)uc!!)uc!!)ZZ
+!!)uc!!)uc!!)oa!!)uc!!)uc!!)uc!!)uc!!)uc!!)i_!!)uc!!)uc"T[uY!:K:I!<;Kd!<;K^
+!<;Kc!!)Hd!<;Ka!!)Hd!!)Hc!!)Hd!!;Qg!<2Bg!:BjTrW!&g!:BjdmKN[ZmJu\C!;l0i!:Bge
+mJm7T!<)<k!:K7Tmd:&TmeHhtmJm7TmJu\C!:K7TmJm7T!!)Ee!:Kgd!U]sdmM>lkmJuYT!:BjT
+mJu\C!!)HT!!)HT!!*#d!!%T<JaS*WSF6CWJ,~>
+Ja2Lbrr@W8s6BUas6B:Xn`p,S"R6!Pl2^eJ!!(%(!!*#`!!*#`!!)BNoDn[O!!)u_!!)u_!!)ZV
+!!)u_!!)u_!!)o]!!)u_!!)u_!!)u_!!)u_!!)u_!!)i[!!)u_!!)u_"T[iQ!:&kA!<;?`!<;?Z
+!<;?_!!)<`!<;?]!!)<`!!)<_!!)<`!!;Ec!<26c!9sRLrW!&c!9sR`l377Rl2^,7!;l$e!9sOa
+l2UhL!<)0g!:&hLlKS?LlM1Dpl2UhLl2^,7!:&hLl2UhL!!)9a!:'O`!U9[`l5'Hcl2^)L!9sRL
+l2^,7!!)<L!!)<L!!*#`!!%T8Ja.gOSEg+SJ,~>
+J`c4Zrr@W4s5s@]s5s%Tn`KlO"QoaHk5YDB!<:($!<<&\!<<&\!<;EJo`+^K!<<#[!<<#[!<;]R
+!<<#[!<<#[!<;rY!<<#[!<<#[!<<#[!<<#[!<<#[!<;lW!<<#[!<<#["om`Is5rJ9s8V6\s8V6V
+s8V6[rrD3\s8V6YrrD3\rrD3[rrD3\rrV?_s8M-_s5s@Drr3)_s5s@\jp(kJk5XT+s81pas5s@]
+k5YJDs8D'cs5rJDk2u^Dk5##lk5YJDk5XT+s5rJDk5YJDs8V6]s5s=\!TsF\jqn'[k5XTDs5s@D
+k5XT+s8V6Ds8V6Ds8W)\!<7W4J`_OGSEBhOJ,~>
+JaVdjrr@W<p[8"\m-XuVmJuYT_<q:'rU'XcrU'Xco'Q__md:)C!:K:H!<)<i!:BjTmJm7dmJm7]
+mJm7cmf*:emf!1qmJu\C!!)Eemd:)C!:K^a"7?0Wmf!4dmKrs^!:BjTmJu\C!<)<c!<2Ed!<;Kd
+!<;Kd!!)H\!<;Ke!!;Qgmf!1fmJu\S!<2Ec!!)Hb!!DWh!:K[`"7?-hmf!1omJu\C!:K7Tmd:)C
+rVuue!;u6f!:BjT!;Z$e!:BjT!:BjcmJm7dmJm7dme$P`mJuYTmK!4R#6=/lmJuYTme["]mKN[Z
+!:BgemeZtmmJu\C!:BgemJu\C!.jQhmXaeqmf*9;~>
+Ja2Lbrr@W8pZh_Xm-4]Rl2^)L_<M"#rTX@_rTX@_o'-G[lKSB7!:&k@!<)0e!9sRLl2Uh`l2UhY
+l2Uh_lMgkalM^bml2^,7!!)9alKSB7!:'F]"6omOlM^e`l3[OV!9sRLl2^,7!<)0_!<29`!<;?`
+!<;?`!!)<X!<;?a!!;EclM^bbl2^,K!<29_!!)<^!!DKd!:'C\"6ojdlM^bkl2^,7!:&hLlKSB7
+rVuua!;u*b!9sRL!;Yma!9sRL!9sR_l2Uh`l2Uh`lLb,\l2^)Ll2^eJ#6=#hl2^)LlMCSYl377R
+!9sOalMCPil2^,7!9sOal2^,7!.jEdl@J5ilMgj7~>
+J`c4Zrr@W4pZDJTm,eHNk5XTD_<(atrT4+[rT4+[o&^2Wk2u^+s5rJ8s8D'as5s@Dk5YJ\joGGU
+joGG[k5YJ]k5PAik5XT+s8V6]k2u^+s5s4Y"6TXGk5PD\jpM.Ns5s@Dk5XT+s8D'[s8M0\s8V6\
+s8V6\rrD3Ts8V6]rrV?_k5PA^k5XTCs8M0[rrD3Zrr_E`s5s1X"6TX`k5PAgk5XT+s5rJDk2u^+
+rr3#]s8;!^s5s@Ds7td]s5s@Ds5s@[joGG\joGG\k4S`Xk5XTDk5YDB#QNrdk5XTDk552Ujp(kJ
+s5s@]k55/ek5XT+s5s@]k5XT+s+0<`k(2Zak5PF3~>
+JaVdjrrB=l!!)uc!!)uc!!(L9"9@iimJuVArW(73!!*#drrE&drr<5j!:BjTmf!4dmem+cmem+c
+mem+cmf!1kmJm7T!!)HTrW!&g!:K:S!;Psf!:BjT!!)HT!;5a[!<2Ec!"J>rmJm7TmJu\C!:BjT
+rW!/j!:BgemdC&S!:KU^s6]jerU'XcrpKdds6^'kmJm7TmK!7Srr<&er;Zicq>^N`rW!&g!!)Hb
+!!DWh!:Kgd!:Kgd"7?-hmeQn`mem+emJu\S!"&&nmd:)C!:BjTrVuue!;c-_!;GpZ!<)<c!<)<c
+!<2EZ!<;Kd!<)<d!:Kdcs6fR\rpKacs6f^`!:Kdc#4;HkmJuYTJaS*WJaSuprr@Q~>
+Ja2LbrrB=h!!)u_!!)u_!!(L5"9@]el2^29rW(7/!!*#`rrE&`rr<5f!9sRLlM^e`lMU\_lMU\_
+lMU\_lM^bgl2UhL!!)<LrW!&c!:&kK!;Pgb!9sRL!!)<L!;5UW!<29_!"J2nl2UhLl2^,7!9sRL
+rW!/f!9sOalK\?K!:'=Zs69RarTX@_rp'L`s69dgl2UhLl2^hKrr<&ar;Zi_q>^N\rW!&c!!)<^
+!!DKd!:'O`!:'O`"6ojdlM:J\lMU\al2^,K!"%ojlKSB7!9sRLrVuua!;c![!;GdV!<)0_!<)0_
+!<29V!<;?`!<)0`!:'L_s6B:Xrp'I_s6BF\!:'L_#3l0gl2^)LJa.gOJa/]hrr@Q~>
+J`c4ZrrB=d!<<#[!<<#[!<:O1"TRWak5Xf1rr::+!<<&\s8W)\s8N8bs5s@Dk5PD\k5G;[k5G;[
+k5G;[k5PAck5YJDs8V6Drr3)_s5rJCs7k^^s5s@Ds8V6Ds7PLSs8M0[rse,jk5YJDk5XT+s5s@D
+rr32bs5s@]k2u[C!9X(Vs5j=]rT4+[roX7\s5jOck5YJDk5YGCs8N)]rVll[qYpQXrr3)_s8V6Z
+rr_E`s5s=\!9X:\"6TX`k5,)Xk5G;]k5XTCrs@ifk2u^+s5s@Drr3#]s8(mWs7b[Rs8D'[s8D'[
+s8M0Rs8V6\s8D'\s5s:[s5s%TroX4[s5s1X!9X7[#3Psck5XTDJ`_OGJ``E`rr@Q~>
+JaVdjrrB:k!!*#d!!*#d!!(L9#QX;\!:K7TmK!4R!!)f^p&P$YrrE&drW)udrW)ob!!)l`rrE&d
+rrE&drrE&d$NTV_!:BjT!:K7T!<2Bd!<2Be!:Kgd"7?-hmed%bmeZtcmJu\S!"SDsmJm7T!!)Ee
+!:BjT!;Ps_!:Kgd!U]sZmK<OXmJu\S!!M]imd:)RmK<OX!!)Hb!!qummd:)C!!)Hc!!M]imd:)P
+mK<OXmJu\S!!hol!:K7T!:Kab"7?-hmeZtamf!1hmJuYTmed%jmJuYTmJuYTmf!4dmcjcPme$P[
+me-Y\mdpMVm_Jo'mf!3;mXaeWm[<MC!.Y~>
+Ja2LbrrB:g!!*#`!!*#`!!(L5#QX/T!:&hLl2^eJ!!)fZp&P$UrrE&`rW)u`rW)o^!!)l\rrE&`
+rrE&`rrE&`$NTJW!9sRL!:&hL!<26`!<26a!:'O`"6ojdlMLV^lMCP_l2^,K!"S8ol2UhL!!)9a
+!9sRL!;Pg[!:'O`!U9[Vl3%+Pl2^,K!!MQelKSBJl3%+P!!)<^!!qiilKSB7!!)<_!!MQelKSBH
+l3%+Pl2^,K!!hch!:&hL!:'I^"6ojdlMCP]lM^bdl2^)LlMLVfl2^)Ll2^)LlM^e`lKS?LlLb,W
+lLk5XlLY)RlG3K#lM^d7l@J5OlC$r;!.Y~>
+J`c4ZrrB:c!<<&\!<<&\!<:O1#lj&Ls5rJDk5YDB!<;iVpAb'Qs8W)\rr<#\rr;rZ!<;oXs8W)\
+s8W)\s8W)\$ifAOs5s@Ds5rJDs8M-\s8M-]s5s=\"6TX`k5>5Zk55/[k5XTCrsn2kk5YJDs8V6]
+s5s@Ds7k^Ws5s=\!TsFRjok_Hk5XTCrrhKak2u^Bjok_Hs8V6Zrs7cek2u^+s8V6[rrhKak2u^@
+jok_Hk5XTCrs.]ds5rJDs5s7Z"6TX`k55/Yk5PA`k5XTDk5>5bk5XTDk5XTDk5PD\k3DsHk4S`S
+k4\iTk4J]Nk/%)tk5PC3k(2ZGk*bB3!.Y~>
+JaVdjrrC71rrE&drrE&drrDTW"p")Z!:K7Tlg=`QrU'^emdC&S!:Kgd!:Kdc!:Kdc"muBY!!)Hc
+!"&&n!:BjT!:K7TrU'^emdC&Ss6^*lmJm7T!:K:S!!DWh!:Kgd!U]semf*:cmJm7dmf*:emf*:e
+mf*:cmf*:emf*7emed(bmLoTg!:K7Tmd:&TmJm7T!!)Ee!:K^a#4;HkmJm7Tr;[2m!:K7T!:BjT
+mK!%M!<DQe!:fIZ!:BjTqu?cc!;l0d!:BjTr;cib!<DQd!!;Qgmem+dmK!(N!s%`hmem.cmKWa[
+!:BjT!:KU^!:Kgd!:Kgd!:KO\!:JnJ!:K=VrU0Xbp[7qZoBu>QrpKacqsOF`rpKX`"7?0W!<2Eb
+!<;KQ!.jQhmXaesmf*9;~>
+Ja2LbrrC7-rrE&`rrE&`rrDTS"p!rR!:&hLlfnHMrTXFalK\?K!:'O`!:'L_!:'L_"mQ*Q!!)<_
+!"%oj!9sRL!:&hLrTXFalK\?Ks69ghl2UhL!:&kK!!DKd!:'O`!U9[alMgk_l2Uh`lMgkalMgka
+lMgk_lMgkalMghalMLY^l4X0_!:&hLlKS?Ll2UhL!!)9a!:'F]#3l0gl2UhLr;[2i!:&hL!9sRL
+l2^VE!<DEa!:f=V!9sRLqu?c_!;l$`!9sRLr;ci^!<DE`!!;EclMU\`l2^YF!s%TdlMU__l3@=S
+!9sRL!:'=Z!:'O`!:'O`!:'7X!:&VF!:'%RrTa@^pZhYVoBQ&Mrp'I_qs+.\rp'@\"6omO!<29^
+!<;?M!.jEdl@J5klMgj7~>
+J`c4ZrrC7)s8W)\s8W)\s8VWO#63iJs5rJDlfJ3IrT41]k2u[C!9X:\!9X7[!9X7["m5jIs8V6[
+rs@ifs5s@Ds5rJDrT41]k2u[Cs5jRdk5YJDs5rJCrr_E`s5s=\!TsF]k5YJ[joGG\k5YJ]k5YJ]
+k5YJ[k5YJ]k5YG]k5>8ZjqIdWs5rJDk2u^Dk5YJDs8V6]s5s4Y#3Psck5YJDrVm5es5rJDs5s@D
+k5Y5=!WV<]s7,4Rs5s@Dr;Qf[s81p\s5s@DrVulZ!WV<\rrV?_k5G;\k5Y8>"97N`k5G>[jp1qK
+s5s@Ds5s+V!9X:\!9X:\!9X"T!9WAB!9WeNrT=+ZpZDDRoB,fIroX4[qr[nXroX+X"6TXGs8M0Z
+s8V6Is+0<`k(2Zck5PF3~>
+JaVdjrrD-J!!*#drrE)erW)udrrE&d!!)rb"9@ii!:Kdc$gmupmJuYTmd:)C!<)<c!<2Ed!!;Qg
+mf!4dmK*CV!<)?c!<2Ed!<;Kd!!)Hd!!;Qgmem+cmem+cme?bamJm7Tr;[/l!!)HT!!)HT!;l3a
+!!)Hd!<;Hg!:K:S!!)Hd!!)Hb!<;Hk!:K7Tmd:)SmJm7dmf!1kmJm7T!!)EerpBsjmJuYT!:Kgd
+"7?0W!<2Bi!:BjT!:K^a!q$'VqZ$lh!:BjT!:K:O!!Vcjmd:&TrpBadqsO.Xs6]jep[7_TqsNVI
+q<kfo#4;KZ!:BgerpKac!q$'VrW)f_"9@iimK!(N"p"&kmJuYTp$VJQ"muBY!:BjcmKWa[!:BjT
+!:K^a%.4)qmd:&TmJuYT!:Kdc!:K[`s6fjdJaS*WJaSrorr@Q~>
+Ja2LbrrD-F!!*#`rrE)arW)u`rrE&`!!)r^"9@]e!:'L_$gI]ll2^)LlKSB7!<)0_!<29`!!;Ec
+lM^e`l2gtN!<)3_!<29`!<;?`!!)<`!!;EclMU\_lMU\_lM(>]l2UhLr;[/h!!)<L!!)<L!;l']
+!!)<`!<;<c!:&kK!!)<`!!)<^!<;<g!:&hLlKSBKl2Uh`lM^bgl2UhL!!)9aros[fl2^)L!:'O`
+"6omO!<26e!9sRL!:'F]!pTdNqZ$ld!9sRL!:&kG!!VWflKS?LrosI`qs*kTs69RapZhGPqs*>E
+q<GNk#3l3R!9sOarp'I_!pTdNrW)f["9@]el2^YF"p!ogl2^)Lp$22M"mQ*Q!9sR_l3@=S!9sRL
+!:'F]%-dfmlKS?Ll2^)L!:'L_!:'C\s6BR`Ja.gOJa/Zgrr@Q~>
+J`c4ZrrD-B!<<&\s8W,]rr<#\s8W)\!<;uZ"TRWas5s:[$g.Khk5XTDk2u^+s8D'[s8M0\rrV?_
+k5PD\joYSFs8D*[s8M0\s8V6\rrD3\rrV?_k5G;[k5G;[k4nrYk5YJDrVm2ds8V6Ds8V6Ds81sY
+rrD3\s8V3_s5rJCrrD3\rrD3Zs8V3cs5rJDk2u^CjoGG\k5PAck5YJDs8V6]roOFbk5XTDs5s=\
+"6TXGs8M-as5s@Ds5s4Y!p9OFqu6o`s5s@Ds5rJ?rrqQbk2u^DroO4\qr[VPs5j=]pZD2Lqr[)A
+q<#9g#3PsJs5s@]roX4[!p9OFrr;iW"TRWak5Y8>#63ick5XTDp#brI"m5jIs5s@[jp1qKs5s@D
+s5s4Y%-ITik2u^Dk5XTDs5s:[!9X.Xs5s=\J`_OGJ``B_rr@Q~>
+JaVdjrrD*I!!*#d!!*#d!!*#d!!*#d!!)l`!<DQ[!!DWhmK!.P!!*#dquHcbrrE)e!!*#d!s%cW
+!<2Bd!<2Ed!<;Ke!!)Hc!!DWh!:KL[#OVT[!:K7Tmem.cmK3IWmK!1Q#6=/l!:Bgemem.cmK<OX
+!!)Ha!!VcjmJuYTrU'pkmd:)CmJu\CqZ-W`#6=2[!:K7Tmem+cmf!4amf!4cmem.bmeZtamdC,U
+mf!4cmf*:dme-Y\mJm7`ma(t6maM4:mem+cmf!1dmf!1gmJm7Tq>^N`r;[/l!:Bgemd:)Cmf!1f
+mJu\S!!2Kfr9aahmd:)CmK!.P#QX8m!:BgemK!"Lqu?ie!!)Hb!<;I6!:K7Tmd:)CmJu\C!:K7T
+md:&TmJuYTmJm7TmJuYT!:BjTmJu\P!!_ik!:BjT!.jQhmXaepmf*9;~>
+Ja2LbrrD*E!!*#`!!*#`!!*#`!!*#`!!)l\!<DEW!!DKdl2^_H!!*#`quHc^rrE)a!!*#`!s%WO
+!<26`!<29`!<;?a!!)<_!!DKd!:'4W#O2<S!:&hLlMU__l2q%Ol2^bI#6=#h!9sOalMU__l3%+P
+!!)<]!!VWfl2^)LrTXXglKSB7l2^,7qZ-W\#6=&S!:&hLlMU\_lM^e]lM^e_lMU_^lMCP]lL+]Q
+lM^e_lMgk`lLk5Xl2Uh\lHfP2lI5e6lMU\_lM^b`lM^bcl2UhLq>^N\r;[/h!9sOalKSB7lM^bb
+l2^,K!!2?br9=IdlKSB7l2^_H#QX,i!9sOal2^SDqu?ia!!)<^!<;=2!:&hLlKSB7l2^,7!:&hL
+lKS?Ll2^)Ll2UhLl2^)L!9sRLl2^,H!!_]g!9sRL!.jEdl@J5hlMgj7~>
+J`c4ZrrD*A!<<&\!<<&\!<<&\!<<&\!<;oX!WV<Srr_E`k5Y>@!<<&\r;ZfZs8W,]!<<&\"97NG
+s8M-\s8M0\s8V6]rrD3[rr_E`s5s"S#Nl'Ks5rJDk5G>[jobYGk5YAA#QNrds5s@]k5G>[jok_H
+s8V6YrrqQbk5XTDrT4Cck2u^+k5XT+qu?ZX#QNrKs5rJDk5G;[k5PDYk5PD[k5G>Zk55/Yk3r<M
+k5PD[k5YJ\k4\iTjoGGXk0X/.k1'D2k5G;[k5PA\k5PA_k5YJDqYpQXrVm2ds5s@]k2u^+k5PA^
+k5XTCrrM9^r8n4`k2u^+k5Y>@#lj&es5s@]k5Y2<r;Ql]s8V6Zs8V4.s5rJDk2u^+k5XT+s5rJD
+k2u^Dk5XTDk5YJDk5XTDs5s@Dk5XT@rs%Wcs5s@Ds+0<`k(2Z`k5PF3~>
+JaVgkrW)udrrE&drrDBQ"T[uY!!)Hd!!Vcj!:K7Tq!J._mdpJ\mJm7cmK*CVme$S[mK3IWmK!4R
+"T[uY!!)H\!<;KY!!_ik!:K7Tmem+cmem+dmK!+O!W_ZVrW!/j!!)HT!:Kdc!:KabrpKacqsFRe
+mJuYTrU0Uar9aXemJu\#!!)Hd!<;He!<2Bd!;Z'^!!Vcj!:K7Tp$VbY!:Kdc!U]semK*CVmeHk_
+me?b^mem.[mem+hmJuYTmdC&S!:Kgd!:Kdc!q$'Vr;ZicrW!#f!:Kab!:Kgd#4;KZ!:BjTq#CE_
+q>^fh!!)EemJu\Cr;[2m!!)EemJm7TmK!7S!!*#d!!*#d!!)uc$39JomJuYTmJuYTq<mbQ!U]se
+mf*:dmK3IW!:Kgds6fmes6fgcrpKdds6fmes6fjd%.4)qmJuYT!:BjTmJqh+JaS*WS*p:VJ,~>
+Ja2OcrW)u`rrE&`rrDBM"T[iQ!!)<`!!VWf!:&hLq!%k[lLY&Xl2Uh_l2gtNlLb/Wl2q%Ol2^eJ
+"T[iQ!!)<X!<;?U!!_]g!:&hLlMU\_lMU\`l2^\G!W_NNrW!/f!!)<L!:'L_!:'I^rp'I_qs":a
+l2^)LrTa=]r9=@al2^+p!!)<`!<;<a!<26`!;YpZ!!VWf!:&hLp$2JU!:'L_!U9[al2gtNlM1G[
+lM(>ZlMU_WlMU\dl2^)LlK\?K!:'O`!:'L_!pTdNr;Zi_rW!#b!:'I^!:'O`#3l3R!9sRLq#CE[
+q>^fd!!)9al2^,7r;[2i!!)9al2UhLl2^hK!!*#`!!*#`!!)u_$39>kl2^)Ll2^)Lq<IJM!U9[a
+lMgk`l2q%O!:'O`s6BUas6BO_rp'L`s6BUas6BR`%-dfml2^)L!9sRLl2ZD#Ja.gOS*L"RJ,~>
+J`c7[s8N3%k2u^DroX7\lfJBNk2u^Dk5PAak5YJDk5Y5=!WV<SrrV?_s8D']s5rJ:s8V3`s5rJD
+rT4:`k2u^Dk4\iTk4ATWk5YJDk5XTBrrD3[rrM9^qW7kZk2u[C#3Psck2u^+rVll[r;ZcYrr;lX
+"TRWak5YDBrVufX"97N`k0Eu,k5PD\joGG\joGGWk5PAak5YJDk5Y,:rVll[rVlo\s8M-^s5rJ>
+s8V6VrrD3[s7b[SrrqQbk5XT+rr2u\rr2u\rVlr]s5s:[!9X:\!p9OFr;QcZrr32bs5s@Ds5s.W
+!9X.X#j20ek5XTDk2uXB$KhBgk5XTDs5rJDroO4\roO4\roO4\rT4Iek5XTDk5XTDk5Y8>nc&XP
+s8M0\s8M-_s5s@Drr<#\s8W,]rVulZs8W,]s8W,]rr3Dhs8V6]k5YJDs5rJDJ`_OGJ``Harr@Q~>
+JaVdjrrE)errE)errD<O$io\qmJuYTmJuYTmJutK!<DQd!!)Hc!!VcjmJuYTrpBadrU'[dmed%j
+mJu\C!:BjT!;l0h!:BjT!:BjTq#CNb!:K:K!!DWhmdBWGrU'jimJuYT!:Kdc"7?0Wmd'oRmdC/U
+mdgGVmf!4cmem.bmeZtamed(bmK!=Ur;[5n!!)Ee!:K7Tmd:)NmK!=UrW!&g!:Bj[mK!=UrW!#f
+!:Kgd"muBYmJu\Q!!holmJm7T!:Kdc"muBY!!)Hd!;Z$`!:Kgd&+0GcmJm7T!:BjT!:Bgemem+c
+med%bme-V\mf!1dmf!1dme$P[mf!1dmf!4dmf!1dmf!1imJm7T!:KgdrpBgfmK!4R!!)uc%fl%c
+!:BjTmJuYTmd:)C!;l3a!<2Ec!<;Kc!!)Hc!"82pmJm7T!:BgemdC&Ss6fO[s6^'kmJu\C!:K[`
+s6fmerpBadJaS*WJaT&rrr@Q~>
+Ja2LbrrE)arrE)arrD<K$ioPml2^)Ll2^)Ll2^PC!<DE`!!)<_!!VWfl2^)LrosI`rTXC`lMLVf
+l2^,7!9sRL!;l$d!9sRL!9sRLq#CN^!:&kC!!DKdlK[p?rTXRel2^)L!:'L_"6omOlKeKNlL+`Q
+lLP#RlM^e_lMU_^lMCP]lMLY^l2^nMr;[5j!!)9a!:&hLlKSBFl2^nMrW!&c!9sRWl2^nMrW!#b
+!:'O`"mQ*Ql2^,I!!hchl2UhL!:'L_"mQ*Q!!)<`!;Ym\!:'O`&*a/[l2UhL!9sRL!9sOalMU\_
+lMLV^lLk2XlM^b`lM^b`lLb,WlM^b`lM^e`lM^b`lM^bel2UhL!:'O`rosObl2^eJ!!)u_%fkn[
+!9sRLl2^)LlKSB7!;l']!<29_!<;?_!!)<_!"8&ll2UhL!9sOalK\?Ks6B7Ws69dgl2^,7!:'C\
+s6BUarosI`Ja.gOJa/cjrr@Q~>
+J`c4Zs8W,]s8W,]s8V?G%0,Jik5XTDk5XTDk5Y/;!WV<\rrD3[rrqQbk5XTDroO4\rT4.\k5>5b
+k5XT+s5s@Ds81p`s5s@Ds5s@Dq>UQZs5rJ;rr_E`k2u77rT4=ak5XTDs5s:["6TXGk3W*Jk3r?M
+k4AWNk5PD[k5G>Zk55/Yk5>8ZjoPMErVm8fs8V6]s5rJDk2u^>joPMErr3)_s5s@SjoPMErr3&^
+s5s=\"m5jIk5XTArs.]dk5YJDs5s:["m5jIs8V6\s7tdXs5s=\&*EoSk5YJDs5s@Ds5s@]k5G;[
+k5>5Zk4\fTk5PA\k5PA\k4S`Sk5PA\k5PD\k5PA\k5PAak5YJDs5s=\roO:^k5YDB!<<#[&-(eS
+s5s@Dk5XTDk2u^+s81sYs8M0[s8V6[rrD3[rsRuhk5YJDs5s@]k2u[Cs5s"Ss5jOck5XT+s5s1X
+s5s@]roO4\J`_OGJ``Kbrr@Q~>
+JaVdjrW!,i!!)Ee!9`eL!!)Hd!!)Hd!;GpO!<;Hh!:K7TqsO:\rU0Xbq<n4^!:J57!q$'VkQ(YN
+rW)rcnGrUWoDf'_!:BjT!<2Bi!:BjT!:K^a!q$'VqZ%)n!:BjT!!)Ee!:Bgemf!4dmKWa[!:BjT
+mK!4RrrE)err<&erW)WZ"T[uY!:K:R!!Vcj!:BjTqu?`br;ZicrW!#f!:K[`"RZ9X!!)oa&ch@f
+!:K7T!:K7T!:BgemJm7Tr;ZicrW)udrr<&erVurdrVurdrVurdr;Zoe!!*#drr<&equ?`br;[2m
+!!)EemJu\C!:Kgd"RZ9X!!*#drrE#c!!)ZZ!!)uc!!)uc!!)WY!!*#d!!*#d!W_WgrpBadrpBad
+rU'XcrpBadrpBgfmdC&SqX+CbmdC&S!:KO\rpKddJaS*WJaT)srr@Q~>
+Ja2LbrW!,e!!)9a!9`YH!!)<`!!)<`!;GdK!<;<d!:&hLqs+"XrTa@^q<IqZ!:%r3!pTdNkQ(YJ
+rW)r_nGrUSoDf'[!9sRL!<26e!9sRL!:'F]!pTdNqZ%)j!9sRL!!)9a!9sOalM^e`l3@=S!9sRL
+l2^eJrrE)arr<&arW)WV"T[iQ!:&kJ!!VWf!9sRLqu?`^r;Zi_rW!#b!:'C\"R6!P!!)o]&ch4^
+!:&hL!:&hL!9sOal2UhLr;Zi_rW)u`rr<&arVur`rVur`rVur`r;Zoa!!*#`rr<&aqu?`^r;[2i
+!!)9al2^,7!:'O`"R6!P!!*#`rrE#_!!)ZV!!)u_!!)u_!!)WU!!*#`!!*#`!W_KcrosI`rosI`
+rTX@_rosI`rosOblK\?KqW\+^lK\?K!:'7Xrp'L`Ja.gOJa/fkrr@Q~>
+J`c4Z#QXo)k5YJDs8V9Err2u\rr2u\rr;`Tnc/XO"97NGs81sTs8D*Zs7tgVrrD3/rrV?_k32jF
+k5PD[k4/KOk4JZWk5XTDk5YGC"om`bk5XT@rrV?_k55/fk5XTDk5YJDs8V6]s5s=\s5jRdk5XTD
+k2u^Bk5YJ]k5YG]k5PDRjoteIk5XT+rVm&`s8V6]k5>5Zk5G;[k5PA^k5XT?rrhKak5YJYjq@^V
+k5XT+s8V6Ds8V6]s5s@]k5G;[k5PD\k5YG]k5PA\k5PA\k5PA\k5G;]k5YJ\k5YG]k5>5Zk5G;e
+k5YJDs5s@Dk5XTCrrhKak5YJ\k5YJ[joGGRjoGG[joGG[joGGQjoGG\joGG\joYSFs8M-\s8M-\
+s8D'[s8M-\s8M-^s5rJCs8(jZs5rJCrrD3Ts8M0\s+0<`k(2Zck5PF3~>
+JaVdjq#K^JmK!1QlN$qP^&S0$q>^fh!!)EemJm7TqZ-T_o`,0`!:BjT!<2Bf!:K:Q!!)H`!;u9a
+!!)Hd!#t>+!:Bgemd:)C!:K7Tmd:&TmJm7T!!)Ee!:K^a!:Kdc"7?-hme["`mf!4bmJm7dmK*CV
+me-YZmK<OXmJu\B!!M]imJu\O!!)H_!<;Ke!<)<g!:K7T!<2Bp!:BjTmJm7T!:Bgemem+fmJm7T
+rW)udmJm7Tr;Zicr;cibrrDo`p&O=E!!*#d!!*#d!!)l`!!)ucrrE)er;clcrrE)e"p")Z!:K7T
+qsFmnmd:)CmJu\C!:BjT!;c*g!:K7T!:BjTqZ$Zb!<2Bd!5%Y!!<)<c!<)<c!.jQhmXafmmf*9;~>
+Ja2Lbq#K^FmK!1MlN$qL^&S/uq>^fd!!)9al2UhLqZ-T[o`,0\!9sRL!<26b!:&kI!!)<\!;u-]
+!!)<`!#t2'!9sOalKSB7!:&hLlKS?Ll2UhL!!)9a!:'F]!:'L_"6ojdlMCS\lM^e^l2Uh`l2gtN
+lLk5Vl3%+Pl2^,:!!MQel2^,G!!)<[!<;?a!<)0c!:&hL!<26l!9sRLl2UhL!9sOalMU\bl2UhL
+rW)u`mJm7Pr;Zi_r;ci^rrDo\p&O=A!!*#`!!*#`!!)l\!!)u_rrE)ar;cl_rrE)a"p!rR!:&hL
+qs"UjlKSB7l2^,7!9sRL!;bsc!:&hL!9sRLqZ$Z^!<26`!5%Lr!<)0_!<)0_!.jEdl@J6elMgj7~>
+J`c4ZrrDrrlK7O7r9!>FroUrp!9X.X#j20ek5XTDs5s4YrT<eQ"m5jIs5s@\joYSFk5>5Zk5,,U
+k5PA\k5PB"k5YJDs8V6Ds5s@Dk5XT+s8V6]s5s@]k5YJDqu6ZYrVlu^s8V6Ys8M0[s8D'[s8M-^
+s5rJ;s8D'_s5rJDk3`0Ok5XTDk5,)Xk5#&Wk5YJ[jok_Hk5YJ\jp_:Ps5rJDs5s@Ds8V6[rr_E`
+s5s=\s5rbL!9X7[!9X7[roX7\qW@MOkiMmFroO4\roO4\qW7eXrT=.[s5s:[s5s@]s5jOck2u^+
+k5Y>@%KGSQs5rJDk2u^+s5s@Xjp1qKk5YJDs5s4Y!TsF]joGFnjoGG[joGG[joGF4k(2ZGk3V71
+!.Y~>
+JaVdjrr<&er;bsIrVurdrVurdr;cfa!!)uc!W_ZVoDemZrW)rc!!*#dp]1<]rW)c^rVurdrVurd
+q#LH_oDngWoDnpZnc/aZ!:K^a$gmupmJm7TmJu\C!<2E\!!Vcj!:BgerpC3qmJuYT!:BjT!!)HT
+!<2Bd!<2Be!:Kgd"7?-hmed%bmeZtamf!1fmJu\D!!VcjmJm7TrW)udrW)`]rrE)e!<DQa!!)HO
+!!_ikmJm7T!<)<f!:K7TrU'XcrpKddrpKddrpKddrpBmhmJm7Tr;Zicr;clcpAb6^!<2Bk!:K7T
+!:K7TrpBado^;\Ym-XiRrU'XcrpKdd"RZ9X!!*#d!!)rb!!*#d!s%`hmem+emJm7cmK<OX!:Bj_
+mf!1dmem+cmf!1dmem.bmf*:emK!=Uq#CQc!:K7T\aBFtrpBadrpKddrU'XcrU'XcrpBadrpKac
+s6fjds6]pgmJqh+JaSE`rr@Q~>
+Ja2Lbrr<&ar;bsErVur`rVur`r;cf]!!)u_!W_NNoDemVrW)r_!!*#`p]1<YrW)cZrVur`rVur`
+q#LH[oDngSoDnpVnc/aV!:'F]$gI]ll2UhLl2^,7!<29X!!VWf!9sOarospml2^)L!9sRL!!)<L
+!<26`!<26a!:'O`"6ojdlMLV^lMCP]lM^bbl2^,<!!VWfl2UhLrW)u`rW)`YrrE)a!<DE]!!)<K
+!!_]gl2UhL!<)0b!:&hLrTX@_rp'L`rp'L`rp'L`rosUdl2UhLr;Zi_r;cl_pAb6Z!<26g!:&hL
+!:&hLrosI`o]lDUm-4QNrTX@_rp'L`"R6!P!!*#`!!)r^!!*#`!s%TdlMU\al2Uh_l3%+P!9sR[
+lM^b`lMU\_lM^b`lMU_^lMgkal2^nMq#CQ_!:&hL\`s.prosI`rp'L`rTX@_rTX@_rosI`rp'I_
+s6BR`s69Xcl2ZD#Ja/-Xrr@Q~>
+J`c4Zrr<&]rVu!Arr2u\rr2u\rVuiY!<<#[!rqEFo`"pRrr;u[!<<&\q#C?Urr;fVrr2u\rr2u\
+q>^KWo`+jOo`+sRo)AdRs5s4Y$g.Khk5YJDk5XT+s8M0TrrqQbs5s@]roO[ik5XTDs5s@Ds8V6D
+s8M-\s8M-]s5s=\"6TX`k5>5Zk55/Yk5PA^k5XT4rrqQbk5YJDrr<#\rr;cUs8W,]!WV<YrrD3G
+rs%Wck5YJDs8D'^s5rJDrT4+[roX7\roX7\roX7\roO@`k5YJDrVll[rVuo[p\t9Vs8M-cs5rJD
+s5rJDroO4\o]H/Qm,e<JrT4+[roX7\"QoaHs8W)\!<;uZ!<<&\"97N`k5G;]k5YJ[jok_Hs5s@W
+k5PA\k5G;[k5PA\k5G>Zk5YJ]joPMEq>UT[s5rJD\`NnlroO4\roX7\rT4+[rT4+[roO4\roX4[
+s5s=\s5jC_k5U"pJ`_jPrr@Q~>
+JaVgko`4:F%05ermJuYTmJuYTmJm7dmJm7dmK*CVmcslQmf*7smJuYTmJuYT!:BjT!:BjamKWa[
+!:BjT!:K^a!:Kab!:KR]!q$'Vo`,0`!!)Eemed%bmed(bmKN[Z!:K7TmeQn`mf!1emK!7S!W_ZV
+p]1?^rrE)err</h!:K:R!!)Hd!"/,omJm7T!:BjTmf!4dmem+cmem+cmem+cmem+cme-Y[mf!4`
+mK<OX!:BjdmK<OX!:Bj^mL90amJu\C!!)EemJuYTrpK[as6]jerpBdemf!4dmJm7dmJm7RmJm7d
+mJm7dmJm7_mf*7lmJuYT!:K7TrpKCY%IO2rmd:&TmJm7TmJm7cmK<OX!:K:K!<2Ed!<)<e!:Bjc
+mK3IW!:Kgds6fjd!:KgdrpBadqX+Rgmd:&TmJu\Q!;l3`!;Gp\!!M]i!:K:S!!)Hd!!holmJuYT
+!:KFYrU'Xc]^?4/md:&TmJuYT!:K7T!<2Bd!;u6b!<2Bn!:BjT!:BjT!:Bi<mXae_mf*9;~>
+Ja2Oco`4:B%05Ynl2^)Ll2^)Ll2Uh`l2Uh`l2gtNlK\HMlMghol2^)Ll2^)L!9sRL!9sR]l3@=S
+!9sRL!:'F]!:'I^!:':Y!pTdNo`,0\!!)9alMLV^lMLY^l377R!:&hLlM:J\lM^bal2^hK!W_NN
+p]1?ZrrE)arr</d!:&kJ!!)<`!".ukl2UhL!9sRLlM^e`lMU\_lMU\_lMU\_lMU\_lLk5WlM^e\
+l3%+P!9sR`l3%+P!9sRZl4!aYl2^,7!!)9al2^)Lrp'C]s69RarosLalM^e`l2Uh`l2UhNl2Uh`
+l2Uh`l2Uh[lMghhl2^)L!:&hLrp'+U%I*onlKS?Ll2UhLl2Uh_l3%+P!:&kC!<29`!<)0a!9sR_
+l2q%O!:'O`s6BR`!:'O`rosI`qW\:clKS?Ll2^,I!;l'\!;GdX!!MQe!:&kK!!)<`!!hchl2^)L
+!:'.UrTX@_]]oq+lKS?Ll2^)L!:&hL!<26`!;u*^!<26j!9sRL!9sRL!9sQ8l@J5WlMgj7~>
+J`c7[p&F=>%KGSjk5XTDk5XTDk5YJ\joGG\joYSFk3N'Ik5YGkk5XTDk5XTDs5s@Ds5s@Yjp1qK
+s5s@Ds5s4Y!9X4Z!9X%U!p9OFp&>3Xs8V6]k5>5Zk5>8Zjp(kJs5rJDk5,)Xk5PA]k5YGC!rqEF
+q#CBVs8W,]s8N2`s5rJBrrD3\rsIogk5YJDs5s@Dk5PD\k5G;[k5G;[k5G;[k5G;[k4\iSk5PDX
+jok_Hs5s@\jok_Hs5s@Vjph@Qk5XT+s8V6]k5XTDroX.Ys5j=]roO7]k5PD\joGG\joGGJjoGG\
+joGG\joGGWk5YGdk5XTDs5rJDroWkQ%Hd]jk2u^Dk5YJDk5YJ[jok_Hs5rJ;s8M0\s8D']s5s@[
+jobYGs5s=\s5s=\!9X:\roO4\qW8%_k2u^Dk5XTAs81sXs7b[TrrhKas5rJCrrD3\rs.]dk5XTD
+s5rqQrT4+[]]K\'k2u^Dk5XTDs5rJDs8M-\s8;!Zs8M-fs5s@Ds5s@Ds5s?4k(2ZOk5PF3~>
+JaVdjrr<&er;c$K"T[uY!!)Hd!"nW!!:K7T!:K7Tmd:)CmJm7Tr;Zicr;Zrf!!)Hd!!2KfrU(6t
+md:&TmJm7TmJm7TmJu\C!<)<h!:K7T!:KO\"7?-hmeHhhmJm7TmJuYT!:K.Q!:Kgds6]pgmdBoO
+!:Kgds6fjdrpK:VrpKddrpBadrpKacrpKddrU'XcrpBadrpBgfmdC&Ss6^*lmJu\C!:BjdmJm7d
+meZtimJu\C!:BjT!;l3_!<;Hk!:K7Tmd:)MmLTBd!:Bgemd:&TmJm7T!!)Hc!!qum!:K7TmJu\S
+!!M]imd:)?mKWa[!!)HT!!)uc!!)ucrVurdqu?`bnGig^!:BjTmJu\O!!Vcjmd:&TrpBdemf!1l
+mJm7T!:BjT!<2Bd!<2Bd!<2Bf!:K:R!<;Hg!:K:R!<;He!;Psa!:BjTli@(Ro)K'a!!)Eemd:)C
+mf<@T!!'Uu%fl"tmJu\C!:BgemJu\C!;c*l!:K7T!:BgemJm7T!.jQhmYL<2!.Y~>
+Ja2Lbrr<&ar;c$G"T[iQ!!)<`!"nJr!:&hL!:&hLlKSB7l2UhLr;Zi_r;Zrb!!)<`!!2?brTXsp
+lKS?Ll2UhLl2UhLl2^,7!<)0d!:&hL!:'7X"6ojdlM1Ddl2UhLl2^)L!:&kM!:'O`s69XclK\3G
+!:'O`s6BR`rp'"Rrp'L`rosI`rp'I_rp'L`rTX@_rosI`rosOblK\?Ks69ghl2^,7!9sR`l2Uh`
+lMCPel2^,7!9sRL!;l'[!<;<g!:&hLlKSBEl4<s\!9sOalKS?Ll2UhL!!)<_!!qii!:&hLl2^,K
+!!MQelKSB7l3@=S!!)<L!!)u_!!)u_rVur`qu?`^nGigZ!9sRLl2^,G!!VWflKS?LrosLalM^bh
+l2UhL!9sRL!<26`!<26`!<26b!:&kJ!<;<c!:&kJ!<;<a!;Pg]!9sRLli@(No)K']!!)9alKSB7
+mf<@P!!'Uq%fkkpl2^,7!9sOal2^,7!;bsh!:&hL!9sOal2UhL!.jEdlA4a*!.Y~>
+J`c4Zrr<&]rVu'C"om`Is8V6\rt4Dns5rJDs5rJDk2u^+k5YJDrVll[rVlu^s8V6\rrM9^rT4^l
+k2u^Dk5YJDk5YJDk5XT+s8D'`s5rJDs5s%T"6TX`k5##`k5YJDk5XTDs5rYI!9X:\s5jC_k2uO?
+!9X:\s5s=\roWbNroX7\roO4\roX4[roX7\rT4+[roO4\roO:^k2u[Cs5jRdk5XT+s5s@\joGG\
+k55/ak5XT+s5s@Ds81sWs8V3cs5rJDk2u^=jq.RTs5s@]k2u^Dk5YJDs8V6[rs7ces5rJDk5XTC
+rrhKak2u^/jp1qKs8V6Ds8W&[!<<#[rr2u\r;QcZnc&jVs5s@Dk5XT?rrqQbk2u^DroO7]k5PAd
+k5YJDs5s@Ds8M-\s8M-\s8M-^s5rJBs8V3_s5rJBs8V3]s7k^Ys5s@Dm/R+JoD]*Ys8V6]k2u^+
+n,NCL!<9Xm&-(elk5XT+s5s@]k5XT+s8(jds5rJDs5s@]k5YJDs+0<`k(r1"!.Y~>
+JaVdjq#K[I!!*#d!!*#d!!*#d!!*#drr<>m!:BjTmJm7To`,']!:KgdrU'XcrpBadrpC!kmd:&T
+md:)SmK3IWmK!7S!!*#drW!&g!!)HT!<;KJ!!)H`!!)Hc!!)Hc!;c-`!<;K_!;c*`!<)<c!<)<e
+!:BjdmJm7dmJm7bmL]HemJu\C!!)EemJuYTmJuYTr9aUdmdBrP!:Kgds6^!imJm7Tp&P-\#6=/l
+mJm7T!<)<d!:Kabs6fjd!:Kgds6]mfmed%gmJuYTmdBlNs6fgc"RZ9X!!)ucrrE#c"p")Z!:BjT
+r;clcrrE&d!<DQd!!M]imJu\S!!)Hd!!)Hd!!)H^!<;Ka!"&&n!:K7T!:BjTrVurdrW!;n!:K7T
+md:)CmK!1Q$39M^!:K7T!:BjTp&OjTrW!#f!:KdcqX4=_rpBadrpBgfmdB]I"RZ9X!:K.Q\F0=r
+$LRo^!:BgemJuYTq!JIhmJuYTmJuYTmJqh+JaS<]rr@Q~>
+Ja2Lbq#K[E!!*#`!!*#`!!*#`!!*#`rr<>i!9sRLl2UhLo`,'Y!:'O`rTX@_rosI`ros^glKS?L
+lKSBKl2q%Ol2^hK!!*#`rW!&c!!)<P!<;?F!!)<\!!)<_!!)<_!;c!\!<;?[!;bs\!<)0_!<)0a
+!9sR`l2Uh`l2Uh^l4F$]l2^,7!!)9al2^)Ll2^)Lr9==`lK\6H!:'O`s69^el2UhLp&P-X#6=#h
+l2UhL!<)0`!:'I^s6BR`!:'O`s69UblMLVcl2^)LlK\0Fs6BO_"R6!P!!)u_rrE#_"p!rR!9sRL
+r;cl_rrE&`!<DE`!!MQel2^,K!!)<`!!)<`!!)<Z!<;?]!"%oj!:&hL!9sRLrVur`rW!;j!:&hL
+lKSB7l2^bI$39AV!:&hL!9sRLp&OjPrW!#b!:'L_qWe%[rosI`rosOblK\!A"R6!P!:&kM\Ea%n
+$L.WV!9sOal2^)Lq!&1dl2^)Ll2^)Ll2ZD#Ja/$Urr@Q~>
+J`c4ZrrDrrl/i!GroO4\roO4\roO4\roX7\#j20Ls5rJDs5s"S!p9OFrr;rZ!<<&\!<<&\#QNrK
+s8V6Ds8M-_s5rJDroO4\roX4["6TX`k3i9Lk2cOBk5,)Xk5G;[k5G>Vk5YJ]k5#&RjoGG[joGG[
+joYSFs8M-\s8M-\s8;!ks5rJDk2u^Dk5XTDk5XTDk5YAA!rqEFqu6ZYrr<#\"TRWas5s%Ts5jRd
+k5XTDs5s@[joPMEr;ZfZrr2u\rr<#\!WV<[rrqQbk5XT+q>^KWrVm#_s5s@]rT=.[rT4=ak2u^+
+s5s:[s5s@]roO7]k5G;_k5XTDk5PA\k5PA\k5PA\k4nuVk55/bk5YJDk5YJDs5s=\!9X:\$KhBN
+k5XT+s5rJDr8n@dk2u^+k5YJDs5s%TpZDJT!p9OFrVu`Vrr;u[!<<&\!rqEFo`#'Vs5s@Dli4KW
+rr3>fs5s@Ds8V6]k5Y5=$NK8gk5XTDk5XTDJ`_OGLZ\U:J,~>
+JaVdjrW!,i!!)Ee!:0%Q!<2Ed!!)Hc!!)Hd!<;Kb!<;Hs!:K7TmJu\C!:BjTmJu\K!<2Ed!<2Ec
+!<;Hg!:Bjcmf*:dmf*7emem+cmf!4dmf!1fmJu\I!<;KX!<;Hf!:KL[s6^3omJuYTmJuYTmK!"L
+!s%`hmeQqZmJm7dmJm7dmJm7dmKN[ZmJu\C!;c*e!:BjT!:KX_"RZ6imK!7SoDnpZrrE)e"9@ii
+mdBoOs6fme!:Kgd"7?0WmdpJZmf!1dme$P[mf!1dmed%mmJuYTmJuYTmJuYTrpBjgmd:)SmJm7d
+mf!4dmK!=Ur;Zico)SgYjT#;Kr;clcrVurdq#CTd!:BjT!;c*f!:BjT!:K:S!!;Qgme["[mdL5U
+mK<OX!:BjdmK<OXmJu\S!!)H_!<;Kd!<2E_!!_ikmd:)Cmem+dmJsleo`5$[rW)la!!)ucr;Zic
+quD<9JaS9\rr@Q~>
+Ja2LbrW!,e!!)9a!:/nM!<29`!!)<_!!)<`!<;?^!<;<o!:&hLl2^,7!9sRLl2^,C!<29`!<29_
+!<;<c!9sR_lMgk`lMghalMU\_lM^e`lM^bbl2^,A!<;?T!<;<b!:'4Ws69pkl2^)Ll2^)Ll2^SD
+!s%TdlM:MVl2Uh`l2Uh`l2Uh`l377Rl2^,7!;bsa!9sRL!:'@["R5sel2^hKoDnpVrrE)a"9@]e
+lK\3Gs6BUa!:'O`"6omOlLY&VlM^b`lLb,WlM^b`lMLVil2^)Ll2^)Ll2^)LrosRclKSBKl2Uh`
+lM^e`l2^nMr;Zi_o)SgUjT#;Gr;cl_rVur`q#CT`!9sRL!;bsb!9sRL!:&kK!!;EclMCSWlL4fQ
+l3%+P!9sR`l3%+Pl2^,K!!)<[!<;?`!<29[!!_]glKSB7lMU\`l2\H]o`5$WrW)l]!!)u_r;Zi_
+quD<5Ja/!Trr@Q~>
+J`c4Z#QXo)k5YJDs8VEI!<<&\s8N)]rVll[rr<#\r;ZfZ%fb\Rs5s@Dk5XTDk2u^+pAb-Ss8W)\
+rr<#\!rqE_rT=.[roX7\!9X7[!9X:\s5s=\!p9OFo`+sRo)JaP!WV<Ts8V3gs5s@Ds5s@Ds5s@U
+jobYGs5s1Xq;q\WroO4\roO4\roOFbk2u^+k5Y;?"om`bk5XT>rrhKas5s@\k4J]Rk5YJ]jok_H
+s5rJ?s8V6]rrD3\rr_E`k2u=9!9X:\!9WtS!9X:\!9X4Z$g.KOs5s@Ds5s@Ds8M-_s5rJDroO4\
+roX4[s5j@^k5G;[k4AWQk2lUCk5G>[k5PA\k5##\k5XTDk5Y;?#63ick5XT+rr3&^s5s4Yq<%2H
+roO@`k5XTDroO@`k2u^+rr2u\q>^KWrr;u[qYpc^s5rJDk2uXB!TsEok4ScSk5PDYjoGG[k5G;[
+k5>71k(2ZLk5PF3~>
+JaVdjrrE)errE)errDER!!)uc#lsD]!:BjT!:K:K!<2Bd!<)<c!<)<c!<2Ec!!2KflL"WPrpBad
+rpKdds6^6pmJuYTmd:&TmJu\S!!)Hc!!2KfrU'^emdBQE!:K^as6^<rmJu\C!:BgemJm7T!;5a\
+!:Kgd!:Kab!q$$grU0[cs6fgcrpBjgmJu\S!;Q!]!<2E]!!2Kfr9jF^!:Kgd$LRlomJu\C!:BjT
+o`5$[rrE)e!s%cW!<2Ec!<2ED!"/,o!:BjTmJu\C!<)<e!:K:G!!;QgmdC,Umf!1dmf!1dmem+c
+me6\dmJm7T!:BjTrW!&g!:K:S!<2Ec!;Q!J!<)?MrrMNfrpBdemc+9OmJuYTmJu\R!4hM!!:K:D
+!!)HT!<;Ho!:BjTmJuYTmd:(+mXaenmf*9;~>
+Ja2LbrrE)arrE)arrDEN!!)u_#ls8U!9sRL!:&kC!<26`!<)0_!<)0_!<29_!!2?blKS?LrosI`
+rp'L`s69sll2^)LlKS?Ll2^,K!!)<_!!2?brTXFalK[j=!:'F]s6:$nl2^,7!9sOal2UhL!;5UX
+!:'O`!:'I^!pTacrTaC_s6BO_rosRcl2^,K!;PjY!<29Y!!2?br9F.Z!:'O`$L.Tkl2^,7!9sRL
+o`5$WrrE)a!s%WO!<29_!<29@!".uk!9sRLl2^,7!<)0a!:&k?!!;EclL+]QlM^b`lM^b`lMU\_
+lLt8`l2UhL!9sRLrW!&c!:&kK!<29_!;PjF!<)3I!!2?brosLalJhjKl2^)Ll2^,J!4h@r!:&k<
+!!)<P!<;<k!9sRLl2^)LlKSA#l@J5flMgj7~>
+J`c4Zs8W,]s8W,]s8VHJ!<<#[$30/Ms5s@Ds5rJ;s8M-\s8D'[s8D'[s8M0[rrM9^lK/*HroO4\
+roX7\s5j^hk5XTDk2u^Dk5XTCrrD3[rrM9^rT41]k2u15!9X1Ys5jdjk5XT+s5s@]k5YJDs7PLT
+s5s=\!9X4Z!p9O_rT=.[s5s:[roO=_k5XTCs7kaUs8M0UrrM9^r9!nV!9X:\$KhBgk5XT+s5s@D
+p&G'Ss8W,]"97NGs8M0[s8M0<rsIogs5s@Dk5XT+s8D']s5rJ7rrV?_k3r<Mk5PA\k5PA\k5G;[
+k4el\k5YJDs5s@Drr3)_s5rJCs8M0[s7kaBs8D*ErrM9^roO7]k2ZIGk5XTDk5XTBs1.7ns5rJ4
+rrD3Ls8V3gs5s@Dk5XTDk2u\pk(2Z^k5PF3~>
+JaVgkrW)udrrE&drrDER!!*#d!!*#d"p")Z!:K7TrpKacq<e4_rpBadrpBadrpKac"7?0W!:&te
+!:K7Tmd:)C!!)EemJm7TmJuYT!:KX_"muBY!:K:D!!DWh!:Kdc"muBY!:Bjcmd^AVmK!=UrVurd
+rVurdqZ-Zarr<Jq!:BjT!!)EemJu\CrW)i`mf3CV!<2EY!!)Hc!!2KfrU0[c!:Kdc!:Kdc#jq]\
+mJuYTmK!7S"9@iimK!7SqZ$]c!:Kdc!:Kdc"mu?jmJu\Q!"J>rmJuYTmJuYTmJuYTqsFUfmJuYT
+mf!1dmem+cmf!4cmK!=Uq#CNb!:K:P!!)Hd!!;Qgmem+cmcjeEs69Tsmf*7gmJu\Q!!)Hc!;u6e
+!:BjTqu?`bquH`a#6=/l!:Bgemf!4dmJm6<mXaemmf*9;~>
+Ja2OcrW)u`rrE&`rrDEN!!*#`!!*#`"p!rR!:&hLrp'I_q<@q[rosI`rosI`rp'I_"6omO!:&ha
+!:&hLlKSB7!!)9al2UhLl2^)L!:'@["mQ*Q!:&k<!!DKd!:'L_"mQ*Q!9sR_lLFrRl2^nMrVur`
+rVur`qZ-Z]rr<Jm!9sRL!!)9al2^,7rW)i\mf3CR!<29U!!)<_!!2?brTaC_!:'L_!:'L_#jMET
+l2^)Ll2^hK"9@]el2^hKqZ$]_!:'L_!:'L_"mQ'fl2^,I!"J2nl2^)Ll2^)Ll2^)Lqs"=bl2^)L
+lM^b`lMU\_lM^e_l2^nMq#CN^!:&kH!!)<`!!;EclMU\_l@As*!5.Us!!;EclMLV^lMU_\l2q%O
+!:'I^!:'I^ros^gl2UhL!!)<`!<;<a!.jEdlBgf9!.Y~>
+J`c7[s8N3%k2u^DroX7\m,e<JroO4\roOFbk2u^+k5YGCrr;fV!<<&\!<<&\!<<&\rr3)_s5s@H
+jq[pYk5XT+s5s@]k5XTDs5rJDk5YJDq>UW\s5s@Dk3r<Pk5YJDrVm&`s5s@Ds8D*Ns8D'\s5s=\
+!9X:\!9X1Ys5s@]%-ITPs5s@]k5XTDk2u[Cqr[AI!TsF]k4JZRk5G;\k5YDBs8N)]rVll[rVm/c
+s5rJDk5XTDroO@`k5XTDroX+X!p9OFrVll[rVm&`s8V6]k5>5gk5XTDk5XTDk5XTDk5Y>@"om`b
+k5XTCrrD3[rrD3\s8M-]s5s.W"6TXGk55/Yk5PA^k5XTBrrD24s7--%k5YG_k5XTArrD3[s8;!]
+s5s@Dr;QcZr;ZcY#QNrds5s@]k5PD\joGF4k(2Z]k5PF3~>
+JaVdjrrD'H$io_`!:K7TmJuYTmK!7S#QX8mmJu\C!!*#dp]1?^r;clc!!)uc!!)uc!!)uc!!)c]
+"p"&kmJu\Cr;[#h!!)Eemd^AXmK!=UrVurdo`,3a!:BjT!:KabrpBadrpKCY!U]semK*CVmem+c
+mf!1dmem+imJm7T!:K:S!<;KZ!;l3`!!)HZ!;l3^!!DWhmdBrPrU'^emdC#R!:K^arU0XbrpBmh
+md:)Cp&G*\rW!&g!!)Hc!<;K^!!)Hb!<2Ec!;Z'^!!)H>!.k1:s17Xu!!)Ha!!_ik!:BjT!<)?c
+!!)Hd!!;Qgmf!1dmf!1emK!7Srr<;l!:Bgemd:(+mXaelmf*9;~>
+Ja2LbrrD'D$ioSX!:&hLl2^)Ll2^hK#QX,il2^,7!!*#`p]1?Zr;cl_!!)u_!!)u_!!)u_!!)cY
+"p!ogl2^,7r;[#d!!)9alLFrTl2^nMrVur`o`,3]!9sRL!:'I^rosI`rp'+U!U9[al2gtNlMU\_
+lM^b`lMU\el2UhL!:&kK!<;?V!;l'\!!)<V!;l'Z!!DKdlK\6HrTXFalK\<J!:'F]rTa@^rosUd
+lKSB7p&G*XrW!&c!!)<_!<;?Z!!)<^!<29_!;YpZ!!);8!5efJlMghalMCPcl2UhL!9sR_lMgha
+lM^bbl2^,K!!)<`!!2?brp'L`#O2<S!!)<L!.jEdlB^`8!.Y~>
+J`c4ZrrD'@%0,JPs5rJDk5XTDk5YGC#lj&ek5XT+s8W)\q#CBVrVuo[!<<#[!<<#[!<<#[!<;fU
+#63ick5XT+rVm&`s8V6]k48QPjoPMErr2u\p&>6Ys5s@Ds5s7ZroO4\roWkQ!TsF]joYSFk5G;[
+k5PA\k5G;ak5YJDs5rJCs8V6Rs81sXrrD3Rs81sVrr_E`k2uR@rT41]k2uXB!9X1YrT=+ZroO@`
+k2u^+pAY-Trr3)_s8V6[s8V6VrrD3Zs8M0[s7tgVrrD24s24lJk5YG]k55/_k5YJDs5s@[k5YG]
+k5PA^k5XTCrrD3\rrM9^roX7\#Nl'Ks8V6Ds+0<`k*G00!.Y~>
+JaVdjrrD$G"9@iimK!7SrW)rc$NTV_!:K7T!:Bgeme6\]mf!1emK!7S!!)uc!!*#d!!*#d!!)][
+rW)obq>^Zd!!)HTp](Nd!:BgemdAL's6]pgmdB]I!:Kgd!:KIZ!:K^aq!J7bmJuYTrU0O_q<e=b
+mJu\-!<;He!<2Be!:Kgd!:JYCJcDkP_sRR+mdC#R!:Kab$gn#_!!)Ee!:K7Tmed%bmed%emJuYT
+rpKX`!U]r=mXaekmf*9;~>
+Ja2LbrrD$C"9@]el2^hKrW)r_$NTJW!:&hL!9sOalLt8YlM^bal2^hK!!)u_!!*#`!!*#`!!)]W
+rW)o^q>^Z`!!)<Lp](N`!9sOalKZdts69XclK\!A!:'O`!:'1V!:'F]q!%t^l2^)LrTa7[q<A%^
+l2^,%!<;<a!<26a!:'O`!:#+8M#bHY!W_NNr;Zi_qu@,i!9sOal2UhLl2^,I!!)<^!!DKdl2^hK
+qZ$Z^!.jEdlBUZ7!.Y~>
+J`c4ZrrD$?"TRWak5YGCrr;u[$ifAOs5rJDs5s@]k4elUk5PA]k5YGC!<<#[!<<&\!<<&\!<;`S
+rr;rZqYp]\s8V6Dq#:Q\s5s@]k2t+ls5jC_k2u=9!9X:\!9WqR!9X1YpuV_Zk5XTDrT="Wq;qeZ
+k5XSrs8V3]s8M-]s5s=\!9Sk4M>tKU!rqEFrVll[r;R/es5s@]k5YJDk5XTArrD3Zrr_E`k5YGC
+qu6]Zs+0<`k*>*/!.Y~>
+JaVdjrrD!Fo)SgY!!*#drr<&equ?`brVurdquHcb!!)uc!!)uc"p")Z!:K7Tq!Qo;rU'[dmeZta
+mem.cmKN[Z!:BjTmem+dmK!7S!<DQ]!!VcjmJuYTr9jOa!:Kgd!q$'VrW)udrVurdrW!#f!:Kab
+"7?0W!;c*e!:K7Tmd>Z+JcEIa`:!9us6fme"muBY!!)H[!!)Hd!!2Kfr9jF^JaS*WPj\POJ,~>
+Ja2LbrrD!Bo)SgU!!*#`rr<&aqu?`^rVur`quHc^!!)u_!!)u_"p!rR!:&hLq!-W7rTXC`lMCP]
+lMU__l377R!9sRLlMU\`l2^hK!<DEY!!VWfl2^)Lr9F7]!:'O`!pTdNrW)u`rVur`rW!#b!:'I^
+"6omO!;bsa!:&hLlKWp#JH3Ca`9R!qs6BUa"mQ*Q!!)<W!!)<`!!2?br9F.ZJa.gOPj88KJ,~>
+J`c4ZrrD!>oDejQ!<<&\s8N)]r;QcZrr2u\r;ZfZ!<<#[!<<#[#63iJs5rJDpu^B3rT4.\k55/Y
+k5G>[jp(kJs5s@Dk5G;\k5YGC!WV<UrrqQbk5XTDr9""Y!9X:\!p9OFrr<#\rr2u\rr3&^s5s7Z
+"6TXGs8(j]s5rJDk2q6pJcEIa`9-ams5s@]"m5jIs8V6SrrD3\rrM9^r9!nVJ`_OGPihuGJ,~>
+JaVdjrrD-Jo)JgZ!<)<c!<)?c!!)HZ!;Gm]!<2Ec!!DWhmJuqJrW)rcp&P*[p&P$Y!<DQ]!!DWh
+mdC&SrpBmhmJuYTr9jL`!:K^arpKacr9ibKJcC<$VuOR#o`,![gAlfmJaSonrr@Q~>
+Ja2LbrrD-Fo)JgV!<)0_!<)3_!!)<V!;GaY!<29_!!DKdl2^MBrW)r_p&P*Wp&P$U!<DEY!!DKd
+lK\?KrosUdl2^)Lr9F4\!:'F]rp'I_r9Ah5JH1]1_!:Rm!:&;=Ja.gOR-O\OJ,~>
+J`c4ZrrD-BoD\jRs8D'[s8D*[rrD3Rs7bXUs8M0[rr_E`k5Y,:rr;u[pAb-SpAb'Q!WV<Urr_E`
+k2u[CroO@`k5XTDr9!tX!9X1YroX4[r8rS1JcCc1^uk=i!9W&9J`_OGR-+DKJ,~>
+JaVdjrrD!FrW)rc"9@iimJuqJ!<DQ]!;5a[!<2Ec!!2Kfp$Mq_mJuYTrpBdemed(ama_@?mJu\C
+o`0RCJcC<$s8Tq'!s%`hmem.cmK!=Ur;c`_rW!#f!:Kgd!:Kgdr9j7YJaS*WQgXkRJ,~>
+Ja2LbrrD!BrW)r_"9@]el2^MB!<DEY!;5UW!<29_!!2?bp$)Y[l2^)LrosLalMLY]lIGq;l2^,7
+JH16$JH59A_<M+&l2^,J!<;<b!:'L_qs+.\!pTdNrVur`rW)l]p&K[/Ja/Terr@Q~>
+J`c4ZrrD!>rr;u["TRWak5Y,:!WV<Us7PLSs8M0[rrM9^p#ZDWk5XTDroO7]k5>8Yk19P7k5XT+
+JcC<$JcG?A_<(k"k5XTBs8V3^s5s:[qr[nX!p9OFrr2u\rr;oYpA]^+J``<]rr@Q~>
+JaVdjrrD$G$io\qmJuYTmd:)CmK!%MmK!(Np&OmU!<DP=s+13$s0MaBmK<OXmJu\S!!)H[!!;Qg
+mf!1hmJuYTmf!1emK!1Q!<DQd!!2KfJaS*WQ1"YPJ,~>
+Ja2LbrrD$C$ioPml2^)LlKSB7l2^VEmK!(Jp&OmQ!<DD9!.b-$!4)[Bl3%+Pl2^,K!!)<W!!;Ec
+lM^bdl2^)LlM^bal2^bI!<DE`!!2?bJa.gOQ0SALJ,~>
+J`c4ZrrD$?%0,Jik5XTDk2u^+k5Y5=mf3+FpAapM!WV;5s+13$s0MaBjok_Hk5XTCrrD3SrrV?_
+k5PA`k5XTDk5PA]k5YAA!WV<\rrM9^J`_OGQ0/)HJ,~>
+JaVmmJcC<$JcC<$a8a'F!!*#drrE)eo`5$["T[uY!!)H[!<;Hi!:K7Tmf!1emJqh+JaSilrr@Q~>
+Ja2UeJH16$JH16$`rO$B!!*#`rrE)ao`5$W"T[iQ!!)<W!<;<e!:&hLlM^bal2ZD#Ja/Qdrr@Q~>
+J`c=]JcC<$JcC<$a8a'>!<<&\s8W,]p&G'S"om`Is8V6Ss8V3as5rJDk5PA]k5U"pJ``9\rr@Q~>
+JaVmmJcC<$JcC<$a8a*G!!)uc!!*#drrE)equ?lf!:K7TrpKac"RZ9X!:KgdrpC!kmJu\C!!)Hc
+!!2KfJaS*WQgXkRJ,~>
+Ja2UeJH16$JH16$`rO'C!!)u_!!*#`rrE)aqu?lb!:&hLrp'I_"R6!P!:'O`ros^gl2^,7!!)<_
+!!2?bJa.gOQg4SNJ,~>
+J`c=]JcC<$JcC<$a8a*?!<<#[!<<&\s8W,]r;Qo^s5rJDroX4["QoaHs5s=\roOIck5XT+s8V6[
+rrM9^J`_OGQfe;JJ,~>
+JaVmmJcC<$JcC<$\c9tC!!)uc!!*#drW!,i!:K7T!<)?c!<2Ec!!)Hd!<2Bq!:K7TmJuYT!:Bge
+mJqh+JaSonrr@Q~>
+Ja2UeJH16$JH16$\H'q?!!)u_!!*#`rW!,e!:&hL!<)3_!<29_!!)<`!<26m!:&hLl2^)L!9sOa
+l2ZD#Ja/Wfrr@Q~>
+J`c=]JcC<$JcC<$\c9t;!<<#[!<<&\rr3/as5rJDs8D*[s8M0[rrD3\s8M-is5rJDk5XTDs5s@]
+k5U"pJ``?^rr@Q~>
+JaVmmJcC<$JcC`0!:HN[eF*>:#OVT[!!)HT!;Gmc!:K7Tmd:)RmJm7cmJm7cmJm6<mXaemmf*9;~>
+Ja2UeJH16$JH1Z0!:$3WeE[&6#O2<S!!)<L!;Ga_!:&hLlKSBJl2Uh_l2Uh_l2Ug8l@J5elMgj7~>
+J`c=]JcC<$JcC`0!9TsSeE6f2#Nl'Ks8V6Ds7bX[s5rJDk2u^BjoGG[joGG[joGF4k(2Z]k5PF3~>
+JaVmmJcC<$JcE=]rU'XcbjGZ8md:)CmK!"LWW25NrrE)e#6=/lmJu\C!;Z$_!<2Bd!<2Bd!.jQh
+mYUB3!.Y~>
+Ja2UeJH16$JH37]rTX@_bj#B4lKSB7l2^SDW;u2JrrE)a#6=#hl2^,7!;Ym[!<26`!<26`!.jEd
+lA=g+!.Y~>
+J`c=]JcC<$JcE=]rT4+[biT-0k2u^+k5Y2<WW25Fs8W,]#QNrdk5XT+s7tdWs8M-\s8M-\s+0<`
+k)&7#!.Y~>
+JaVmmJcC<$JcFF'o^2h^mJuYTq<e4_rpBadrpBadb3fB4mJuYTipNoJqsFFarU'XcrU'Xcq!J+^
+rU'XcrU'XcJaS*WMXLKEJ,~>
+Ja2UeJH16$JH4@'o]cPZl2^)Lq<@q[rosI`rosI`b3B*0l2^)Lip*TFqs".]rTX@_rTX@_q!%hZ
+rTX@_rTX@_Ja.gOMX(3AJ,~>
+J`c=]JcC<$JcFF'o]?;Vk5XTDq;q\WroO4\roO4\b2rj,k5XTDio[?BqrRnYrT4+[rT4+[puVSV
+rT4+[rT4+[J`_OGMWXp=J,~>
+JaVmmJcC<$NrK7M!:K7Tj6d$MmJuYTrpBadrpBadrpBado'ZJWp[/4cmd:)CmJt>rrW(^@"9@ii
+mK!.PUAof4JaS*W!q$$gJ,~>
+Ja2UeJH16$NW94I!:&hLj6?aIl2^)LrosI`rosI`rosI`o'62SpZ_q_lKSB7l2\ojrW(^<"9@]e
+l2^_HU&]c0Ja.gO!pTacJ,~>
+J`c=]JcC<$NrK7Es5rJDj5pLEk5XTDroO4\roO4\roO4\o&frOpZ;\[k2u^+k5WNbrr:a8"TRWa
+k5Y>@UAof,J`_OG!p0I_J,~>
+JaVmmJcC<$rr30&md:)CmK!4R"p")Z!:K7TmHtPdmJuYTmJuYT!:BjT!:BjT!8$Z;!<2Bd!<2Bj
+!:BjT!:BjGmf!4cmJm7cmJm7cmJm7]me-YWmK<OX!:BjJmJm7cmJm7cmJm7Yme-Y=mKN[ZmJu\C
+!;u8Bs+0Thm[3GB!.Y~>
+Ja2UeJH16$r;cl_!s%WO!<)0e!:&hLlKSB:l4F$]!9sRL!9sOal2^)Ll2^)LfBW;7rosI`ros[f
+l2^)Ll2]f.rW)r_!!)u_!!)u_!!)cYp&OsS"9@]el2]o1!!)u_!!)u_!!)WUp&O%9"p!rR!:&hL
+r9B.>Ja.gOR-O\OJ,~>
+J`c=]JcC<$rVuo["97NGs8D'as5rJDk2u^2jq7XUs5s@Ds5s@]k5XTDk5XTDfB3&3roO4\roOFb
+k5XTDk5XE&rr;u[!<<#[!<<#[!<;fUpAb!O"TRWak5XN)!<<#[!<<#[!<;ZQpAa(5#63iJs5rJD
+r8rn:J`_OGR-+DKJ,~>
+JaVmmJcD&9q<e4_rU'XcrU'XcrU'XcrpBadrpBadrU'dgmJuYTlgF`P!:KdcrpKacrpBadg$Sk@
+mf!4cmJm7cmK!=UrW)$Ip&O@FrW)WZrW(sG!!*#d!!*#d!!)HTrW(dB!!*#d!!*#d!!)ucK)^Di
+JaT3!rr@Q~>
+Ja2UeJH1u9q<@q[rTX@_rTX@_rTX@_rosI`rosI`rTXLcl2^)Llg"HL!:'L_rp'I_rosI`g$/S<
+lM^e_l2Uh_l2^nMrW)$Ep&O@BrW)WVrW(sC!!*#`!!*#`!!)HPrW(d>!!*#`!!*#`!!)u_JcLAe
+Ja/onrr@Q~>
+J`c=]JcD&9q;q\WrT4+[rT4+[rT4+[roO4\roO4\rT47_k5XTDlfS3H!9X7[roX4[roO4\g#`>8
+k5PD[joGG[joPMErr;'ApAaC>rr;ZRrr;!?!<<&\!<<&\!<;KLrr:g:!<<&\!<<&\!<<#[K)^Da
+J``Wfrr@Q~>
+JaVmmJcEC_dd@)8rpBadrpBadrU'XcrU'XcrU'XcrU0Xbr9aObrU'XcrU'XcrpK(P!U]sdmJm7c
+mJm7LmKN[ZmJu\C!;u9Y!9ESI!9W\P!:BjT!;c-W!9NVQ!:K7Tmd:)CmK<OX!:BjEmJm7cmJm7c
+mJm7dmXkIimXaf!mf*9;~>
+Ja2UeJH3=_dcpf4rosI`rosI`rTX@_rTX@_rTX@_rTa@^r9=7^rTX@_rTX@_rp&eL!U9[`l2Uh_
+l2UhHl377Rl2^,7!;u-U!9EGE!9WPL!9sRL!;c!S!9NJM!:&hLlKSB;l3%+P!9sRAl2Uh_l2Uh_
+l2Uh`l@K"el@J5nlMgj7~>
+J`c=]JcEC_dcLQ0roO4\roO4\rT4+[rT4+[rT4+[rT=+Zr8n"ZrT4+[rT4+[roWPH!TsF\joGG[
+joGGDjp(kJk5XT+s8;$Qs5`>As5rGHs5s@Ds8(mOs5iAIs5rJDk2u^3jok_Hs5s@=joGG[joGG[
+joGG\k(<Vak(2Zfk5PF3~>
+JaVmmM?!)5!<DQe!!2Kfq<e@cmJuYTo^2h^mJuYT]C#k'md:)CmJueFp&P-\!!*#d!!*#d!!)i_
+rVurdrW)obrW)i`!!*#d!!*#d!!)0L!!*#d!!*#d!!)i_rW(pF"9@iimJuVA!!*#drr<2i!:K7T
+p[8"\s6]jerU'XckjAQRmJuYTmd:8Zmd:)CmJt]'K)^DiJaT3!rr@Q~>
+Ja2UeM#d&1!<DEa!!2?bq<A(_l2^)Lo]cPZl2^)L]BTS#lKSB7l2^A>p&P-X!!*#`!!*#`!!)i[
+rVur`rW)o^rW)i\!!*#`!!*#`!!)0H!!*#`!!*#`!!)i[rW(pB"9@]el2^29!!*#`rr<2e!:&hL
+pZh_Xs69RarTX@_kir9Nl2^)LmcjuVlKSB7l2]8tJcLAeJa/onrr@Q~>
+J`c=]M?!)-!WV<]rrM9^q;qh[k5XTDo]?;Vk5XTD]B0=tk2u^+k5Xu6pAb0T!<<&\!<<&\!<;lW
+rr2u\rr;rZrr;lX!<<&\!<<&\!<;3D!<<&\!<<&\!<;lWrr:s>"TRWak5Xf1!<<&\s8N5as5rJD
+pZDJTs5j=]rT4+[kiN$Jk5XTDmcF`Rk2u^+k5WllK)^DaJ``Wfrr@Q~>
+JaVgkrVurdrW!&g!:BjHmJm7cmJm7cmJm7cmKN[ZmJu\C!7U?=!:BjT!:9+S!:Kgdp[8"\o'ZJW
+\aBS#mJuYTm-aiQqX+Ofmd:)CmK!(N!<DQe!"/,omJu\C!:BjT!;l0g!:K7Tmd:);mJm7cmJm7c
+mJm7amK<OX!:BjImK`g\mJu\C!:BjcmJm7YmKrs^!:BjT!:BjT!;Z$e!:BjT!:BjdmJm7Lmf!4V
+mL'$_mJuYTmJu\C!!(O:JcC;hJaT3!rr@Q~>
+Ja2OcrVur`rW!&c!9sRDl2Uh_l2Uh_l2Uh_l377Rl2^,7!7U39!9sRL!:8tO!:'O`pZh_Xo'62S
+\`s:tl2^)Lm-=QMqW\7blKSB7l2^YF!<DEa!".ukl2^,7!9sRL!;l$c!:&hLlKSB3l2Uh_l2Uh_
+l2Uh]l3%+P!9sREl3ICTl2^,7!9sR_l2UhUl3[OV!9sRL!9sRL!;Yma!9sRL!9sR`l2UhHlM^eR
+l3dUWl2^)Ll2^,7!!(O6JH18dJa/onrr@Q~>
+J`c7["9/B$k5PA_k5XTDioU7@rT4+[rT4+[rT4=ak2u^+k5Wom"TRWak5Xf1!WV<]s7b[Ts75=O
+s1.7ps5s@Ds6SnIs8(j^s5rJDk2u^>joPMErr3>fs5s@Dk5XTDk5Y>@#63iJs5rJDk2l[DrT4+[
+rT4+[qrS%]k5XTDj5pXIk2u^+k5XTDrT4+[oB$D[k5XTDk5XTDk5Y8>#63ick5XTDroO4\k2u[C
+n`C5Zk2u^+s5s@Dk5YJ2k(3P`k(2Zfk5PF3~>
+JaVjl"9@ii!:Kgds6]pgmJu87!!*#d!!*#d!!)uc!!*#d!!*#d!!(L9rW)?Rp&P-\p&OsWp&Mbn
+rW)<Q"9@iimK!+O"9@iimK!(N!W_ZVqu?`bqZ-Za!!)oa"9@iimJtf*"p")Z!:K7TjmE*KrpKdd
+s6fmerpBadna6S]md:)C!!*#d!!)oa$39M^!!)Ee!:K7Tl0e6Fo^;_Zs6^*lmJuYTmd:)DmJm7c
+mJm7cmJm7XmXbChmXaf!mf*9;~>
+Ja2Rd"9@]e!:'O`s69Xcl2]i/!!*#`!!*#`!!)u_!!*#`!!*#`!!(L5rW)?Np&P-Xp&OsSp&Mbj
+rW)<M"9@]el2^\G"9@]el2^YF!W_NNqu?`^qZ-Z]!!)o]"9@]el2]B""p!rR!:&hLjlugGrp'L`
+s6BUarosI`n`g;YlKSB7!!*#`!!)o]$39AV!!)9a!:&hLl0@sBo]lGVs69ghl2^)LlKSB<l2Uh_
+l2Uh_l2UhTl@Aqdl@J5nlMgj7~>
+J`c:\"TRWa!9X:\s5jC_k5XH'!<<&\!<<&\!<<#[!<<&\!<<&\!<:O1rr;BJpAb0TpAb!OpA_ef
+rr;?I"TRWak5Y;?"TRWak5Y8>!rqEFr;QcZqu?]Y!<;rY"TRWak5Wuo#63iJs5rJDjlQRCroX7\
+s5s@]roO4\n`C&Uk2u^+s8W)\!<;rY$NK8Ns8V6]s5rJDl/q^>o]H2Rs5jRdk5XTDk2u^4joGG[
+joGG[joGGPk(3P`k(2Zfk5PF3~>
+JaVgkrW)ud!!)uc!!(sF"p")Z!:K7TrU'XcrU'XcrU'Xcf^AG5o'Z2OqX4=_o'ZJW]^GInna6S]
+md:)CmK!+OrW)c^!!*#d!W_ZVq>^]e!:BjT!;l3`!7gK;!<2Bd!<2Bd!9`bM!<)<n!:BjTmJu\C
+!:K7TrU'XcrU'Xcr9a[fmJuYTp[/"]rpBsjmJuYTmJu>9rW)ET"p")Z!:K7TlL"WPrpBadrpBad
+na6DWqsK:?JaS*WT^Mg[J,~>
+Ja2OcrW)u`!!)u_!!(sB"p!rR!:&hLrTX@_rTX@_rTX@_f]r/1o'5oKqWe%[o'62S]^#1jn`g;Y
+lKSB7l2^\GrW)cZ!!*#`!W_NNq>^]a!9sRL!;l'\!7g?7!<26`!<26`!9`VI!<)0j!9sRLl2^,7
+!:&hLrTX@_rTX@_r9=Cbl2^)LpZ__Yros[fl2^)Ll2]o1rW)EP"p!rR!:&hLlKS?LrosI`rosI`
+n`g)Sqs&t;Ja.gOT^)OWJ,~>
+J`c7["oeQ&k2u^BjoGG>jp(kJk5XT+s8D'[s8D'[s8D'[s4HK-s75=Gs8(mWs75=Os1ILfs7,4U
+s5rJDk2u^?k5PDVjoGG\joYSFk5,)]k5XTDk5Y>@rr:O2!<<&\!<<&\!<;6E!<<#[$ifAhk2u^+
+k5XT+s8D'[s8D'[s8;!^s5s@Ds7bXUs8M-bs5s@Ds5s@Bk5PDLjp(kJk5XT+s6A_Hs8M-\s8M-\
+s7,4Os81r7s+0<`k+Ll:!.Y~>
+JaVdjrrC[="p"&kmJuYTrpBadrpBadcL1Z3lL+WO!U]s`mK<OX!:BjZmKEUY!:BgerU'XcrU'Xc
+`:!U)md:&TrpBadrpBgfmdBcKrpBadrpKddrpKac"mu?jmJm7dmK!=Up&Nh7!!)uc!!)uc!!)0L
+!!)ucrr</h!:BjcmJm7dmJm7dmJm7`mf!4\mJm7cmK*CVmf!4ImK<OX!:BjcmJm7cmJm7_mK<OX
+!:BjNmKN[ZmJu\C!:]CVs7l!^s7brIs+0Thm\'"J!.Y~>
+Ja2LbrrC[9"p!ogl2^)LrosI`rosI`cKbB/lK\?K!U9[\l3%+P!9sRVl3.1Q!9sOarTX@_rTX@_
+`9R=%mcjcProsI`rosOblK\'CrosI`rp'L`rp'I_"mQ'fl2Uh`l2^nMp&Nh3!!)u_!!)u_!!)0H
+!!)u_rr</d!9sR_l2Uh`l2Uh`l2Uh\lM^eXl2Uh_l2gtNlM^eEl3%+P!9sR_l2Uh_l2Uh[l3%+P
+!9sRJl377Rl2^,7!:]7R!;PgZ!;GcE!.jEdlCdGB!.Y~>
+J`c4ZrrC[5#63ick5XTDroO4\roO4\cK>-+lK8*G!TsFXjok_Hs5s@RjoteIs5s@]rT4+[rT4+[
+`9.(!mcFNLroO4\roO:^k2uC;roO4\roX7\roX4["m5jbk5YJ\joPMEpA`k/!<<#[!<<#[!<;3D
+!<<#[s8N2`s5s@[joGG\joGG\joGGXk5PDTjoGG[joYSFk5PDAjok_Hs5s@[joGG[joGGWjok_H
+s5s@Fjp(kJk5XT+s7#.Ns7k^Vs7bZAs+0<`k+Ll:!.Y~>
+JaVdjrrCX<rW)rc"p")Z!:K7TcL(f8mJuYTm-XlSmf!1emK!.P#6=/l!:K7T!<)<c!;u6i!:K7T
+md:&TrpBadrpBad`9ma.mJuYTnEp8VrU'XcrU'Xcr9jOas6]jerU'Xcq!S+]"7?0W!;Gp\!3bej
+!<2Be!:KgdqsFXgmd:)CmK!4Rp&OjTp&O@F"p")Z!:K7TrpBadrpBadp[8"\lL"WPrpKac"7?0W
+!:fIWs7l!^s5WOIs+0Thm\'"J!.Y~>
+Ja2LbrrCX8rW)r_"p!rR!:&hLcKYN4l2^)Lm-4TOlM^bal2^_H#6=#h!:&hL!<)0_!;u*e!:&hL
+lKS?LrosI`rosI``9II*l2^)LnEKuRrTX@_rTX@_r9F7]s69RarTX@_q!.hY"6omO!;GdX!3bYf
+!<26a!:'O`qs"@clKSB7l2^eJp&OjPp&O@B"p!rR!:&hLrosI`rosI`pZh_XlKS?Lrp'I_"6omO
+!:f=S!;PgZ!9<@E!.jEdlCdGB!.Y~>
+J`c4ZrrCX4rr;u[#63iJs5rJDcK590k5XTDm,e?Kk5PA]k5Y>@#QNrds5rJDs8D'[s8;!as5rJD
+k2u^DroO4\roO4\`9%4&k5XTDnE'`NrT4+[rT4+[r9""Ys5j=]rT4+[pu_SU"6TXGs7b[Ts0(Pb
+s8M-]s5s=\qrS+_k2u^+k5YDBpAamLpAaC>#63iJs5rJDroO4\roO4\pZDJTlK/*HroX4["6TXG
+s7,4Os7k^Vs5W7As+0<`k+Ll:!.Y~>
+JaVdjrrCd@o`,*^!:Bj=mJm7cmJm7dmf*7imJuYT!<2Bd!;Ps^!<)?c!<;Ke!!DWhmK!4R!!*#d
+!!*#d!!*#d!!)rb!!*#d!!*#drrE)e!s%cW!6FR.!<2Ed!!M]imd:)7mKN[Z!:BjT!<2Bd!;l3X
+!;Psb!:BjT!3bh`!<2Bh!:BjT!;Q!]!:T@T!9W\L!<2Bd!<2Bj!:K7Tmd:)Ome-YJmJm7dmf!1e
+mJubE!<<#c!<<#c!<:L8]DmHMJaT3!rr@Q~>
+Ja2LbrrCd<o`,*Z!9sR9l2Uh_l2Uh`lMghel2^)L!<26`!;PgZ!<)3_!<;?a!!DKdl2^eJ!!*#`
+!!*#`!!*#`!!)r^!!*#`!!*#`rrE)a!s%WO!6FF*!<29`!!MQelKSB/l377R!9sRL!<26`!;l'T
+!;Pg^!9sRL!3b\\!<26d!9sRL!;PjY!:T4P!9WPH!<26`!<26f!:&hLlKSBGlLk5Fl2Uh`lM^ba
+l2^>=!!)u_!!)u_!!(I4])[EIJa/onrr@Q~>
+J`c4ZrrCd8p&>-Vs5s@5joGG[joGG\k5YGak5XTDs8M-\s7k^Vs8D*[s8V6]rr_E`k5YDB!<<&\
+!<<&\!<<&\!<;uZ!<<&\!<<&\s8W,]"97NGs2a=&s8M0\rrhKak2u^'jp(kJs5s@Ds8M-\s81sP
+s7k^Zs5s@Ds0(SXs8M-`s5s@Ds7kaUs6o+Ls5rGDs8M-\s8M-bs5rJDk2u^?k4\iBjoGG\k5PA]
+k5Xr5!<<#[!<<#[!<:L0]DmHEJ``Wfrr@Q~>
+JaVdjrrCd@!!*#drW)rc!<DQe!7gK;!<2Bf!:K:S!!holmJuYTmJutK!!*#d!!*#drrE)e"T[rj
+md:)Rmf*:emf*7fmK!1Q!!)uc!!)ucrr</h!:Bj,mKrs^!:BjT!:BjT!9EPT!:K7T!:Bgemd:)L
+me-YYmKN[ZmJu\C!3bem!:BjTrW)c^rW)`]"9@iimJueF"9@iimJuJ=!!)uc!!)uc"9@iimJuqJ
+rW)3Np&O[O!<;i^!<9Orf)L<hJaT3!rr@Q~>
+Ja2LbrrCd<!!*#`rW)r_!<DEa!7g?7!<26b!:&kK!!hchl2^)Ll2^PC!!*#`!!*#`rrE)a"T[ff
+lKSBJlMgkalMghbl2^bI!!)u_!!)u_rr</d!9sR(l3[OV!9sRL!9sRL!9EDP!:&hL!9sOalKSBD
+lLk5Ul377Rl2^,7!3bYi!9sRLrW)cZrW)`Y"9@]el2^A>"9@]el2^&5!!)u_!!)u_"9@]el2^MB
+rW)3Jp&O[K!!)fZ!!'Lnec:9dJa/onrr@Q~>
+J`c4ZrrCd8!<<&\rr;u[!WV<]s4-63s8M-^s5rJCrs.]dk5XTDk5Y/;!<<&\!<<&\s8W,]"om`b
+k2u^Bk5YJ]k5YG^k5YAA!<<#[!<<#[s8N2`s5s@$jpM.Ns5s@Ds5s@Ds5`;Ls5rJDs5s@]k2u^<
+k4\iQjp(kJk5XT+s0(Pes5s@Drr;fVrr;cU"TRWak5Xu6"TRWak5XZ-!<<#[!<<#["TRWak5Y,:
+rr;6FpAa^G!<;iV!<9Ojf)L<`J``Wfrr@Q~>
+JaVdjrrCa?"T[rjmJu\J!8-]M!:K7TmJm7TmJm7T!:K7To^2qamJm7TmJm7cmJm7]mK<OX!:BjU
+mf!4)mKN[ZmJuYT!<2Bd!;Ps^!<)<c!<)<c!;c*`!<2Bj!:BjT!:Bj\mK3IW!:Kgdq<e4_rpBad
+rpBadYO;Ai"7?0W!<2E[!<)<i!:K7Tmd:)HmKN[ZmJu\C!8d/C!;5a_!:BjT!9ihO!:Kgdmd:)T
+q!J.^TC2.IJaS*WT^Mg[J,~>
+Ja2LbrrCa;"T[ffl2^,B!8-QI!:&hLl2UhLl2UhL!:&hLo]cY]l2UhLl2Uh_l2UhYl3%+P!9sRQ
+lM^e%l377Rl2^)L!<26`!;PgZ!<)0_!<)0_!;bs\!<26f!9sRL!9sRXl2q%O!:'O`q<@q[rosI`
+rosI`YNl)e"6omO!<29W!<)0e!:&hLlKSB@l377Rl2^,7!8d#?!;5U[!9sRL!9i\K!:'O`mcjcP
+q!%hZTBbhEJa.gOT^)OWJ,~>
+J`c4ZrrCa7"om`bk5XT:s4HHEs5rJDk5YJDk5YJDs5rJDo]?DYk5YJDk5YJ[joGGUjok_Hs5s@M
+k5PD!jp(kJk5XTDs8M-\s7k^Vs8D'[s8D'[s8(jXs8M-bs5s@Ds5s@TjobYGs5s=\q;q\WroO4\
+roO4\YNGia"6TXGs8M0Ss8D'as5rJDk2u^8jp(kJk5XT+s5)o;s7PLWs5s@Ds6/SGs5s=\mcFNL
+puVSVTB>SAJ`_OGT]Z7SJ,~>
+JaVjl"T[rj!:BjcmJm7NmJm7cmf*:emem.cmf*:emf!48mK<OX!:BjcmK<OX!:BjXmK<OX!:BjU
+mf!4Wme-Y$mK<OX!:BjXmJm7dmJm7dmJm7`mJm7cmK*CVmf!4[mK`g\mJm7T!:BjamJm7cmJm7c
+mJm6ome$SWmf!4_mJm7dmJm7dmJm7[mJm7dmJm7dmJm7Ime-YWmKN[ZmJu\C!9ikM!!2Kfn*U2U
+q!J.^T^Dd[rU'XcrU'XcJaS*WQgXkRJ,~>
+Ja2Rd"T[ff!9sR_l2UhJl2Uh_lMgkalMU__lMgkalM^e4l3%+P!9sR_l3%+P!9sRTl3%+P!9sRQ
+lM^eSlLk4ul3%+P!9sRTl2Uh`l2Uh`l2Uh\l2Uh_l2gtNlM^eWl3ICTl2UhL!9sR]l2Uh_l2Uh_
+l2UgklLb/SlM^e[l2Uh`l2Uh`l2UhWl2Uh`l2Uh`l2UhElLk5Sl377Rl2^,7!9i_I!!2?bn*0lQ
+q!%hZT]uLWrTX@_rTX@_Ja.gOQg4SNJ,~>
+J`c:\"om]b!9X=[joGGFjoGG[k5YJ]k5G>[k5YJ]k5PD0jok_Hs5s@[jok_Hs5s@Pjok_Hs5s@M
+k5PDOk4\hqjok_Hs5s@PjoGG\joGG\joGGXjoGG[joYSFk5PDSjp;"Lk5YJDs5s@YjoGG[joGG[
+joGFgk4ScOk5PDWjoGG\joGG\joGGSjoGG\joGG\joGGAk4\iOjp(kJk5XT+s6/VErrM9^n)aWM
+puVSVT]Q7SrT4+[rT4+[J`_OGQfe;JJ,~>
+JaVgkrVuue!<2Bd!9W\L!<2Be!:K^a!:Kgd"muBY!:Bj9mf!4`mf!4Umf!4Wme-YVmJm7cmK!=U
+r;cZ]!!)uc!!)uc!!(U<rW)HU"p")Z!:K7Tp$VMRqsFFarpBsjmd:&TmJu;8!!)uc!!)uc!!(./
+rVuue!<2Bd!<)<g!:BjT!;u6b!<)<c!<)<c!;Gm]!<)<c!<)<e!:BjcmJm7cmJm7Rmf!4\mJm7d
+mJm7dmJm7Sme-YNmK!:^mK!9<mXaeWm]5dU!.Y~>
+Ja2OcrVuua!<26`!9WPH!<26a!:'F]!:'O`"mQ*Q!9sR5lM^e\lM^eQlM^eSlLk5Rl2Uh_l2^nM
+r;cZY!!)u_!!)u_!!(U8rW)HQ"p!rR!:&hLp$25Nqs".]ros[flKS?Ll2]l0!!)u_!!)u_!!(.+
+rVuua!<26`!<)0c!9sRL!;u*^!<)0_!<)0_!;GaY!<)0_!<)0a!9sR_l2Uh_l2UhNlM^eXl2Uh`
+l2Uh`l2UhOlLk5Jl2UhZl2Ug8l@J5OlDs4M!.Y~>
+J`c7["TJH%k5YGC!<;3D!<<&\!WV<ZrrD3\rrqQbk5XTDe)pZ0qr[nXnE0`Mo&fZGq;q\WrT4.\
+k5G>UjoGG[joGG[joGG4k5PDMjp(kJk5XT+s7POJs81pYs8M-bs5rJDs5s@AjoGG[joGG[joGG'
+k5PA]k5YGC!<<#["TRWak5YAA!<<#[!<<#[!<;fU!<<#[!<<#[!rqE_rT4+[rT4+[m,n<IpZ;JU
+roO4\roO4\mH4-Bn`BiOpuVSVJ`_OGJ`a#qrr@Q~>
+JaVdjrr<2i!:K7TjR*9Rmd:)C!!)HTr;clc"p")Z!:K7Tf^A,,q!RhUo'ZJWo^2\ZrpKdd!:Kgd
+q!J+^rpBadrpBadg$\P6oBl_]mJuYTnF$8Uq!J+^rpKdds6^!imJuYTj6cmIrpBadrpBadbO,H4
+mJu\R!<;Hs!:BjTmJu\C!!)Eemd:)RmJm7VmJm7cmJm7cmK3IWmK!7S!!*#d!!)BR"9@iimK!(N
+!!)uc!!)uc!!)BR!<DQe!<2Bd!:fLNs+0ThmXaf,mf*9;~>
+Ja2Lbrr<2e!:&hLjQ[!NlKSB7!!)<Lr;cl_"p!rR!:&hLf]qi(q!.PQo'62So]cDVrp'L`!:'O`
+q!%hZrosI`rosI`g$882oBHGYl2^)LnETuQq!%hZrp'L`s69^el2^)Lj6?UErosI`rosI`bN]00
+l2^,J!<;<o!9sRLl2^,7!!)9alKSBJl2UhRl2Uh_l2Uh_l2q%Ol2^hK!!*#`!!)BN"9@]el2^YF
+!!)u_!!)u_!!)BN!<DEa!<26`!:f@J!.jEdl@J6$lMgj7~>
+J`c4Z#6+\cs5rJDjQ6aJk2u^+s8V6DrVuo[#63iJs5rJDf]MT$pu_;Mo&frOo]?/RroX7\!9X:\
+puVSVroO4\roO4\g#i#.oB$2Uk5XTDnE0`MpuVSVroX7\s5jIak5XTDj5p@AroO4\roO4\bN8p,
+k5XTBs8V3ks5s@Dk5XT+s8V6]k2u^BjoGGNjoGG[joGG[jobYGk5YGC!<<&\!<;EJ"TRWak5Y8>
+!<<#[!<<#[!<;EJ!WV<]s8M-\s7,7Fs+0<`k(2Zqk5PF3~>
+JaVdjrr</h!:BjHmK3IW!:KO\s6]jerpBadeaED:qsOF`nF$8Un*U;YmJuYTo^3"cmd:)CmJu\C
+!;Psd!:K7Tmd:))mf!4Smf!4UmK<OX!:Bj\mJm7cmJm7cmJm7ImKN[ZmJu\C!6OX7!:K7T!:BjT
+!<)<c!<2Bj!:BjT!:BjdmJm7TmJm7dmJm7dmJm7cmKN[ZmJu\C!:9+X!:K7Tmd:)0mK3IW!:Kgd
+rpBadJaS*WJaSZgrr@Q~>
+Ja2Lbrr</d!9sRDl2q%O!:'7Xs69RarosI`ea!,6qs+.\nETuQn*1#Ul2^)Lo]c__lKSB7l2^,7
+!;Pg`!:&hLlKSB!lM^eOlM^eQl3%+P!9sRXl2Uh_l2Uh_l2UhEl377Rl2^,7!6OL3!:&hL!9sRL
+!<)0_!<26f!9sRL!9sR`l2UhPl2Uh`l2Uh`l2Uh_l377Rl2^,7!:8tT!:&hLlKSB(l2q%O!:'O`
+rosI`Ja.gOJa/B_rr@Q~>
+J`c4Z"T\Sbs5s@@jobYGs5s%Ts5j=]roO4\e`Ql2qr[nXnE0`Mn)acQk5XTDo]?J[k2u^+k5XT+
+s7k^\s5rJDk2u]nk5PDKk5PDMjok_Hs5s@TjoGG[joGG[joGGAjp(kJk5XT+s2jC/s5rJDs5s@D
+s8D'[s8M-bs5s@Ds5s@\joGGLjoGG\joGG\joGG[jp(kJk5XT+s6SkPs5rJDk2u]ujobYGs5s=\
+roO4\J`_OGJ``*Wrr@Q~>
+JaVdjquG[CrW)rcr;Zld!<)<c!<)<c!8$WA!:BjT!<)<g!:BjT!:oO\!:BjT!:fI]!:K7Tmd:)I
+mf!1fmJm7dmf*:cmJm7dmf!1emJtc)"9@iimJukHp&OdR"p")Z!:K7Tc0b]7mJuYTamKE7mJuYT
+!:K7TrU'XcrU'slmd:)C!!)HT!:9+X!:K7Tmd:)PmK<OX!:BjRmJm7dmJm7dmJm7NmJm7cmJm7c
+mL0*`!!)HT!!)Eemd:(+mXaeWmZHr;!.Y~>
+Ja2LbquG[?rW)r_r;Zl`!<)0_!<)0_!8$K=!9sRL!<)0c!9sRL!:oCX!9sRL!:f=Y!:&hLlKSBA
+lM^bbl2Uh`lMgk_l2Uh`lM^bal2]?!"9@]el2^G@p&OdN"p!rR!:&hLc0>E3l2^)Lam'-3l2^)L
+!:&hLrTX@_rTX[hlKSB7!!)<L!:8tT!:&hLlKSBHl3%+P!9sRNl2Uh`l2Uh`l2UhJl2Uh_l2Uh_
+l3m[X!!)<L!!)9alKSA#l@J5OlB1B3!.Y~>
+J`c4ZrrE&ui9(%=roX1Z!TsF\joGG[joGG5jok_Hs5s@[jok_Hs5s@Pjok_Hs5s@Ojp(kJk5XT+
+s7GIQrrV?_s8M0\s8D'[s8M0[rrM9^eE-o6k5XTDoB,cHp#ZJYk2u^+k5W]g"TRWak5WQc#lj&e
+k5YJDk5YDB!<<#[$30/Ms5s@]k2u^1jp(kJk5XT+s81p]s5s@Ds6SkJs8M-\s8M-\s6/SFs8D'[
+s8D'gs5s@]k2u^Dk5XT+s+0<`k(2ZWk5PF3~>
+JaVjlp&O=En,Uf&%fl%c!:K7Tmd:)CmJu\C!;,[`!:K7Tmd:)HmJm7dmJm7dmJm7[mem+dmK!4R
+rrE&d!!*#dr;b@8"p")Z!:K7TnF$8Uo'QJXrpBadrpBadc0kQ2amK-/rpKac"7?0W!;5a_!:BjT
+!:&tT!:BjT!;Z'^!:9+R!<)<c!<)<c!9ihN!<2Bd!<2Bp!:K7T!:K7T!:K7T!0Q[L!<)<c!<)<c
+!.jQhmYgN5!.Y~>
+Ja2Rdp&O=An,Uf"%fkn[!:&hLlKSB7l2^,7!;,O\!:&hLlKSB@l2Uh`l2Uh`l2UhWlMU\`l2^eJ
+rrE&`!!*#`r;b@4"p!rR!:&hLnETuQo'-2TrosI`rosI`c0G9.am&j+rp'I_"6omO!;5U[!9sRL
+!:&hP!9sRL!;YpZ!:8tN!<)0_!<)0_!9i\J!<26`!<26l!:&hL!:&hL!:&hL!0QOH!<)0_!<)0_
+!.jEdlAOs-!.Y~>
+J`c:\pAa@=nGghs&-(eSs5rJDk2u^+k5XT+s7GFXs5rJDk2u^8joGG\joGG\joGGSk5G;\k5YDB
+s8W)\!<<&\rVtC0#63iJs5rJDnE0`Mo&]rProO4\roO4\c0#$*alWU'roX4["6TXGs7PLWs5s@D
+s6A_Ls5s@Ds7tgVs6SkJs8D'[s8D'[s6/SFs8M-\s8M-hs5rJDs5rJDs5rJDs,lFDs8D'[s8D'[
+s+0<`k)8C%!.Y~>
+JaVdjquG[CrW)udr;clc!!)`\!!)uc!!)uc!!)-K!!*#d!!*#drrE&d!!*#d!!)`\!!*#d!!*#d
+!!)][!!)uc!!)uc!!)i_p&P'Z!W_ZVo`3\5!!*#d!!*#d!!)TX"9@iimJunI!!)uc!!)uc!!(I8
+p&N8'!<DQd!<)<c!;Gp\!9ikM!;u9Y!6adD!:K7Tmd:)CmJu\C!:Bgemd:&TOR<)KrpBadrpBad
+JaS*WMXLKEJ,~>
+Ja2LbquG[?rW)u`r;cl_!!)`X!!)u_!!)u_!!)-G!!*#`!!*#`rrE&`!!*#`!!)`X!!*#`!!*#`
+!!)]W!!)u_!!)u_!!)i[p&P'V!W_NNo`3\1!!*#`!!*#`!!)TT"9@]el2^JA!!)u_!!)u_!!(I4
+p&N8#!<DE`!<)0_!;GdX!9i_I!;u-U!6aX@!:&hLlKSB7l2^,7!9sOalKS?LOQlfGrosI`rosI`
+Ja.gOMX(3AJ,~>
+J`c4ZrrE&ui9(%=s5s:[s5j=]p>uATrT4+[rT4+[jlQRCroO4\roX7\roO4\roO4\p>uATroO4\
+roO4\p#Z8SrT4+[rT4+[q<%DNrT41]k2u@:g#`;7roO4\roO4\o&^)Tk5XTDo]?/RrT4+[rT4+[
+dcU9'b2ra)k5G>YjoGGUk5PDEk5PDYk4\hujqIdWk5XT+s5rJDk2u^+s8V6Ds8S2C!<<&\!<<&\
+!<7W4J`_jPrr@Q~>
+JaVdjrr</h!:BjHmK3IW!:Kgd!:Kgds6]jep?hn\rpBadrpBadjmE*KrU'XcrpKddrpBadrU'Xc
+q!J+^rU'XcrU'XchsUIDq!J=dmJuYTmdC&Sf'WM<rU'XcrU'Xco^2qamd:)CmJm7cmJm7cmJm7(
+mf!4-me$SVme-YMme-YYmf!4+mK<OX!:Bj`mK<OX!:BiHmKN[ZmJu\C!.jQhmYUB3!.Y~>
+Ja2Lbrr</d!9sRDl2q%O!:'O`!:'O`s69Rap?DVXrosI`rosI`jlugGrTX@_rp'L`rosI`rTX@_
+q!%hZrTX@_rTX@_hs11@q!&%`l2^)LlK\?Kf'358rTX@_rTX@_o]cY]lKSB7l2Uh_l2Uh_l2Uh$
+lM^e)lLb/RlLk5IlLk5UlM^e'l3%+P!9sR\l3%+P!9sQDl377Rl2^,7!.jEdlA=g+!.Y~>
+J`c4Z"T\Sbs5s@@jobYGs5s=\!9X:\s5j=]p>uATroO4\roO4\jlQRCrT4+[roX7\roO4\rT4+[
+puVSVrT4+[rT4+[hraq<puVe\k5XTDk2u[Cf&cu4rT4+[rT4+[o]?DYk2u^+k5YJ[joGG[joGFu
+k5PD%k4ScNk4\iEk4\iQk5PD#jok_Hs5s@Xjok_Hs5s?@jp(kJk5XT+s+0<`k)&7#!.Y~>
+JaVdjrr<2i!:K7TjR*NYmd:)C!!)HT!!)Eemd:)KmKN[ZmJu\C!1WBZ!:BjT!;Q!]!<;Hi!:BjT
+!6=L-!<)<i!:BjTmJm7dmf*:dmJm7dmJm7(mK<OX!:Bj0mJm7cmem+emJm7[mf!4Mmf!4^mK<OX
+!:Bj,mf!4]mf!3EmK<OX!:Bi<mXae^mf*9;~>
+Ja2Lbrr<2e!:&hLjQ[6UlKSB7!!)<L!!)9alKSBCl377Rl2^,7!1W6V!9sRL!;PjY!<;<e!9sRL
+!6=@)!<)0e!9sRLl2Uh`lMgk`l2Uh`l2Uh$l3%+P!9sR,l2Uh_lMU\al2UhWlM^eIlM^eZl3%+P
+!9sR(lM^eYlM^dAl3%+P!9sQ8l@J5VlMgj7~>
+J`c4Z#6+\cs5rJDjQ7!Qk2u^+s8V6Ds8V6]k2u^;jp(kJk5XT+s-r-Rs5s@Ds7kaUs8V3as5s@D
+s2X7%s8D'as5s@Dk5YJ\k5YJ\joGG\joGFujok_Hs5s@(joGG[k5G;]k5YJSk5PDEk5PDVjok_H
+s5s@$k5PDUk5PC=jok_Hs5s?4k(2ZNk5PF3~>
+L[G-BrU'Xcr9aObnF$8U!U]semJm7LmJm7dmKN[Z!:BjT!<2Bd!;#U]!:BjT!1WB\!:K7Tmd:)R
+me$S[mJm7-mJm7dmf*:emK*CV!<)?c!<;Hh!:K7Tm-XiRrU'XcrU'XcipI!Nmd:)CmJtDt!W_ZV
+rVurdrW)WZ"9@iimJuP?"9@iimK!.P"p")Z!:K7Tp$Me[rU'XcrU'XcipQL?!:KO\NpclHJaS*W
+L[P0BJ,~>
+L["j>rTX@_r9=7^nETuQ!U9[al2UhHl2Uh`l377R!9sRL!<26`!;#IY!9sRL!1W6X!:&hLlKSBJ
+lLb/Wl2Uh)l2Uh`lMgkal2gtN!<)3_!<;<d!:&hLm-4QNrTX@_rTX@_ip$^JlKSB7l2\ul!W_NN
+rVur`rW)WV"9@]el2^,7"9@]el2^_H"p!rR!:&hLp$)MWrTX@_rTX@_ip-4;!:'7XNp?TDJa.gO
+L[+m>J,~>
+LZSR:rT4([r8mtZnE'lR!!)0]roO4\k2l[DroOFbk5XTDk5YGC!<;ZQ"TRWak5Uq5#63iJs5rJD
+rT<eQs5j=]a6!C%roX7\s5jC_k5YDBs8W,]"97NGs6SkJs8D'[s8D'[s5N/Fs5rJDk2u]djoYSF
+k5PA\k5PDRjok_Hs5s@Hjok_Hs5s@Yjp(kJk5XT+s7PLSs8D'[s8D'[s5N27rrD3Ts,Q7@s+0<`
+k(i+!!.Y~>
+L[G-BrpBgfmK!7S!W_Wgo'QY]mJm7T!<)<c!9ihN!<)?c!<2Ed!<)<c!;#XX!8[&C!<)<c!<)<c
+!:9+R!<)<c!<)<c!<2Bd!<)<c!<)<c!;Z'_!<2Bd!<2Ed!;l3_!<2Bd!<2Ed!6FR4!:K7Tmd:)M
+mK<OX!:BjPmJm7dmJm7dmJm7HmJm7dmJm7dmJm70mf*7emed(XmKN[ZmJu\C!:9+X!:K7Tmd:)R
+mJm7dmJm7dmJm7[mJm7dmJm7dmJm7Cmf!4]mf!3Hme-X3mXaeamf*9;~>
+L["j>rosObl2^hK!W_Kco'-AYl2UhL!<)0_!9i\J!<)3_!<29`!<)0_!;#LT!8Zo?!<)0_!<)0_
+!:8tN!<)0_!<)0_!<26`!<)0_!<)0_!;Yp[!<26`!<29`!;l'[!<26`!<29`!6FF0!:&hLlKSBE
+l3%+P!9sRLl2Uh`l2Uh`l2UhDl2Uh`l2Uh`l2Uh,lMghalMLYTl377Rl2^,7!:8tT!:&hLlKSBJ
+l2Uh`l2Uh`l2UhWl2Uh`l2Uh`l2Uh?lM^eYlM^dDlLk4/l@J5YlMgj7~>
+LZSR:roO7^joGDC!W_?_o&^,Ujo>DDs8D'[s6/SFs8D*[s8M0\s8D'[s7>CPs4uf;s8D'[s8D'[
+s6SkJs8D'[s8D'[s8M-\s8D'[s8D'[s7tgWs8M-\s8M0\s81sWs8M-\s8M0\s2a=,s5rJDk2u^=
+jok_Hs5s@HjoGG\joGG\joGG@joGG\joGG\joGG(k5YG]k5>8Pjp(kJk5XT+s6SkPs5rJDk2u^B
+joGG\joGG\joGGSjoGG\joGG\joGG;k5PDUk5PC@k4\h+k(2ZQk5PF3~>
+M!k9Cs6]jerpBgfmK!7S!!)QWrrC(,p&O.@$NTV_!:BjT!:K7T!:&tP!<2Bd!<2Bd!;u6b!<2Bd
+!<2Bd!;Q!^!<2Bd!<2Ed!;u6c!:KgdrpBadrpKdda6j'1mJuYTp?qn[kjAWTmd:)CmJu87!!)uc
+!!)uc!!(R;!!)uc!!)uco`4jV!!*#d!!*#d!!)HT!!*#d!!*#d!s%cW!<)<c!<)<c!;5aa!:K7T
+md:)2mK<OX!:Bj`mK<OX!:BjRme6[]mf!4`mJm7cmJm7cmJm6<mXaenmf*9;~>
+M!G!?s69RarosObl2^hK!!)QSrrC((p&O.<$NTJW!9sRL!:&hL!:&hL!<26`!<26`!;u*^!<26`
+!<26`!;PjZ!<26`!<29`!;u*_!:'O`rosI`rp'L`a6Ed-l2^)Lp?MVWkir?PlKSB7l2]i/!!)u_
+!!)u_!!(R7!!)u_!!)u_o`4jR!!*#`!!*#`!!)HP!!*#`!!*#`!s%WO!<)0_!<)0_!;5U]!:&hL
+lKSB*l3%+P!9sR\l3%+P!9sRNlLk4YlM^e\l2Uh_l2Uh_l2Ug8l@J5flMgj7~>
+M!"^;s5j:]roO7^joGDC!!)QOrrC($pAa18$ifAOs5s@Ds5rJDs6A_Hs8M-\s8M-\s8;!Zs8M-\
+s8M-\s7kaVs8M-\s8M0\s8;![s5s=\roO4\roX7\a6!O)k5XTDp?)ASkiN*Lk2u^+k5XH'!<<#[
+!<<#[!<:U3!<<#[!<<#[p&FmN!<<&\!<<&\!<;KL!<<&\!<<&\"97NGs8D'[s8D'[s7PLYs5rJD
+k2u^"jok_Hs5s@Xjok_Hs5s@Jk4\hUk5PDXjoGG[joGG[joGF4k(2Z^k5PF3~>
+M=(NImJu\C!<2Bf!:BjdmJm7Wmf*:(mf!4CmKim]mJm7T!:BgekjAWTmd:)CmK!+O"p")Z!:K7T
+p$N"amd:)CmK!.P$io_`!:K7Tmd:)CmJt2nrW)c^p&OFH"9@iimJs6S!!*#d!!*#d!W_ZVqZ$Zb
+!;Z$_!<)<c!<)<c!:]CV!<)<c!<)<c!9ihR!:BjT!8[&I!:K7Tmd:)QmKN[ZmJu\C!:B1Ss7l!^
+s/bVk!:BjT!;l0a!<2Bd!<2Bd!.jQhm[*AA!.Y~>
+M<Y6El2^,7!<26b!9sR`l2UhSlMgk$lM^e?l3RIUl2UhL!9sOakir?PlKSB7l2^\G"p!rR!:&hL
+p$)_]lKSB7l2^_H$ioSX!:&hLlKSB7l2\cfrW)cZp&OFD"9@]el2[gK!!*#`!!*#`!W_NNqZ$Z^
+!;Ym[!<)0_!<)0_!:]7R!<)0_!<)0_!9i\N!9sRL!8ZoE!:&hLlKSBIl377Rl2^,7!:B%O!;PgZ
+!3GGg!9sRL!;l$]!<26`!<26`!.jEdlBgf9!.Y~>
+M<4sAjoFQ+!<2*^!9O:\jo>DOk5PFuk5PD;jpD(Mk5YJDs5s@]kiN*Lk2u^+k5Y;?#63iJs5rJD
+p#ZJYk2u^+k5Y>@%0,JPs5rJDk2u^+k5WB^rr;fVpAaI@"TRWak5VFC!<<&\!<<&\!rqEFqu6]Z
+s7tdWs8D'[s8D'[s7#.Ns8D'[s8D'[s6/SJs5s@Ds4ufAs5rJDk2u^Ajp(kJk5XT+s6\qKs7k^V
+s/b>cs5s@Ds81pYs8M-\s8M-\s+0<`k*P61!.Y~>
+M=(NImJu\C!<2Bf!:BjdmJm7WmeHk)mK<OX!:BjDmK<OXmJu\S!9W\P!:BjT!;Psb!:BjT!;#U]
+!:BjT!;l0a!<2Bd!<2Bh!:BjT!6=O$!;Z'^!9W_K!2o5g!:K7TmdBcKrpBadrU'XcrU'Xc`U<^*
+h<k7CrpBadrpBadrpBadrpBadrpBadmd:)Tq!J.^XmQAnmd:)CmK!.P"p")Z!:K7TJaS*WQL=bQ
+J,~>
+M<Y6El2^,7!<26b!9sR`l2UhSlM1G%l3%+P!9sR@l3%+Pl2^,K!9WPL!9sRL!;Pg^!9sRL!;#IY
+!9sRL!;l$]!<26`!<26d!9sRL!6=Bu!;YpZ!9WSG!2o)c!:&hLlK\'CrosI`rTX@_rTX@_`TmF&
+h<Ft?rosI`rosI`rosI`rosI`rosI`mcjcPq!%hZXm-)jlKSB7l2^_H"p!rR!:&hLJa.gOQKnJM
+J,~>
+M<4sAjoFQ+!<2*^!9O:\jo>DOk4o#!jok_Hs5s@<jok_Hk5XTCs5rGHs5s@Ds7k^Zs5s@Ds7>@U
+s5s@Ds81pYs8M-\s8M-`s5s@Ds2X9qs7tgVs5rJCs/4u_s5rJDk2uC;roO4\rT4+[rT4+[`TI1"
+h<"_;roO4\roO4\roO4\roO4\roO4\mcFNLpuVSVXl]ifk2u^+k5Y>@#63iJs5rJDJ`_OGQKJ2I
+J,~>
+MXCZKmd:)CmK!7S!W_WgrpBadna?2Qb3fQ9md:)CmJu\C!<)<c!<)<c!:0%R!:KdcjR3!Ip?qn[
+na?AVqsFFarU'XcrU0Xb_X@C'p?i%`mJuYTlgFHHkjAENrU'XcrU'XciU-[GrU'XcrU'Xcq<e@c
+mJuYTrU0Xb"RZ9XmK!7S!!*#d!!*#d!!(+.p&O+?!!)uc!!)uc!W_WgrU'XcrU'Xcn*U2Uq!J.^
+Y3l8irpBadrpBadqsFRemJuYTJaS*WQ1"YPJ,~>
+MWtBGlKSB7l2^hK!W_KcrosI`n`ooMb3B95lKSB7l2^,7!<)0_!<)0_!:/nN!:'L_jQc^Ep?MVW
+n`p)Rqs".]rTX@_rTa@^_Wq+#p?Db\l2^)Llg"0Dkir-JrTX@_rTX@_iT^CCrTX@_rTX@_q<A(_
+l2^)LrTa@^"R6!Pl2^hK!!*#`!!*#`!!(+*p&O+;!!)u_!!)u_!W_KcrTX@_rTX@_n*0lQq!%hZ
+Y3GuerosI`rosI`qs":al2^)LJa.gOQ0SALJ,~>
+MWP*Ck2l[+joGDC!W_?_roO1\n`KWIb2s$1k2u^+k5XT+s8D'[s8D'[s6JeJs5s:[jQ?IAp?)AS
+n`KiNqrRnYrT4+[rT=+Z_WLjtp>uMXk5XTDlfRp@kiMmFrT4+[rT4+[iT:.?rT4+[rT4+[q;qh[
+k5XTDrT=+Z"QoaHk5YGC!<<&\!<<&\!<:.&pAa.7!<<#[!<<#[!rqE_rT4+[rT4+[n)aWMpuVSV
+Y3#`aroO4\roO4\qrS%]k5XTDJ`_OGQ0/)HJ,~>
+MXLBB!U]semK*CV!<2Bd!:fLW!6+@+!<2Bd!<2Bg!:K7TrpBadrpBadlgFHHm-aQIrpKI[q<mqV
+q<mqVa6j'1mJuYTq!J=dmd:)CmJuJ=rW)!H!!*#d!!*#d!!(pE!!*#d!!*#d!!)c]rW)obrW!#f
+!!*#d!!*#d"p")Z!:K7T_s[L([I+%pq!J.^YO2AjrU'XcrU'XcqsOF`JaS*WPj\POJ,~>
+MX(*>!U9[al2gtN!<26`!:f@S!6+4'!<26`!<26c!:&hLrosI`rosI`lg"0Dm-=9Erp'1Wq<IYR
+q<IYRa6Ed-l2^)Lq!&%`lKSB7l2^&5rW)!D!!*#`!!*#`!!(pA!!*#`!!*#`!!)cYrW)o^rW!#b
+!!*#`!!*#`"p!rR!:&hL_s74$[H[_lq!%hZYNc)frTX@_rTX@_qs+.\Ja.gOPj88KJ,~>
+MWXg:!TjC]joPPF!<2*\!:f4O!6+(#s8M-\s8M-_s5rJDroO4\roO4\lfRp@m,n$AroWqSq<%DN
+q<%DNa6!O)k5XTDpuVe\k2u^+k5XZ-rr;$@!<<&\!<<&\!<:s=!<<&\!<<&\!<;fUrr;rZrr3&^
+s8W)\!<<&\#63iJs5rJD_rgsu[H7JhpuVSVYN>ibrT4+[rT4+[qr[nXJ`_OGPihuGJ,~>
+L[G-BrpBgfmK!7S!W_WgnF$;V`pNg,rU'XcrU'slmd:)CmJu\C!:9.I!<;He!9rqN!;>j[!:fLV
+!:fLV!6":0!:K7Tmd:)OmJm7dmJm7dmJm7PmK<OX!:BjImKN[ZmJu\C!8[&I!:K7Tmd:)Ome$P_
+mJu\C!<)<c!<2Bu!:BjT!!)Eemd:)C!:K7TmJtW%"9@iimJs]`!<<#c!<<#c!<9b#!!)uc!!)uc
+!!)QWp&K[3JaSonrr@Q~>
+L["j>rosObl2^hK!W_KcnEU#R`p*O(rTX@_rTX[hlKSB7l2^,7!:9"E!<;<a!9reJ!;>^W!:f@R
+!:f@R!6".,!:&hLlKSBGl2Uh`l2Uh`l2UhLl3%+P!9sREl377Rl2^,7!8ZoE!:&hLlKSBGlLb,[
+l2^,7!<)0_!<26q!9sRL!!)9alKSB7!:&hLl2]2r"9@]el2\9X!!)u_!!)u_!!'^t!!)u_!!)u_
+!!)QSp&K[/Ja/Wfrr@Q~>
+LZSR:roO7^joGDC!W_?_nE0`N`o[:$rT4+[rT4Fdk2u^+k5XT+s6SnAs8V3]s68\Fs7YUSs7,7N
+s7,7Ns2=%(s5rJDk2u^?joGG\joGG\joGGHjok_Hs5s@Ajp(kJk5XT+s4ufAs5rJDk2u^?k4S`W
+k5XT+s8D'[s8M-ms5s@Ds8V6]k2u^+s5rJDk5Wfj"TRWak5VmP!<<#[!<<#[!<9ap!<<#[!<<#[
+!<;TOpA]^+J``?^rr@Q~>
+L[G-BrU'Xcr9aObn*^2Uc0bQ3rU'XcrU'Xcp[/.amJuYTkO/3Is6]jel0\ZSmJuYTq!J7bmJuYT
+oBl_]mJuYToBl_]mJuYT`pNg,rpBadrpBadr9aObrU'XcrU'Xcp?hn\rU'XcrU'jimd:)CmJu;8
+"9@iimJuVA!!)uc!!)uc!!)oa"9@iimJuqJrW)ud!!*#d!!*#d!!)i_rW)ud$39JomJuYTmJuYT
+d-_)<md:)C!!*#d!!)uc!!(X=!!)uc!!)uc!!)][!<;i^!<9_"!!*#d!!*#d!!)BRrW%N;JaScj
+rr@Q~>
+L["j>rTX@_r9=7^n*9oQc0>9/rTX@_rTX@_pZ_k]l2^)LkN_pEs69Ral08BOl2^)Lq!%t^l2^)L
+oBHGYl2^)LoBHGYl2^)L`p*O(rosI`rosI`r9=7^rTX@_rTX@_p?DVXrTX@_rTXRelKSB7l2]l0
+"9@]el2^29!!)u_!!)u_!!)o]"9@]el2^MBrW)u`!!*#`!!*#`!!)i[rW)u`$39>kl2^)Ll2^)L
+d-:f8lKSB7!!*#`!!)u_!!(X9!!)u_!!)u_!!)]W!!)fZ!!'[s!!*#`!!*#`!!)BNrW%N7Ja/Kb
+rr@Q~>
+LZSR:rT4([r8mtZn)jWMc/o$+rT4+[rT4+[pZ;VYk5XTDkN;[As5j=]l/i-Kk5XTDpuV_Zk5XTD
+oB$2Uk5XTDoB$2Uk5XTD`o[:$roO4\roO4\r8n"ZrT4+[rT4+[p>uATrT4+[rT4=ak2u^+k5XK(
+"TRWak5Xf1!<<#[!<<#[!<;rY"TRWak5Y,:rr<#\!<<&\!<<&\!<;lWrr<#\$NK8gk5XTDk5XTD
+d,kQ4k2u^+s8W)\!<<#[!<:[5!<<#[!<<#[!<;`S!<;iV!<9^o!<<&\!<<&\!<;EJrr7Q3J``3Z
+rr@Q~>
+JaVdjrrC:2!!*#d!!*#d!!)][rW)-LrW!,i!!)Ee!9rnU!:K7Tmd:)OmKN[ZmJu\C!;5aa!:K7T
+md:)JmKN[ZmJu\C!6FR.!<)<c!<)<c!9W\L!<2Bd!<2Bd!<2Bd!<2Bd!9<MH!:&tP!<2Bd!<2Bd
+!;Z'^!;5a`!:BjT!!)uc!!)uc!!*#dp&G?c!!)Ee!:Bj\mJm7cmJm7cmJm7LmJm7dmKWa[mJm7T
+mK!7S!!(R;!!*#d!!*#d!!)ZZ!<;i^!<9\!"p")Z!:K7Tm-XuVmJuYTJaS*WQ1"YPJ,~>
+Ja2LbrrC:.!!*#`!!*#`!!)]WrW)-HrW!,e!!)9a!9rbQ!:&hLlKSBGl377Rl2^,7!;5U]!:&hL
+lKSBBl377Rl2^,7!6FF*!<)0_!<)0_!9WPH!<26`!<26`!<26`!<26`!9<AD!:&hL!<26`!<26`
+!;YpZ!;5U\!9sRL!!)u_!!)u_!!*#`p&G?_!!)9a!9sRXl2Uh_l2Uh_l2UhHl2Uh`l3@=Sl2UhL
+l2^hK!!(R7!!*#`!!*#`!!)ZV!!)fZ!!'Xr"p!rR!:&hLm-4]Rl2^)LJa.gOQ0SALJ,~>
+J`c4ZrrC:*!<<&\!<<&\!<;`Srr;0Drr3/as8V6]s68YMs5rJDk2u^?jp(kJk5XT+s7PLYs5rJD
+k2u^:jp(kJk5XT+s2a=&s8D'[s8D'[s5rGDs8M-\s8M-\s8M-\s8M-\s5W8@s6A_Hs8M-\s8M-\
+s7tgVs7PLXs5s@Ds8W&[!<<#[!<<&\pAYB[s8V6]s5s@TjoGG[joGG[joGGDjoGG\jp1qKk5YJD
+k5YGC!<:U3!<<&\!<<&\!<;]R!<;iV!<9[n#63iJs5rJDm,eHNk5XTDJ`_OGQ0/)HJ,~>
+JaVdjrrC71"p")Z!:K7Tq!RhUm-alR!:Kdc!q$$glL"WPrpBadrpBadr9aObrpBadrpBadp[/"]
+rpBadrpBadp[/"]rpBadrpBadbjGH2rU'XcrU'XcipI!Nmd:)CmK!4R!!)uc!!)6Np&OLJ"p")Z
+!:K7Tr9j7YrpBadrpBsjmd:)CmJubErW!>o!:K7TmJuYTmJm7cmJm7`mJm7dmJm7dmJm7LmJm7c
+mJm7dmf*7imJu\C!7U??!:K7Tmd:)HmK!:^mK!:#mKrs^mJuYTmJu\C!:T=[!:K7Tmd:(+mXael
+mf*9;~>
+Ja2LbrrC7-"p!rR!:&hLq!.PQm-=TN!:'L_!pTaclKS?LrosI`rosI`r9=7^rosI`rosI`pZ__Y
+rosI`rosI`pZ__YrosI`rosI`bj#0.rTX@_rTX@_ip$^JlKSB7l2^eJ!!)u_!!)6Jp&OLF"p!rR
+!:&hLr9EtUrosI`ros[flKSB7l2^>=rW!>k!:&hLl2^)Ll2Uh_l2Uh\l2Uh`l2Uh`l2UhHl2Uh_
+l2Uh`lMghel2^,7!7U3;!:&hLlKSB@l2UhZl2Ugtl3[OVl2^)Ll2^,7!:T1W!:&hLlKSA#l@J5d
+lMgj7~>
+J`c4ZrrC7)#63iJs5rJDpu_;Mm,n?J!9X7[!p9O_lK/*HroO4\roO4\r8n"ZroO4\roO4\pZ;JU
+roO4\roO4\pZ;JUroO4\roO4\biSp*rT4+[rT4+[ioUIFk2u^+k5YDB!<<#[!<;9FpAaOB#63iJ
+s5rJDr9!_QroO4\roOFbk2u^+k5Xr5rr3Ags5rJDk5XTDk5YJ[joGGXjoGG\joGG\joGGDjoGG[
+joGG\k5YGak5XT+s3p*7s5rJDk2u^8joGGVjoGFpjpM.Nk5XTDk5XT+s6o(Ss5rJDk2u\pk(2Z\
+k5PF3~>
+JaVdjrrC40"9@iimJukHrW)3NrrE)e!<DQe!<;He!:9+R!<)<c!<)<c!<2Bd!<)<c!<)<c!;Z$_
+!<)<c!<)<c!;Z$_!<)<c!<)<c!6jj2!<2Bd!<2Bd!;5a[!<2Ed!<2Ed!<2Bd!;l3`!"/,omJuYT
+md:)C!<)<c!9`eL!9ihU!:BjT!:K7TrU'^emdC&Ss6]jerpBadrpBadrpBadrpBado'Qb`mJuYT
+mJu\Cq>gN_!!)f^"p")Z!:K7Tg[51EmJuYTdI%,;mJuYTo'QMXq!J.^]^>h$mdC&Ss6]jen*U/U
+rpBadrpBadJaS*WQgXkRJ,~>
+Ja2LbrrC4,"9@]el2^G@rW)3JrrE)a!<DEa!<;<a!:8tN!<)0_!<)0_!<26`!<)0_!<)0_!;Ym[
+!<)0_!<)0_!;Ym[!<)0_!<)0_!6j^.!<26`!<26`!;5UW!<29`!<29`!<26`!;l'\!".ukl2^)L
+lKSB7!<)0_!9`YH!9i\Q!9sRL!:&hLrTXFalK\?Ks69RarosI`rosI`rosI`rosI`o'-J\l2^)L
+l2^,7q>gN[!!)fZ"p!rR!:&hLgZenAl2^)LdHUi7l2^)Lo'-2Tq!%hZ]]oOulK\?Ks69Ran*0lQ
+rosI`rosI`Ja.gOQg4SNJ,~>
+J`c4ZrrC4("TRWak5Y&8rr;6Fs8W,]!WV<]s8V3]s6SkJs8D'[s8D'[s8M-\s8D'[s8D'[s7tdW
+s8D'[s8D'[s7tdWs8D'[s8D'[s30U*s8M-\s8M-\s7PLSs8M0\s8M0\s8M-\s81sXrsIogk5XTD
+k2u^+s8D'[s6&PDs6/SMs5s@Ds5rJDrT41]k2u[Cs5j=]roO4\roO4\roO4\roO4\o&^5Xk5XTD
+k5XT+qZ$QW!<;iV#63iJs5rJDgZAY=k5XTDdH1T3k5XTDo&]rPpuVSV]]K:qk2u[Cs5j=]n)aWM
+roO4\roO4\J`_OGQfe;JJ,~>
+JaVdjrrC1/rW)QX"9@iimJuS@!W_ZVp&K[3q!J=dmd:)CmJukH!!*#d!!*#d!!*#d!!)i_rW)ud
+#6=2[!!)HT!<2Bd!9`bQ!:BjT!9ikM!<2Bd!<2Bh!:K7Tmf!1hmJu\C!<2Bd!<)<c!<)<c!;,[_
+!:K7TmdBZHp?i%`mJuYTg$\h>cgLc4na?,N^$bRona6AWrU'XcrU'XcJaS*WR-stSJ,~>
+Ja2LbrrC1+rW)QT"9@]el2^/8!W_NNp&K[/q!&%`lKSB7l2^G@!!*#`!!*#`!!*#`!!)i[rW)u`
+#6=&S!!)<L!<26`!9`VM!9sRL!9i_I!<26`!<26d!:&hLlM^bdl2^,7!<26`!<)0_!<)0_!;,O[
+!:&hLlK[s@p?Db\l2^)Lg$8P:cg(K0n`ofJ^$>:kn`g)SrTX@_rTX@_Ja.gOR-O\OJ,~>
+J`c4ZrrC1'rr;TP"TRWak5Xc0!rqEFpA]^+puVe\k2u^+k5Y&8!<<&\!<<&\!<<&\!<;lWrr<#\
+#QNrKs8V6Ds8M-\s6&MIs5s@Ds6/VEs8M-\s8M-`s5rJDk5PA`k5XT+s8M-\s8D'[s8D'[s7GFW
+s5rJDk2u:8p>uMXk5XTDg#i;6cfY6,n`KQF^#o%gn`BiOrT4+[rT4+[J`_OGR-+DKJ,~>
+JaVdjrrC=3p&P'Z!!)uc"p")Z!:BgejmN*JL[G-BrU'XcrU'Xcq!J7bmJuYTna6_amd:&TmJm7T
+mK!1Qp&GBd!!)HT!:K7TkO&NSmd:)CmJuYBp&P-\#6=2[!:K7Tmf!1emJuD;!!*#d!!*#d!<DQb
+!!DWhmJunIrW(aAp&N_4p&LuX!W_ZVquHcb!!%T<JaS*WrU0[cJ,~>
+Ja2LbrrC=/p&P'V!!)u_"p!rR!9sOajm)gFL["j>rTX@_rTX@_q!%t^l2^)Ln`gG]lKS?Ll2UhL
+l2^bIp&GB`!!)<L!:&hLkNW6OlKSB7l2^5:p&P-X#6=&S!:&hLlM^bal2]u3!!*#`!!*#`!<DE^
+!!DKdl2^JArW(a=p&N_0p&LuT!W_NNquHc^!!%T8Ja.gOrTaC_J,~>
+J`c4ZrrC=+pAb*R!<<#[#63iJs5s@]jlZRBLZSU:rT4+[rT4+[puV_Zk5XTDn`C2Yk2u^Dk5YJD
+k5YAApAYE\s8V6Ds5rJDkN3!Kk2u^+k5Xi2pAb0T#QNrKs5rJDk5PA]k5XT+!<<&\!<<&\!WV<Z
+rr_E`k5Y)9rr:d9pA`b,pA_#P!rqEFr;ZfZ!<7W4J`_OGrT=+[J,~>
+JaVdjrrC1/rW)`]$NTV_!!)HT!!)HT!9`bQ!:BjT!/KtB!<2Bd!<2Bd!;>j[!:T=]!:BjT!:BjT
+!;Gp[!"/,omJu\C!:BjT!9`bM!<2Bd!<2Bd!:'"O!!qummJuYTmd:)SmK*CVmf!4KmJm7cmJm7c
+meZtamf!4\me-YWmJm7cmJm7cmJm7Tmf!44mf!3[mK!=Uqu?cc!.jQhmXag(mf*9;~>
+Ja2LbrrC1+rW)`Y$NTJW!!)<L!!)<L!9`VM!9sRL!/Kh>!<26`!<26`!;>^W!:T1Y!9sRL!9sRL
+!;GdW!".ukl2^,7!9sRL!9`VI!<26`!<26`!:&kK!!qiil2^)LlKSBKl2gtNlM^eGl2Uh_l2Uh_
+lMCP]lM^eXlLk5Sl2Uh_l2Uh_l2UhPlM^e0lM^dWl2^nMqu?c_!.jEdl@J6ulMgj7~>
+J`c4ZrrC1'rr;cU$ifAOs8V6Ds8V6Ds6&MIs5s@Ds+f_:s8M-\s8M-\s7YUSs6o(Us5s@Ds5s@D
+s7b[SrsIogk5XT+s5s@Ds6&MEs8M-\s8M-\s6AbGrs7cek5XTDk2u^CjoYSFk5PDCjoGG[joGG[
+k55/Yk5PDTk4\iOjoGG[joGG[joGGLk5PD,k5PCSjoPMEr;Qf[s+0<`k(2[mk5PF3~>
+JaVdjrrCL8!!)uc#6=2[!:BjT!;Q!^!!M]imd:)RmJm7OmKN[ZmJu\C!/KtH!:K7Tmd:)Nme-YO
+mf!1dmf!4\mK3IW!:KdcrU0XbkO&<MrU'XcrU'Xcm-Y#WmJuYTmf!4dmJm7dme-Y?mdU;Omf!4Z
+mJm7dmJm7dmJm7TmK<OX!:Bj7mK<OX!:Bi^me-X3mXaeWmeuSR!.Y~>
+Ja2LbrrCL4!!)u_#6=&S!9sRL!;PjZ!!MQelKSBJl2UhKl377Rl2^,7!/KhD!:&hLlKSBFlLk5K
+lM^b`lM^eXl2q%O!:'L_rTa@^kNW$IrTX@_rTX@_m-4`Sl2^)LlM^e`l2Uh`lLk5;lL=lKlM^eV
+l2Uh`l2Uh`l2UhPl3%+P!9sR3l3%+P!9sQZlLk4/l@J5OlM^#J!.Y~>
+J`c4ZrrCL0!<<#[#QNrKs5s@Ds7kaVrrhKak2u^BjoGGGjp(kJk5XT+s+f_@s5rJDk2u^>k4\iG
+k5PA\k5PDTjobYGs5s:[rT=+ZkN2dErT4+[rT4+[m,eKOk5XTDk5PD\joGG\k4\i7k4/KGk5PDR
+joGG\joGG\joGGLjok_Hs5s@/jok_Hs5s?Vk4\h+k(2ZGk5FHB!.Y~>
+JaVdjrrCI7!!*#d#QX8mmJm7TmK!%M"9@iimJu>9!!*#d!!*#d!!%fB"9@iimJunIrW)NWnc8UU
+!<DQV!<;He!<)<c!7^E<!:K:K!;l3`!8[&D!:Kab!:Kgdo^2h^mJuYTp$N"amd:)CmJu\C#QX;\
+!:K7TmK!4R!!)uc!!(pE"p")Z!:K7TU[A-_med%cmK!7S!!)uc!!)uc!!%T<JaSE`rr@Q~>
+Ja2LbrrCI3!!*#`#QX,il2UhLl2^VE"9@]el2]o1!!*#`!!*#`!!%f>"9@]el2^JArW)NSnc8UQ
+!<DER!<;<a!<)0_!7^98!:&kC!;l'\!8Zo@!:'I^!:'O`o]cPZl2^)Lp$)_]lKSB7l2^8;#QX/T
+!:&hLl2^eJ!!)u_!!(pA"p!rR!:&hLUZqj[lMLV_l2^hK!!)u_!!)u_!!%T8Ja/-Xrr@Q~>
+J`c4ZrrCI/!<<&\#lj&ek5YJDk5Y5="TRWak5XN)!<<&\!<<&\!<7i:"TRWak5Y)9rr;QOo)JXM
+!WV<Ns8V3]s8D'[s4$04s5rJ;s81sXs4uf<s5s7Z!9X:\o]?;Vk5XTDp#ZJYk2u^+k5Xl3#lj&L
+s5rJDk5YDB!<<#[!<:s=#63iJs5rJDUZMUWk5>5[k5YGC!<<#[!<<#[!<7W4J`_jPrr@Q~>
+JaVdjrrCF6#QX;\!!)EemK!7S!!)f^rW)$I!!)uc!!)uc!!%fBrW)TY"9@iimJu_DrVurdrW)c^
+!!*#d!W_ZVrW)obrW)ud!!*#d!!*#d!!(O:!!*#d!!*#drW)`]"9@iimJu/4$io\q!:BjT!!)Ee
+mJutK"p")Z!:K7Tp$Mq_mJuYTmd:&TrpBadrpBgfmK!7S!!*#d!!(pE!!*#d!!*#d!!&k`!W_ZV
+quHcb!!*#d!!*#d!!*#d!!%T<JaSB_rr@Q~>
+Ja2LbrrCF2#QX/T!!)9al2^hK!!)fZrW)$E!!)u_!!)u_!!%f>rW)TU"9@]el2^;<rVur`rW)cZ
+!!*#`!W_NNrW)o^rW)u`!!*#`!!*#`!!(O6!!*#`!!*#`rW)`Y"9@]el2]`,$ioPm!9sRL!!)9a
+l2^PC"p!rR!:&hLp$)Y[l2^)LmcjcProsI`rosObl2^hK!!*#`!!(pA!!*#`!!*#`!!&k\!W_NN
+quHc^!!*#`!!*#`!!*#`!!%T8Ja/*Wrr@Q~>
+J`c4ZrrCF.#lj&Ls8V6]k5YGC!<;iVrr;'A!<<#[!<<#[!<7i:rr;WQ"TRWak5Xo4rr2u\rr;fV
+!<<&\!rqEFrr;rZrr<#\!<<&\!<<&\!<:R2!<<&\!<<&\rr;cU"TRWak5X?$%0,Jis5s@Ds8V6]
+k5Y/;#63iJs5rJDp#ZDWk5XTDmcFNLroO4\roO:^k5YGC!<<&\!<:s=!<<&\!<<&\!<8nX!rqEF
+r;ZfZ!<<&\!<<&\!<<&\!<7W4J`_gOrr@Q~>
+JaVdjrrCC5#6=/lmJu\C!<)<c!<)?Y!.jS%me-YZmJm7dmf*7imJu\C!:fI_!:BjT!:BjT!;l0a
+!<)<f!:BjTrW)ud%05ermJu\C!:K7Tmd:))mJm7cmKWa[mJuYTmK!+O"p")Z!:K7Ti9h$SmJu\C
+!:BgemJu\C!;Ps^!<2Bd!<2Bd!;5dZ!:K7T!<)<c!<)<k!:BjTmJu\C!8m2E!<)<c!<)<c!2f2X
+!<)<i!:K7Tmd:(+mXae^mf*9;~>
+Ja2LbrrCC1#6=#hl2^,7!<)0_!<)3U!.jG!lLk5Vl2Uh`lMghel2^,7!:f=[!9sRL!9sRL!;l$]
+!<)0b!9sRLrW)u`%05Ynl2^,7!:&hLlKSB!l2Uh_l3@=Sl2^)Ll2^\G"p!rR!:&hLi9CaOl2^,7
+!9sOal2^,7!;PgZ!<26`!<26`!;5XV!:K+P!<)0_!<)0g!9sRLl2^,7!8m&A!<)0_!<)0_!2f&T
+!<)0e!:&hLlKSA#l@J5VlMgj7~>
+J`c4ZrrCC-#QNrdk5XT+s8D'[s8D*Qs+0=rk4\iRjoGG\k5YGak5XT+s7,4Ws5s@Ds5s@Ds81pY
+s8D'^s5s@Drr<#\%KGSjk5XT+s5rJDk2u]njoGG[jp1qKk5XTDk5Y;?#63iJs5rJDi8tLKk5XT+
+s5s@]k5XT+s7k^Vs8M-\s8M-\s7PORs6f"Ls8D'[s8D'cs5s@Dk5XT+s52r=s8D'[s8D'[s/+rP
+s8D'as5rJDk2u\pk(2ZNk5PF3~>
+JaVdjrrC@4rW)NW!<DQe!<2Bd!.jRumf!4bmJm7dmKWa[mJm7TmK!7S!!)WY$39M^!!)Ee!:K7T
+p?i[rmd:)CmJm7TmJu\C!:K7TmJuYTmK!4R!!)uc!!([>"p")Z!:K7Tr9aObrpBadrpBadnEp8V
+rU'XcrU'Xcr9aObrpKdds6fmerpBadqX+=`rU'XcrU'XcqX4%WjmE6OmJuYTJaW:#!W_ZVrW)ud
+!!)oa"9@iimJqh+JaS<]rr@Q~>
+Ja2LbrrC@0rW)NS!<DEa!<26`!.jFqlM^e^l2Uh`l3@=Sl2UhLl2^hK!!)WU$39AV!!)9a!:&hL
+p?ECnlKSB7l2UhLl2^,7!:&hLl2^)Ll2^eJ!!)u_!!([:"p!rR!:&hLr9=7^rosI`rosI`nEKuR
+rTX@_rTX@_r9=7^rp'L`s6BUarosI`qW\%\rTX@_rTX@_qWdbSjlusKl2^)LJa3!p!W_NNrW)u`
+!!)o]"9@]el2ZD#Ja/$Urr@Q~>
+J`c4ZrrC@,rr;QO!WV<]s8M-\s+0=mk5PDZjoGG\jp1qKk5YJDk5YGC!<;ZQ$NK8Ns8V6]s5rJD
+p?!.jk2u^+k5YJDk5XT+s5rJDk5XTDk5YDB!<<#[!<:^6#63iJs5rJDr8n"ZroO4\roO4\nE'`N
+rT4+[rT4+[r8n"ZroX7\s5s@]roO4\qW7eXrT4+[rT4+[qW@MOjlQ^Gk5XTDJ`c^h!rqEFrr<#\
+!<;rY"TRWak5U"pJ`_aMrr@Q~>
+JaVdjrrCL8p&OdR!<DQe!!2KfJaVRd"9@iimK!4R"p")Z!:BgerpBadrU'Xcr9aObrU0Xbs6fme
+rpKdds6]jeq!J+^rpC!kmd:&Tmd:)SmK*CVmf!4cmJm7dmJm7dmJm7>mJm7dmJm7dmJm7dmJm7c
+mJm7cmJm7VmJm7dmJm7dmJm7bmKrs^!:K7Tmd:)C!<)<c!9NYJ!9!;E!.jS4mKrs^mJuYTmJu\C
+!;l3`!.jQhmY:00!.Y~>
+Ja2LbrrCL4p&OdN!<DEa!!2?bJa2:\"9@]el2^eJ"p!rR!9sOarosI`rTX@_r9=7^rTa@^s6BUa
+rp'L`s69Raq!%hZros^glKS?LlKSBKl2gtNlM^e_l2Uh`l2Uh`l2Uh:l2Uh`l2Uh`l2Uh`l2Uh_
+l2Uh_l2UhRl2Uh`l2Uh`l2Uh^l3[OV!:&hLlKSB7!<)0_!9NMF!9!/A!.jG0l3[OVl2^)Ll2^,7
+!;l'\!.jEdlA"U(!.Y~>
+J`c4ZrrCL0pAagJ!WV<]rrM9^J`c"T"TRWak5YDB#63iJs5s@]roO4\rT4+[r8n"ZrT=+Zs5s@]
+roX7\s5j=]puVSVroOIck2u^Dk2u^CjoYSFk5PD[joGG\joGG\joGG6joGG\joGG\joGG\joGG[
+joGG[joGGNjoGG\joGG\joGGZjpM.Ns5rJDk2u^+s8D'[s5iDBs5<&=s+0>,jpM.Nk5XTDk5XT+
+s81sXs+0<`k(`$u!.Y~>
+JaVdjrrC@4rW)NW!<DQe!!2KfJaVRd"p")Z!:K7TrU'dgmJuYTna6AWrpKac!:KgdrpKddrpBad
+qX+=`rU'slmJu\C!:BjTme$S[mK3IWmJto-!!)uc!!)uc!!)$H"p")Z!:K7Tq!J7bmJuYThX1LH
+mJuYTjmMgBJaW@%"p")Z!:K7TrU0@ZJaS*WMXLKEJ,~>
+Ja2LbrrC@0rW)NS!<DEa!!2?bJa2:\"p!rR!:&hLrTXLcl2^)Ln`g)Srp'I_!:'O`rp'L`rosI`
+qW\%\rTX[hl2^,7!9sRLlLb/Wl2q%Ol2]K%!!)u_!!)u_!!)$D"p!rR!:&hLq!%t^l2^)LhWb4D
+l2^)Ljm)O>Ja3'r"p!rR!:&hLrTa(VJa.gOMX(3AJ,~>
+J`c4ZrrC@,rr;QO!WV<]rrM9^J`c"T#63iJs5rJDrT47_k5XTDn`BiOroX4[!9X:\roX7\roO4\
+qW7eXrT4Fdk5XT+s5s@Dk4ScSjobYGk5X)r!<<#[!<<#[!<;'@#63iJs5rJDpuV_Zk5XTDhW=t@
+k5XTDjlZ::J`cdj#63iJs5rJDrT<hRJ`_OGMWXp=J,~>
+JaVdjrrCC5"9@iimJunI!!*#drVuue!6FR.!<)<c!<)<c!6+@+!<)<c!<)<c!:]CV!<2Bd!<2Bd
+!<)?b!:T=a!:K7Tmd:)CmJu\C!9*AF!;u6f!:BjT!:&tP!<)<c!<)<c!7(!8!:BjT!;>j[!8d,J
+!:K7Tmd:)7mf!3;me6&K!<2Bd!<2Bd!;c-_!.jQhmY:00!.Y~>
+Ja2LbrrCC1"9@]el2^JA!!*#`rVuua!6FF*!<)0_!<)0_!6+4'!<)0_!<)0_!:]7R!<26`!<26`
+!<)3^!:T1]!:&hLlKSB7l2^,7!9*5B!;u*b!9sRL!:&hL!<)0_!<)0_!7'j4!9sRL!;>^W!8cuF
+!:&hLlKSB/lM^d7lLsKC!<26`!<26`!;c![!.jEdlA"U(!.Y~>
+J`c4ZrrCC-"TRWak5Y)9!<<&\rr3#]s2a=&s8D'[s8D'[s2F+#s8D'[s8D'[s7#.Ns8M-\s8M-\
+s8D*Zs6o(Ys5rJDk2u^+k5XT+s5E,>s8;!^s5s@Ds6A_Hs8D'[s8D'[s3Ba0s5s@Ds7YUSs5)lB
+s5rJDk2u^'k5PC3k4[p;s8M-\s8M-\s8(mWs+0<`k(`$u!.Y~>
+JaVdjrrCF6"p")Z!:K7Tp?qSRr9aObrU'XcrU'Xcp$Me[rU'XcrU'XcnEp8VrpBadrpBad_sRL)
+rpBadrpBadnEp8VrU'XcrU0@Zo'QhbmJuYTmJuYTmJu56"9@iimK!1QrW)0M!!*#d!!*#d!!(72
+rW)c^p&O.@!!*#d!!*#d!!)*J"9@iimJqh+q!J+^rU'XcrU'Xcr9a[fmJuYTJaS*WL[P0BJ,~>
+Ja2LbrrCF2"p!rR!:&hLp?M;Nr9=7^rTX@_rTX@_p$)MWrTX@_rTX@_nEKuRrosI`rosI`_s.4%
+rosI`rosI`nEKuRrTX@_rTa(Vo'-P^l2^)Ll2^)Ll2]f."9@]el2^bIrW)0I!!*#`!!*#`!!(7.
+rW)cZp&O.<!!*#`!!*#`!!)*F"9@]el2ZD#q!%hZrTX@_rTX@_r9=Cbl2^)LJa.gOL[+m>J,~>
+J`c4ZrrCF.#63iJs5rJDp?)&Jr8n"ZrT4+[rT4+[p#Z8SrT4+[rT4+[nE'`NroO4\roO4\_r^t!
+roO4\roO4\nE'`NrT4+[rT<hRo&^;Zk5XTDk5XTDk5XE&"TRWak5YAArr;3E!<<&\!<<&\!<::*
+rr;fVpAa18!<<&\!<<&\!<;-B"TRWak5U"ppuVSVrT4+[rT4+[r8n.^k5XTDJ`_OGLZ\U:J,~>
+JaVdjrrCI7!!*#d!!*#d!!)TXrW)]\!!*#d!!*#d!!)WY!!*#d!!*#d!!)HT"p")Z!:K7T_<qL-
+md:)CmJueF!!)uc!!)uc!!)rbrW)?RrW)rcrW(pF"T[uY!:K:J!:0%W!:K7Tmd:)$me-YVmf!4E
+mJm7cmJm7cmJm7LmKN[ZmJu\C!.jS'mKN[ZmJu\C!.jQhmYL<2!.Y~>
+Ja2LbrrCI3!!*#`!!*#`!!)TTrW)]X!!*#`!!*#`!!)WU!!*#`!!*#`!!)HP"p!rR!:&hL_<M4)
+lKSB7l2^A>!!)u_!!)u_!!)r^rW)?NrW)r_rW(pB"T[iQ!:&kB!:/nS!:&hLlKSAqlLk5RlM^eA
+l2Uh_l2Uh_l2UhHl377Rl2^,7!.jG#l377Rl2^,7!.jEdlA4a*!.Y~>
+J`c4ZrrCI/!<<&\!<<&\!<;WPrr;`T!<<&\!<<&\!<;ZQ!<<&\!<<&\!<;KL#63iJs5rJD_<(t%
+k2u^+k5Xu6!<<#[!<<#[!<;uZrr;BJrr;u[rr:s>"om`Is5rJ:s6JeOs5rJDk2u]ik4\iNk5PD=
+joGG[joGG[joGGDjp(kJk5XT+s+0=tjp(kJk5XT+s+0<`k(r1"!.Y~>
+JaVdjrrCL8!!)uc!!)uc!!)ZZ"9@iimK!"L"p")Z!:K7Tna6S]md:)CmJuVA"9@iimJuVA!!)uc
+!!)uc!!(pE"9@iimJu_D!!*#d!!*#d!!)rb"9@iimJuhGn,W.L!!)uc!!)uc!!)uc!!*#d!!*#d
+!!*#drW)*K"9@iimJtDtrW)Z["9@iimJsof!!*#d!!*#d!!%T<m-XiRrpBadrpBadJaS*WM=1BD
+J,~>
+Ja2LbrrCL4!!)u_!!)u_!!)ZV"9@]el2^SD"p!rR!:&hLn`g;YlKSB7l2^29"9@]el2^29!!)u_
+!!)u_!!(pA"9@]el2^;<!!*#`!!*#`!!)r^"9@]el2^D?n,W.H!!)u_!!)u_!!)u_!!*#`!!*#`
+!!*#`rW)*G"9@]el2\ulrW)ZW"9@]el2\K^!!*#`!!*#`!!%T8m-4QNrosI`rosI`Ja.gOM<b*@
+J,~>
+J`c4ZrrCL0!<<#[!<<#[!<;]R"TRWak5Y2<#63iJs5rJDn`C&Uk2u^+k5Xf1"TRWak5Xf1!<<#[
+!<<#[!<:s="TRWak5Xo4!<<&\!<<&\!<;uZ"TRWak5Y#7nGi1D!<<#[!<<#[!<<#[!<<&\!<<&\
+!<<&\rr;-C"TRWak5WTdrr;]S"TRWak5W*V!<<&\!<<&\!<7W4m,e<JroO4\roO4\J`_OGM<=g<
+J,~>
+JaVdjrrB\!"p")Z!:K7Tp[/.amJuYTn*U;YmJuYTlL+WOlL"WPrpBadrpBadh<t7BmHt/Ymd:)C
+mK!1Q"p")Z!:K7Tn*^/TrpKacnEp8VrpBadrpBadrU'XcrU'XcrU'jimJuYTmJuD;rW(+/"9@ii
+mK!%M"p")Z!:K7T^?tt$rU'XcrU'XcJaW:#!!)uc!!*#drrE&d!!)uc!!%T<JaSE`rr@Q~>
+Ja2LbrrB[r"p!rR!:&hLpZ_k]l2^)Ln*1#Ul2^)LlK\?KlKS?LrosI`rosI`h<Ot>mHOlUlKSB7
+l2^bI"p!rR!:&hLn*9lPrp'I_nEKuRrosI`rosI`rTX@_rTX@_rTXRel2^)Ll2]u3rW(++"9@]e
+l2^VE"p!rR!:&hL^?P[urTX@_rTX@_Ja3!p!!)u_!!*#`rrE&`!!)u_!!%T8Ja/-Xrr@Q~>
+J`c4ZrrB[n#63iJs5rJDpZ;VYk5XTDn)acQk5XTDlK8*GlK/*HroO4\roO4\h<+_:mH+WQk2u^+
+k5YAA#63iJs5rJDn)jWLroX4[nE'`NroO4\roO4\rT4+[rT4+[rT4=ak5XTDk5XT+rr:.'"TRWa
+k5Y5=#63iJs5rJD^?,FqrT4+[rT4+[J`c^h!<<#[!<<&\s8W)\!<<#[!<7W4J`_jPrr@Q~>
+JaVdjrrB_"!!*#d!!*#d!!)c]rW)?RrW)?Rp&OLJ"p")Z!:K7Ti9p:=nEpDZmJuYTr9aObrpBad
+rpBadna6_amJuYTmJuYTmJubE"p")Z!:K7Tna6S]md:)CmJuS@p&NG,"p")Z!:K7TqX+=`rpBad
+rpBadJaTN*!!*#d!!*#d!!%T<JaS*W!q$$gJ,~>
+Ja2LbrrB^s!!*#`!!*#`!!)cYrW)?NrW)?Np&OLF"p!rR!:&hLi9L"9nEL,Vl2^)Lr9=7^rosI`
+rosI`n`gG]l2^)Ll2^)Ll2^>="p!rR!:&hLn`g;YlKSB7l2^/8p&NG("p!rR!:&hLqW\%\rosI`
+rosI`Ja06"!!*#`!!*#`!!%T8Ja.gO!pTacJ,~>
+J`c4ZrrB^o!<<&\!<<&\!<;fUrr;BJrr;BJpAaOB#63iJs5rJDi9'b5nE'lRk5XTDr8n"ZroO4\
+roO4\n`C2Yk5XTDk5XTDk5Xr5#63iJs5rJDn`C&Uk2u^+k5Xc0pA`J$#63iJs5rJDqW7eXroO4\
+roO4\J``ro!<<&\!<<&\!<7W4J`_OG!p0I_J,~>
+JaVdjrrBb#!!)uc!!)uc!!)rbp&OdRp&OLJrW)rc!!)uc!!)uc!!)`\"9@iimJu#0rW)9PrW)la
+!!)uc!!)uc!!)WY$io_`!:K7Tmd:)CmJubE"9@iimJueF!!*#d!!*#d!!)6NrW)Z[!!)uc!!)uc
+!!)$H!!*#d!!*#d!!)rb!!)uc!!)uc!!%T<WU9rjmd:)CmJqh+JaS*Ws6fmeJ,~>
+Ja2LbrrBat!!)u_!!)u_!!)r^p&OdNp&OLFrW)r_!!)u_!!)u_!!)`X"9@]el2]T(rW)9LrW)l]
+!!)u_!!)u_!!)WU$ioSX!:&hLlKSB7l2^>="9@]el2^A>!!*#`!!*#`!!)6JrW)ZW!!)u_!!)u_
+!!)$D!!*#`!!*#`!!)r^!!)u_!!)u_!!%T8WTjZflKSB7l2ZD#Ja.gOs6BUaJ,~>
+J`c4ZrrBap!<<#[!<<#[!<;uZpAagJpAaOBrr;u[!<<#[!<<#[!<;cT"TRWak5X2urr;<Hrr;oY
+!<<#[!<<#[!<;ZQ%0,JPs5rJDk2u^+k5Xr5"TRWak5Xu6!<<&\!<<&\!<;9Frr;]S!<<#[!<<#[
+!<;'@!<<&\!<<&\!<;uZ!<<#[!<<#[!<7W4WTFEbk2u^+k5U"pJ`_OGs5s=]J,~>
+JaVdjrrB%drW)?RrW)6O"9@iimK!7S!!*#d!!*#d!!)ZZrW(^@"9@iimJubEp&P-\!!)?Q!!*#d
+"p"&kmJuYTrpBadnF$8Una6AWrU'XcrU'XclL"cTmJuYTp?hn\rpBadrpBadipHdHrU'XcrU'Xc
+JaSro"9@iimJqh+JaS*WrpKddJ,~>
+Ja2LbrrB%`rW)?NrW)6K"9@]el2^hK!!*#`!!*#`!!)ZVrW(^<"9@]el2^>=p&P-X!!)?M!!*#`
+"p!ogl2^)LrosI`nETuQn`g)SrTX@_rTX@_lKSKPl2^)Lp?DVXrosI`rosI`ip$LDrTX@_rTX@_
+Ja/Zg"9@]el2ZD#Ja.gOrp'L`J,~>
+J`c4ZrrB%\rr;BJrr;9G"TRWak5YGC!<<&\!<<&\!<;]Rrr:a8"TRWak5Xr5pAb0T!<;BI!<<&\
+#63ick5XTDroO4\nE0`Mn`BiOrT4+[rT4+[lK/6Lk5XTDp>uATroO4\roO4\ioU7@rT4+[rT4+[
+J``B_"TRWak5U"pJ`_OGroX4\J,~>
+JaVdjrrB(e"9@iimJu_D"9@iimJuVA"p")Z!:K7TrpBsjmd:)CmK!"Lp&O%="p")Z!:K7TmI'rR
+!U]semJm7QmJm7cmf*7pmJuYT!:BjTmJuYTp[7_TeF!M@md:)CmK!.P!!)uc#QX;\!:BgemK!4R
+!!%T<qX+=`rU'XcrU'XcL@5$@JaS*WJaWL)rr@Q~>
+Ja2LbrrB(a"9@]el2^;<"9@]el2^29"p!rR!:&hLros[flKSB7l2^SDp&O%9"p!rR!:&hLmHXZN
+!U9[al2UhMl2Uh_lMghll2^)L!9sRLl2^)LpZhGPeER5<lKSB7l2^_H!!)u_#QX/T!9sOal2^eJ
+!!%T8qW\%\rTX@_rTX@_L?ea<Ja.gOJa34!rr@Q~>
+J`c4ZrrB(]"TRWak5Xo4"TRWak5Xf1#63iJs5rJDroOFbk2u^+k5Y2<pAa(5#63iJs5rJDmH4EJ
+!TsF]joGGIjoGG[k5YGhk5XTDs5s@Dk5XTDpZD2LeE-u8k2u^+k5Y>@!<<#[#lj&Ls5s@]k5YDB
+!<7W4qW7eXrT4+[rT4+[L?AL8J`_OGJ`cpnrr@Q~>
+JaVdjrrB+f"p")Z!:K7Tna6S]md:)CmJu\C!!*#d!!*#d!!*#d"9@iimJuhGrW)ob!!)uc!!)uc
+!!)BR!!*#d!!*#d!!)KU#QX8mmJm7TmJutK!!)uc!!)uc!!)c]!!*#d!!*#d!!)TXrW(@6!!*#d
+!!*#d!!)oa!!*#drr<&erW)ud!!*#d!!'Uu!!)uc!!)uc!!(10!!*#d!!*#d!!)NV!!)uc!!)uc
+!!&k`p&K[3JaS*Wrr@Q~>
+Ja2LbrrB+b"p!rR!:&hLn`g;YlKSB7l2^8;!!*#`!!*#`!!*#`"9@]el2^D?rW)o^!!)u_!!)u_
+!!)BN!!*#`!!*#`!!)KQ#QX,il2UhLl2^PC!!)u_!!)u_!!)cY!!*#`!!*#`!!)TTrW(@2!!*#`
+!!*#`!!)o]!!*#`rr<&arW)u`!!*#`!!'Uq!!)u_!!)u_!!(1,!!*#`!!*#`!!)NR!!)u_!!)u_
+!!&k\p&K[/Ja.gOrr@Q~>
+J`c4ZrrB+^#63iJs5rJDn`C&Uk2u^+k5Xl3!<<&\!<<&\!<<&\"TRWak5Y#7rr;rZ!<<#[!<<#[
+!<;EJ!<<&\!<<&\!<;NM#lj&ek5YJDk5Y/;!<<#[!<<#[!<;fU!<<&\!<<&\!<;WPrr:C.!<<&\
+!<<&\!<;rY!<<&\s8N)]rr<#\!<<&\!<9Xm!<<#[!<<#[!<:4(!<<&\!<<&\!<;QN!<<#[!<<#[
+!<8nXpA]^+J`_OGrr@Q~>
+JaVdjrrB.g!!*#d!!*#d!!)WY!!*#d!!*#d!!)NV!!)uc!!)uc!!*#drW)NW"9@iimK!4R!!*#d
+!!*#d!!)BR!!)uc!!)uc!!)QW#QX;\!!)EemJunI!!*#d!!*#d!!)]["p")Z!:K7To'QV\mJuYT
+e*[29rU'XcrU'XcqsFRemd:)Cr;clc!s%cW!4_Fs!<2Bd!<2Bd!9*>G!<)?c!<2Ed!<2Ed!<2Bd
+!<)<i!:K7Tmd:)CmJm7dmJm7dmJm6[mf!3;mXaeWmeuSR!.Y~>
+Ja2LbrrB.c!!*#`!!*#`!!)WU!!*#`!!*#`!!)NR!!)u_!!)u_!!*#`rW)NS"9@]el2^eJ!!*#`
+!!*#`!!)BN!!)u_!!)u_!!)QS#QX/T!!)9al2^JA!!*#`!!*#`!!)]W"p!rR!:&hLo'->Xl2^)L
+e*6o5rTX@_rTX@_qs":alKSB7r;cl_!s%WO!4_:o!<26`!<26`!9*2C!<)3_!<29`!<29`!<26`
+!<)0e!:&hLlKSB;l2Uh`l2Uh`l2UgWlM^d7l@J5OlM^#J!.Y~>
+J`c4ZrrB._!<<&\!<<&\!<;ZQ!<<&\!<<&\!<;QN!<<#[!<<#[!<<&\rr;QO"TRWak5YDB!<<&\
+!<<&\!<;EJ!<<#[!<<#[!<;TO#lj&Ls8V6]k5Y)9!<<&\!<<&\!<;`S#63iJs5rJDo&^)Tk5XTD
+e)gZ1rT4+[rT4+[qrS%]k2u^+rVuo["97NGs1%1ks8M-\s8M-\s5E)?s8D*[s8M0\s8M0\s8M-\
+s8D'as5rJDk2u^3joGG\joGG\joGFSk5PC3k(2ZGk5FHB!.Y~>
+JaVdjrrB1h!!)uc!!)uc!!)][!!)uc!!)uc!!)3Mp&OjT"p")Z!:K7TrU'jimd:)CmJtZ&!!*#d
+!<DQe!:oO^!:K7Tmd:)HmK<OX!:BjXmKN[ZmJu\C!5e0t!!2Kf[dF>"md:)C!!*#d!!)uc!!)][
+!!)ucrrE)erW!>o!!)Ee!:BjT!:BjdmJm7dmJm7amKEUY!:BgerU0[crU'XcrU'XcrU'jimd:)C
+mJrpJ"9@iimJqh+JaS*WrpKddJ,~>
+Ja2LbrrB1d!!)u_!!)u_!!)]W!!)u_!!)u_!!)3Ip&OjP"p!rR!:&hLrTXRelKSB7l2]5s!!*#`
+!<DEa!:oCZ!:&hLlKSB@l3%+P!9sRTl377Rl2^,7!5e$p!!2?b[d"%slKSB7!!*#`!!)u_!!)]W
+!!)u_rrE)arW!>k!!)9a!9sRL!9sR`l2Uh`l2Uh]l3.1Q!9sOarTaC_rTX@_rTX@_rTXRelKSB7
+l2[LB"9@]el2ZD#Ja.gOrp'L`J,~>
+J`c4ZrrB1`!<<#[!<<#[!<;`S!<<#[!<<#[!<;6EpAamL#63iJs5rJDrT4=ak2u^+k5Wik!<<&\
+!WV<]s75:Vs5rJDk2u^8jok_Hs5s@Pjp(kJk5XT+s2*plrrM9^[cReok2u^+s8W)\!<<#[!<;`S
+!<<#[s8W,]rr3Ags8V6]s5s@Ds5s@\joGG\joGGYjoteIs5s@]rT=.[rT4+[rT4+[rT4=ak2u^+
+k5V+:"TRWak5U"pJ`_OGroX4\J,~>
+JaVdjrr@W<p$Me[rU'^emdC&So^2\ZrpBadrpBadrU'dgmJuYTdI%&9mdBcKp$Mq_mJuYTna?AV
+o'QJXrpBadrpBad_X@:$s6fjdbO,?1rU'XcrU'Xcp$Mt`mJuYT!<2Bd!<2Bd!;#UY!<2Bg!:BjT
+rW)udrr<Ps!!)Eemd:&TmJm7TmK!(NrVuue!<2Bg!:K7TrpC*nmd:&Tmd:&TmdC&S"7?0W!2Alc
+!:K7Tmd:(+mXaeWmf2_T!.Y~>
+Ja2Lbrr@W8p$)MWrTXFalK\?Ko]cDVrosI`rosI`rTXLcl2^)LdHUc5lK\'Cp$)Y[l2^)Ln`p)R
+o'-2TrosI`rosI`_Wq!us6BR`bN]'-rTX@_rTX@_p$)\\l2^)L!<26`!<26`!;#IU!<26c!9sRL
+rW)u`rr<Po!!)9alKS?Ll2UhLl2^YFrVuua!<26c!:&hLrosgjlKS?LlKS?LlK\?K"6omO!2A`_
+!:&hLlKSA#l@J5OlMp/L!.Y~>
+J`c4Zrr@W4p#Z8SrT41]k2u[Co]?/RroO4\roO4\rT47_k5XTDdH1N1k2uC;p#ZDWk5XTDn`KiN
+o&]rProO4\roO4\_WLaqs5s=\bN8g)rT4+[rT4+[p#ZGXk5XTDs8M-\s8M-\s7>@Qs8M-_s5s@D
+rr<#\s8NSks8V6]k2u^Dk5YJDk5Y8>rr3#]s8M-_s5rJDroORfk2u^Dk2u^Dk2u[C"6TXGs.\W[
+s5rJDk2u\pk(2ZGk5XTD!.Y~>
+JaVdjrrB(e!!)uc#6=/lmd:)C!<)<c!8[&C!<2Bj!:BjT!:Bj\mJm7cmJm7cmJm7cmf!4/mem+d
+mK!4R!!)c]rW)TYp&P!X!!*#drrE&drr<8k!:BjTmK!4R!!)3M!!)uc!!)uc!!)ZZmJukH!!)uc%
+fl%c!:BjTmJuYTmd:)C!<)?c!<2Ed!<2Ec!<;Ke!<2Bd!;#XX!<;Hk!:K7Tmd:)FmMc/omJu\C!
+:K7Tmd:&TmJuYTmJuYTmJuYTmK!1Qo`4sY#6=2[!:K7T!<2Bd!<2Ec!!2KfXR6&grU'XcrU'Xcr
+pBadrpBadJaS*WJaNU-!!%N~>
+Ja2LbrrB(a!!)u_#6=#hlKSB7!<)0_!8Zo?!<26f!9sRL!9sRXl2Uh_l2Uh_l2Uh_lM^e+lMU\`
+l2^eJ!!)cYrW)TUp&P!T!!*#`rrE&`rr<8g!9sRLl2^eJ!!)3I!!)u_!!)u_!!)ZVmJukD!!)u_%
+fkn[!9sRLl2^)LlKSB7!<)3_!<29`!<29_!<;?a!<26`!;#LT!<;<g!:&hLlKSB>l5K`gl2^,7!
+:&hLlKS?Ll2^)Ll2^)Ll2^)Ll2^bIo`4sU#6=&S!:&hL!<26`!<29_!!2?bXQfccrTX@_rTX@_r
+osI`rosI`Ja.gOJa*=%!!%N~>
+J`c4ZrrB(]!<<#[#QNrdk2u^+s8D'[s4uf;s8M-bs5s@Ds5s@TjoGG[joGG[joGG[k5PD'k5G;\
+k5YDB!<;fUrr;WQpAb$P!<<&\s8W)\s8N;cs5s@Dk5YDB!<;6E!<<#[!<<#[!<;]Rmf2n@!<<#[
+&-(eSs5s@Dk5XTDk2u^+s8D*[s8M0\s8M0[s8V6]s8M-\s7>CPs8V3cs5rJDk2u^6jr=?_k5XT+
+s5rJDk2u^Dk5XTDk5XTDk5XTDk5YAAp&G!Q#QNrKs5rJDs8M-\s8M0[rrM9^XQBN_rT4+[rT4+[
+roO4\roO4\J`_OGJ`[$r!!%N~>
+JaVdjrrB%d!!*#d#6=2[!!)HT!<2Bd!8HoN!:K7T!:Bgemd:)CmK!4R!!)uc!!)i_p&ND+rW!#f
+!!*#d!!)l`p&P$Y!!)uc!W_ZVrW)ud&HM5!mJm7T!:Bgemd:&Tmd:)Smf*:emKWa[!:BjTmK!.P
+!!)uc!!)uc!!)rb$NTV_!:BjT!:K7T!:T@T!!DWhmdC#Rmd:&TrpBadrpBadrpC!kmd:&Tmd:)S
+mK3IWmK!7S!!*#d#lsD]!!)Eemd:)Kme-V_mJuYTn*UD\mJuYTmJu\R!!)Hd!<2Ec!!)Hd!;Gp\
+!!DWhmK!.P#lsAnmJu\C!:K:K!3PYh!<2Bd!<2Bd!<)<c!<)<c!.jQhmXag+!.Y~>
+Ja2LbrrB%`!!*#`#6=&S!!)<L!<26`!8HcJ!:&hL!9sOalKSB7l2^eJ!!)u_!!)i[p&ND'rW!#b
+!!*#`!!)l\p&P$U!!)u_!W_NNrW)u`&HM(rl2UhL!9sOalKS?LlKSBKlMgkal3@=S!9sRLl2^_H
+!!)u_!!)u_!!)r^$NTJW!9sRL!:&hL!:T4P!!DKdlK\<JmcjcProsI`rosI`ros^glKS?LlKSBK
+l2q%Ol2^hK!!*#`#ls8U!!)9alKSBClLk2[l2^)Ln*1,Xl2^)Ll2^,J!!)<`!<29_!!)<`!;GdX
+!!DKdl2^_H#ls5jl2^,7!:&kC!3PMd!<26`!<26`!<)0_!<)0_!.jEdl@J7#!.Y~>
+J`c4ZrrB%\!<<&\#QNrKs8V6Ds8M-\s4cZFs5rJDs5s@]k2u^+k5YDB!<<#[!<;lWpA`G#rr3&^
+s8W)\!<;oXpAb'Q!<<#[!rqEFrr<#\&c_"nk5YJDs5s@]k2u^Dk2u^Ck5YJ]jp1qKs5s@Dk5Y>@
+!<<#[!<<#[!<;uZ$ifAOs5s@Ds5rJDs6o+Lrr_E`k2uXBmcFNLroO4\roO4\roOIck2u^Dk2u^C
+jobYGk5YGC!<<&\$30/Ms8V6]k2u^;k4\fWk5XTDn)alTk5XTDk5XTBrrD3\s8M0[rrD3\s7b[T
+rr_E`k5Y>@$30/fk5XT+s5rJ;s/kD`s8M-\s8M-\s8D'[s8D'[s+0<`k(2[p!.Y~>
+JaVdjrrCL8!!)uc!!)uc!!)$H%05ha!:K7T!:K7Tmd:)4mJm7cmf*7jmJuYTmK!7S!s%cW!<2Bd
+!<2Bd!;,^Y!6ad:!:K7Tmd:)CmJuqJrW)]\!!*#d(]`t(mJuYTmd:&Tmd:&Tmd:&Tmd:)CmK!1Q
+rr<;l!:Bgemd:)NmJm7dmJm7dmJm7`mKim]mJm7T!:Bgen*^/T"RZ6imdC&S!U]sUmM,`imJu\C
+!:BjTmJu\C!!)HT!:K7TrU(0rmd:&TmJm7TmJm7T!:BjWmf!4bmf!4Rmf!4cmcjfMmK3IW!:Kgd
+q<n4^rU'ghmJuYTmf!3bmK`g\mJu\C!:BjcmJm6<mXaeWmeuSR!.Y~>
+Ja2LbrrCL4!!)u_!!)u_!!)$D%05\Y!:&hL!:&hLlKSB,l2Uh_lMghfl2^)Ll2^hK!s%WO!<26`
+!<26`!;,RU!6aX6!:&hLlKSB7l2^MBrW)]X!!*#`(]`h$l2^)LlKS?LlKS?LlKS?LlKSB7l2^bI
+rr<;h!9sOalKSBFl2Uh`l2Uh`l2Uh\l3RIUl2UhL!9sOan*9lP"R5selK\?K!U9[Ql4j<al2^,7
+!9sRLl2^,7!!)<L!:&hLrTXmnlKS?Ll2UhLl2UhL!9sRSlM^e^lM^eNlM^e_lKSBIl2q%O!:'O`
+q<IqZrTXOdl2^)LlM^d^l3ICTl2^,7!9sR_l2Ug8l@J5OlM^#J!.Y~>
+J`c4ZrrCL0!<<#[!<<#[!<;'@%KGSQs5rJDs5rJDk2u^$joGG[k5YGbk5XTDk5YGC"97NGs8M-\
+s8M-\s7GIQs3'O2s5rJDk2u^+k5Y,:rr;`T!<<&\)#rauk5XTDk2u^Dk2u^Dk2u^Dk2u^+k5YAA
+s8N>ds5s@]k2u^>joGG\joGG\joGGXjpD(Mk5YJDs5s@]n)jWL"Qoaak2u[C!TsFMjq[pYk5XT+
+s5s@Dk5XT+s8V6Ds5rJDrT4Xjk2u^Dk5YJDk5YJDs5s@Ok5PDZk5PDJk5PD[k3E!EjobYGs5s=\
+q<%\VrT4:`k5XTDk5PCZjp;"Lk5XT+s5s@[joGF4k(2ZGk5FHB!.Y~>
+JaVdjrrCI7!!*#d!!*#d!!(sF$NTSpmJu\C!:BjT!8[&C!<2Be!:Kgds6]jerU'slmd:)CmJu\C
+!;,[^!:BjT!;Ps^!<)<c!<)<c!;Psj!:BjTmJuYTmd:)C!;c*i!:K7TmJuYT!:Kgdp$Mq_mJuYT
+p[/armd:&TmJm7TmJu\C!:K7T!:Bgemf!1hmJu\C!<)?`!<;Ke!<)<c!<)<i!:K7Tmd:)MmK<OX
+mJu\S!:T@U!"A8qmd:)C!:K7Tmd:)CmK<OX!:BjdmL'$_!:BjTmJuYTmK!.P$39JomJuYTmJu\C
+rW)KV!s%`hme-YRmd'oRmf!1dmf!4^mcjcPmf!1dmf!1emJs3R!<DQe!<;He!<2Bd!.jQhmXag(
+mf*9;~>
+Ja2LbrrCI3!!*#`!!*#`!!(sB$NTGll2^,7!9sRL!8Zo?!<26a!:'O`s69RarTX[hlKSB7l2^,7
+!;,OZ!9sRL!;PgZ!<)0_!<)0_!;Pgf!9sRLl2^)LlKSB7!;bse!:&hLl2^)L!:'O`p$)Y[l2^)L
+pZ`InlKS?Ll2UhLl2^,7!:&hL!9sOalM^bdl2^,7!<)3\!<;?a!<)0_!<)0e!:&hLlKSBEl3%+P
+l2^,K!:T4Q!"A,mlKSB7!:&hLlKSB;l3%+P!9sR`l3dUW!9sRLl2^)Ll2^_H$39>kl2^)Ll2^,7
+rW)KR!s%TdlLk5NlKeKNlM^b`lM^eZlKS?LlM^b`lM^bal2[dJ!<DEa!<;<a!<26`!.jEdl@J6u
+lMgj7~>
+J`c4ZrrCI/!<<&\!<<&\!<;!>$ifAhk5XT+s5s@Ds4uf;s8M-]s5s=\s5j=]rT4Fdk2u^+k5XT+
+s7GFVs5s@Ds7k^Vs8D'[s8D'[s7k^bs5s@Dk5XTDk2u^+s8(jas5rJDk5XTDs5s=\p#ZDWk5XTD
+pZ<4jk2u^Dk5YJDk5XT+s5rJDs5s@]k5PA`k5XT+s8D*Xs8V6]s8D'[s8D'as5rJDk2u^=jok_H
+k5XTCs6o+Mrs\&ik2u^+s5rJDk2u^3jok_Hs5s@\jpV4Os5s@Dk5XTDk5Y>@$NK8gk5XTDk5XT+
+rr;NN"97N`k4\iJk3W*Jk5PA\k5PDVk3DsHk5PA\k5PA]k5VCB!WV<]s8V3]s8M-\s+0<`k(2[m
+k5PF3~>
+JaVdjrrCF6"p")Z!:K7ThX:@CrU0Xbg[=\6s6fjd!:Kab!q$$gqsFFarpKdd"RZ9XmK!7S!!)uc
+rrE&d!!*#d!!)`\$39JomJuYTmJuYTq!S.^s6]shmJu\R!;>gb!:K7Tmd:)LmKN[Z!:BjT!<2Be
+!:Kdc"RZ9X!:KdcrpBadrpBdemem+fmJuYTrpBadqsFRemJuYTp?hq]mem.SmJm7dmJm7dmJm7d
+mJm7dmJm7Tmf!4amf!4bmf!4^mf!1dmdpMYmJm7cmf*7mmJuYT!:Bgemem.bmJm7Wmf!4dmeQnm
+mJuYTmJuYTmJuYTmK!.P"T[rjmJu\S!<2Bd!<)?b!!)HX!3,Db!<;Hh!:K7TJaS*WJaWF'rr@Q~>
+Ja2LbrrCF2"p!rR!:&hLhWk(?rTa@^gZnD2s6BR`!:'I^!pTacqs".]rp'L`"R6!Pl2^hK!!)u_
+rrE&`!!*#`!!)`X$39>kl2^)Ll2^)Lq!.kZs69[dl2^,J!;>[^!:&hLlKSBDl377R!9sRL!<26a
+!:'L_"R6!P!:'L_rosI`rosLalMU\bl2^)LrosI`qs":al2^)Lp?DYYlMU_Ol2Uh`l2Uh`l2Uh`
+l2Uh`l2UhPlM^e]lM^e^lM^eZlM^b`lLY)Ul2Uh_lMghil2^)L!9sOalMU_^l2UhSlM^e`lM:Ji
+l2^)Ll2^)Ll2^)Ll2^_H"T[ffl2^,K!<26`!<)3^!!)<T!3,8^!<;<d!:&hLJa.gOJa3-trr@Q~>
+J`c4ZrrCF.#63iJs5rJDhWFh;rT=+ZgZJ/.s5s=\!9X4Z!p9O_qrRnYroX7\"QoaHk5YGC!<<#[
+s8W)\!<<&\!<;cT$NK8gk5XTDk5XTDpu_VVs5jF`k5XTBs7YRZs5rJDk2u^<jp(kJs5s@Ds8M-]
+s5s:["QoaHs5s:[roO4\roO7]k5G;^k5XTDroO4\qrS%]k5XTDp>uDUk5G>KjoGG\joGG\joGG\
+joGG\joGGLk5PDYk5PDZk5PDVk5PA\k4J]QjoGG[k5YGek5XTDs5s@]k5G>ZjoGGOk5PD\k5,)e
+k5XTDk5XTDk5XTDk5Y>@"om`bk5XTCs8M-\s8D*ZrrD3Ps/G/Zs8V3`s5rJDJ`_OGJ`cjlrr@Q~>
+JaVdjrrD!F!!)uc!!)ucrrE#crr<2i!:BgerU'Xcq!JRkmd:)C!:K7TmJu\C!<2ET!<;He!<)<c
+!<)<c!<)<c!<)<c!<)<c!;c*c!:BjTrW)ud!<DQe!!)Hd!!)Ha!<;He!;u6l!:BjT!:BjT!:Bjd
+mJm7dmK`g\!:Bgemd:)ImK`g\!!)Ee!:Bj\mK*CVme-YWmJm7dmJm7dmJm7]mf!4dmJm7cmeZta
+mca`OmJm7_mf!4[me-YQmJm7cmK`g\mJuYTmd:)RmJm7Yma_C6mJm7dmK`g\!:BjT!:K:S!!Vcj
+mJuYTna6DXmf!1fmJu\N!"82pmd:&TmJm7TmK!4R!!*#drW!,i!:BjT!<)<g!:BjT!<)?b!!)Hd
+!<2Bd!<)<c!4)%d!!2KfJaS*WJaWC&rr@Q~>
+Ja2LbrrD!B!!)u_!!)u_rrE#_rr<2e!9sOarTX@_q!&:glKSB7!:&hLl2^,7!<29P!<;<a!<)0_
+!<)0_!<)0_!<)0_!<)0_!;bs_!9sRLrW)u`!<DEa!!)<`!!)<]!<;<a!;u*h!9sRL!9sRL!9sR`
+l2Uh`l3ICT!9sOalKSBAl3ICT!!)9a!9sRXl2gtNlLk5Sl2Uh`l2Uh`l2UhYlM^e`l2Uh_lMCP]
+lKJ<Kl2Uh[lM^eWlLk5Ml2Uh_l3ICTl2^)LlKSBJl2UhUlIGt2l2Uh`l3ICT!9sRL!:&kK!!VWf
+l2^)Ln`g,TlM^bbl2^,F!"8&llKS?Ll2UhLl2^eJ!!*#`rW!,e!9sRL!<)0c!9sRL!<)3^!!)<`
+!<26`!<)0_!4(n`!!2?bJa.gOJa3*srr@Q~>
+J`c4ZrrD!>!<<#[!<<#[s8W&[s8N5as5s@]rT4+[puW%ck2u^+s5rJDk5XT+s8M0Ls8V3]s8D'[
+s8D'[s8D'[s8D'[s8D'[s8(j[s5s@Drr<#\!WV<]rrD3\rrD3Ys8V3]s8;!ds5s@Ds5s@Ds5s@\
+joGG\jp;"Ls5s@]k2u^9jp;"Ls8V6]s5s@TjoYSFk4\iOjoGG\joGG\joGGUk5PD\joGG[k55/Y
+k3;pGjoGGWk5PDSk4\iIjoGG[jp;"Lk5XTDk2u^BjoGGQk19S.joGG\jp;"Ls5s@Ds5rJCrrqQb
+k5XTDn`BlPk5PA^k5XT>rsRuhk2u^Dk5YJDk5YDB!<<&\rr3/as5s@Ds8D'_s5s@Ds8D*ZrrD3\
+s8M-\s8D'[s0Ce\rrM9^J`_OGJ`cgkrr@Q~>
+JaVdjrrCsE!!*#d!!*#d!s%cW!<2Be!:Kgd!U]semJm7\mK*CVmf!1imJm7T!!*#d!!)ucrW)ob
+rW)f_!!*#d!!*#d!!)oa!!*#d!!*#d!!)f^rVurdrW!/j!:K7T!:KL[qX+Ofmd:)C!!*#d!!*#d
+$39M^!:K7TmJuYTo'Q\^mJuYTmJunI"T[rjmJu\S!;Gm]!<)<c!<)<c!;u9H!!_ikmJuYTme$SX
+me-YYme-V]mK!7SrrE&drrE&d!!)ZZ!!)uc!!)uc!!)][rW)larW)obrW)rc!!*#dq#LH_"9@ii
+mK!(N$NTV_!!)Eemd:)Cmf!1hmJu\C!:fI[!:K7Tmf!1fmJu\S!"82pmJuYTmJuYTmK!7S!!)i_
+"p")Z!:K7TrU(-qmd:)CmJu\C!:BjT!:Kgds6fmes6]jeXmZ/gs6fjdJaS*WJaW@%rr@Q~>
+Ja2LbrrCsA!!*#`!!*#`!s%WO!<26a!:'O`!U9[al2UhXl2gtNlM^bel2UhL!!*#`!!)u_rW)o^
+rW)f[!!*#`!!*#`!!)o]!!*#`!!*#`!!)fZrVur`rW!/f!:&hL!:'4WqW\7blKSB7!!*#`!!*#`
+$39AV!:&hLl2^)Lo'-DZl2^)Ll2^JA"T[ffl2^,K!;GaY!<)0_!<)0_!;u-D!!_]gl2^)LlLb/T
+lLk5UlLk2Yl2^hKrrE&`rrE&`!!)ZV!!)u_!!)u_!!)]WrW)l]rW)o^rW)r_!!*#`q#LH["9@]e
+l2^YF$NTJW!!)9alKSB7lM^bdl2^,7!:f=W!:&hLlM^bbl2^,K!"8&ll2^)Ll2^)Ll2^hK!!)i[
+"p!rR!:&hLrTXjmlKSB7l2^,7!9sRL!:'O`s6BUas69RaXm5lcs6BR`Ja.gOJa3'rrr@Q~>
+J`c4ZrrCs=!<<&\!<<&\"97NGs8M-]s5s=\!TsF]joGGTjoYSFk5PAak5YJDs8W)\!<<#[rr;rZ
+rr;iW!<<&\!<<&\!<;rY!<<&\!<<&\!<;iVrr2u\rr32bs5rJDs5s"SqW8"^k2u^+s8W)\!<<&\
+$NK8Ns5rJDk5XTDo&^/Vk5XTDk5Y)9"om`bk5XTCs7bXUs8D'[s8D'[s8;$@rs%Wck5XTDk4ScP
+k4\iQk4\fUk5YGCs8W)\s8W)\!<;]R!<<#[!<<#[!<;`Srr;oYrr;rZrr;u[!<<&\q>^KW"TRWa
+k5Y8>$ifAOs8V6]k2u^+k5PA`k5XT+s7,4Ss5rJDk5PA^k5XTCrsRuhk5XTDk5XTDk5YGC!<;lW
+#63iJs5rJDrT4Uik2u^+k5XT+s5s@Ds5s=\s5s@]s5j=]XlfW_s5s=\J`_OGJ`cdjrr@Q~>
+JaVdjrrE#c!!)uc!!)6N"p")Z!:K7TrU0:Xo^3"cmd:)C!!)HT!<2Bd!<)<n!:BjT!:K7TmJuYT
+qX+Ofmd:)CmK!(N"p")Z!:K7TqsO(V!q$'VpAk6]!!)f^"9@iimK!%M"T[rjmJu\S!:]FS!:oRW
+!!VcjmJuYTjR3!Is6]shmJu\O!!)Hc!!)Hd!!)Hd!<2Be!:Kdc!:Kgdp[8"\o^;YX!U]semJm7d
+mJm7dmJm7dmJm7XmJm7dmJm7dmJm7[mK<OX!:BjdmL'$_!:BjTmJuYTmK!7S"9@lX!:Kgd!:Kdc
+s6]shmd:)NmLoTg!:BjT!:BjT!!)EemJuYTmJukH!!*#d!<DQb!!)Hb!<2Ec!<;Ke!<2Bd!;l0l
+!:BjT!:BjT!:K7TrpBadrpKdds6fme$LRlomJm7T!:K7TXmQ2ime-X3mXaeWmeuSR!.Y~>
+Ja2LbrrE#_!!)u_!!)6J"p!rR!:&hLrTa"To]c__lKSB7!!)<L!<26`!<)0j!9sRL!:&hLl2^)L
+qW\7blKSB7l2^YF"p!rR!:&hLqs*eR!pTdNpAk6Y!!)fZ"9@]el2^VE"T[ffl2^,K!:]:O!:oFS
+!!VWfl2^)LjQc^Es69[dl2^,G!!)<_!!)<`!!)<`!<26a!:'L_!:'O`pZh_Xo]lAT!U9[al2Uh`
+l2Uh`l2Uh`l2UhTl2Uh`l2Uh`l2UhWl3%+P!9sR`l3dUW!9sRLl2^)Ll2^hK"9@`P!:'O`!:'L_
+s69[dlKSBFl4X0_!9sRL!9sRL!!)9al2^)Ll2^G@!!*#`!<DE^!!)<^!<29_!<;?a!<26`!;l$h
+!9sRL!9sRL!:&hLrosI`rp'L`s6BUa$L.Tkl2UhL!:&hLXm,oelLk4/l@J5OlM^#J!.Y~>
+J`c4Z!<E/ujoGG[joGGFjp(kJk5XT+s8D*Ps7GF[s5rJDk5YJDk5YGC!<<#[$ifAhk5XT+s5s@D
+s8(j^s5rJDk2u^>jp(kJk5XT+s81sNrrV?_k4eoUjoGGVjok_Hs5s@VjoteIs5s@Drr;KMr;Z?M
+rr3/as5s@Ds5`>As8V3`s5s@DqYpQXrVll[rr2u\rr;u[!WV<\rrD3\s7b[Ts7GIPrrM9^roO4\
+roO4\roO4\roO4\o&]rProO4\roO4\p#ZDWk5XTDroOUgk5XTDk2u^+s5s@\jok_Hk5XTCrrD3[
+s8V3`s5rJDq;r@jk5XTDk5XTDk5YJDs5s@Ds5s@QjoGG\joPMEqu6ZYr;ZcYrr<#\s8W)\!<;rY
+$ifAhk5XTDk5XT+s8M-\s8M0\s8V6]rsIogs5s@]k5XT+s/kDas5s%TJ`_OGJ`cpnrr@Q~>
+JaVdjrW)rc!!*#d!!)0L"9@iimK!.P!s%`hmf!1gmJuYTo'QMYmem+hmJm7TmK!4R%05ha!:K7T
+!:K7Tmd:)OmK<OX!:Bj]mK<OX!:Bj\mf!1gmJu\CrW)rcp](?_!;>j[!;>jR!;Q!S!<;He!<)?Z
+!<;He!<)<c!<)<c!<)<c!;5ac!:BjT!:K7Tme?b^md^>Xme$SXmK<OX!:Bj\mf!1hmJu\C!<2Bn
+!:K7T!:Bgemd:)EmKN[ZmJu\C!;5ah!:K7Tmd:)C!:K7TmdC&S"RZ9XmK!7SrW!&g!!)Hb!!;Qg
+!<2Bd!;Z'^!<2Eb!<2Ec!<2Bd!<)<c!<)<i!:K7TmJu\;!<2Bd!<2Ed!<;Kd!<2Ed!<)<c!<2Ed
+!<;He!<2Bf!:K:S!!2KfXmQ>mmd:)Cmem-:mXaeWmeQ;N!.Y~>
+Ja2LbrW)r_!!*#`!!)0H"9@]el2^_H!s%TdlM^bcl2^)Lo'-5UlMU\dl2UhLl2^eJ%05\Y!:&hL
+!:&hLlKSBGl3%+P!9sRYl3%+P!9sRXlM^bcl2^,7rW)r_p](?[!;>^W!;>^N!;PjO!<;<a!<)3V
+!<;<a!<)0_!<)0_!<)0_!;5U_!9sRL!:&hLlM(>ZlLFoTlLb/Tl3%+P!9sRXlM^bdl2^,7!<26j
+!:&hL!9sOalKSB=l377Rl2^,7!;5Ud!:&hLlKSB7!:&hLlK\?K"R6!Pl2^hKrW!&c!!)<^!!;Ec
+!<26`!;YpZ!<29^!<29_!<26`!<)0_!<)0e!:&hLl2^,3!<26`!<29`!<;?`!<29`!<)0_!<29`
+!<;<a!<26b!:&kK!!2?bXm-&ilKSB7lMU^6l@J5OlM9`F!.Y~>
+J`c4Zrr<'!roO4\roO4\k2lgHk5XTDqrS"\k5XTCrr_E`k5Y#7!WV<\rrqQbs5rJDrT4Rhk2u^+
+k5YJDk5XT+s8(j\s5s@Ds7bXYs5s@Ds7YUSrr_E`k2u[CroX"U!TsFUk5PDSk4ScLk4J]RjoGG[
+k4\iTjoGG[joGG[joGG[joGGSjp;"Ls5s@Dk5XT=rrD3PrrD3Ss8;!^s5s@Ds7YUSrrhKak2u^C
+jpM.Nk5YJDs8V6Ds7#.Ts5rJDk2u^:jph@Qk5XT+s5s@Dk5XT+rr3,`s5rJDroX4["6TX`k5>5\
+k5YJ\joGGWk5PD[k5G>Zk5PD[joGG[joGG[jp(kJk5XTDk2u^CjoGG\k5YJ]k5PD[k5YJ[joGG\
+k5YJ]joGG\joYSFk5PA]k5VRG"om`Is5rJBs+0<`k(2[jk5PF3~>
+JaVdjrr<;l!:K7TmJm7dmJm7Nmf!4^mf!1fmJu\S!:]FR!!DWhmK!4R!!*#d#6=2[!!)HT!<2Bd
+!;c-_!;5dZ!<)<c!<)<h!:BjT!:K.QqsO.XrpKFZ!U]sYmed(]mJm7dmJm7dmf!4cmJm7dmJm7c
+mJm7dmJm7dmJm7[mK`g\mJu\C!:K:S!!;Qgmf!1hmJm7Tmem+cmf!1lmJu\C!!)Eemem.]mKN[Z
+mJu\C!;Q!^!!holmJm7TmK!7S#QX8mmJuYTmJu\C"9@iimJuqJ!!*#d!!*#d!!*#d%05ha!!)Ee
+!:K7T!:K:Q!"SDsmJm7T!!)EemJu\C!<2EN!;u6f!:K7T!<2Bj!:K7TmJu\S!<2EZ!<2Ed!<2Bd
+!<2E[!;Z$_!<2Ed!<2Ed!<;Kd!3PYh!<2Bf!:K:S!!2KfJaS*WJaWC&rr@Q~>
+Ja2Lbrr<;h!:&hLl2Uh`l2UhJlM^eZlM^bbl2^,K!:]:N!!DKdl2^eJ!!*#`#6=&S!!)<L!<26`
+!;c![!;5XV!<)0_!<)0d!9sRL!:&kMqs*kTrp'.V!U9[UlMLYYl2Uh`l2Uh`lM^e_l2Uh`l2Uh_
+l2Uh`l2Uh`l2UhWl3ICTl2^,7!:&kK!!;EclM^bdl2UhLlMU\_lM^bhl2^,7!!)9alMU_Yl377R
+l2^,7!;PjZ!!hchl2UhLl2^hK#QX,il2^)Ll2^8;"9@]el2^MB!!*#`!!*#`!!*#`%05\Y!!)9a
+!:&hL!:&kI!"S8ol2UhL!!)9al2^,7!<29J!;u*b!:&hL!<26f!:&hLl2^,K!<29V!<29`!<26`
+!<29W!;Ym[!<29`!<29`!<;?`!3PMd!<26b!:&kK!!2?bJa.gOJa3*srr@Q~>
+J`c4Zrr<;ds5rJDk5YJ\joGGFk5PDVk5PA^k5XTCs7#1Jrr_E`k5YDB!<<&\#QNrKs8V6Ds8M-\
+s8(mWs7PORs8D'[s8D'`s5s@Ds5rYIqr[VProWnR!TsFQk5>8UjoGG\joGG\k5PD[joGG\joGG[
+joGG\joGG\joGGSjp;"Lk5XT+s5rJCrrV?_k5PA`k5YJDk5G;[k5PAdk5XT+s8V6]k5G>Ujp(kJ
+k5XT+s7kaVrs.]dk5YJDk5YGC#lj&ek5XTDk5Xl3"TRWak5Y,:!<<&\!<<&\!<<&\%KGSQs8V6]
+s5rJDs5rJArsn2kk5YJDs8V6]k5XT+s8M0Fs8;!^s5rJDs8M-bs5rJDk5XTCs8M0Rs8M0\s8M-\
+s8M0Ss7tdWs8M0\s8M0\s8V6\s/kD`s8M-^s5rJCrrM9^J`_OGJ`cgkrr@Q~>
+JaVdjrrE)e"9@iimK!7S!!)?QjT,8I!!)uco)SdXrrE)er;Zicr;Zicr;clco`5!Zo`5!Z$39Jo
+md:)CmJu\CrW)rco)S^V!W_ZVrW)ud!!)i_rW!,i!:BjT!:oO^!:BjT!:Bj`mf*7pmJu\C!:BjT
+!!)EerU'XcrU'jimd:)CmJuqJ!!*#d!!*#d!<DQb!!)HW!<;Hj!:BjT!:Kgd!U]sbmJm7dmJm7d
+mJm7`mf*:emKWa[!:BjTmK!7SrVurdrW)<QrW)]\%KPnsmd:)C!:K7TmJu\CrW)udrW)udo)Js^
+!:BjT!;>j[!<2Ec!<)?b!;Gmd!:K7Tmd:&TrpC'mmJuYTmJuYTmf!1fmJu\S!"J>rmd:)CmJu\C
+!:K7TrU0Xbm-aQIZL.\mrU'pkmJu\C!:K7TJaS*WJaWF'rr@Q~>
+Ja2LbrrE)a"9@]el2^hK!!)?MjT,8E!!)u_o)SdTrrE)ar;Zi_r;Zi_r;cl_o`5!Vo`5!V$39>k
+lKSB7l2^,7rW)r_o)S^R!W_NNrW)u`!!)i[rW!,e!9sRL!:oCZ!9sRL!9sR\lMghll2^,7!9sRL
+!!)9arTX@_rTXRelKSB7l2^MB!!*#`!!*#`!<DE^!!)<S!<;<f!9sRL!:'O`!U9[^l2Uh`l2Uh`
+l2Uh\lMgkal3@=S!9sRLl2^hKrVur`rW)<MrW)]X%KPbolKSB7!:&hLl2^,7rW)u`rW)u`o)JsZ
+!9sRL!;>^W!<29_!<)3^!;Ga`!:&hLlKS?Lrosdil2^)Ll2^)LlM^bbl2^,K!"J2nlKSB7l2^,7
+!:&hLrTa@^m-=9EZK_DirTXXgl2^,7!:&hLJa.gOJa3-trr@Q~>
+J`c4ZrrE)]"TRWak5YGC!<;BIjo>;A!<<#[oDegPs8W,]rVll[rVll[rVuo[p&G$Rp&G$R$NK8g
+k2u^+k5XT+rr;u[oDeaN!rqEFrr<#\!<;lWrr3/as5s@Ds75:Vs5s@Ds5s@Xk5YGhk5XT+s5s@D
+s8V6]rT4+[rT4=ak2u^+k5Y,:!<<&\!<<&\!WV<ZrrD3Os8V3bs5s@Ds5s=\!TsFZjoGG\joGG\
+joGGXk5YJ]jp1qKs5s@Dk5YGCrr2u\rr;?Irr;`T%fb\kk2u^+s5rJDk5XT+rr<#\rr<#\oD]!V
+s5s@Ds7YUSs8M0[s8D*Zs7bX\s5rJDk2u^DroOOek5XTDk5XTDk5PA^k5XTCrse,jk2u^+k5XT+
+s5rJDrT=+Zm,n$AZK;/erT4Cck5XT+s5rJDJ`_OGJ`cjlrr@Q~>
+JaVdjrrE&dr;clc!!)0LrW)c^rW!#f!:KgdrpBadrpBadq!R_R(@D1jmJm7TmJm7TmJu\C!!)HT
+!!)HTr;cib!!*#d!!*#drW!8m!:K7Tmd:)C!<2Bd!<2Ed!!)Hd!!)H\!!2Kfq<n7_"RZ9X!!)i_
+$39JomJm7T!!)Eeo^2tbmJm7T!!)EeqX4=_#OVQlmJuYT!;5a_!:BjT!;5a[!<)<e!:K:E!!)Hd
+!<;Hi!:K7T!<)?c!<;Ke!!2KfrU'XcrU'XcrU'Xcr9apmmJm7T!:BgemJu\F!<)<c!<)?c!!)H\
+!<)<f!:K7TrpBadrpBadqX+=`rpC$lmJuYTmJu\CrW)ud!<DQd!<;He!;>gm!:BjT!:BjT!:BjT
+mJuYTmK!7S!!)uc!s%`hmf!1tmJu\C!:BjTmJu\C!:Bgemed%dmJu\S!<)<h!:BjT!!*#drW!&g
+!:BjcmJm7Vmf!3bmJm7dmJm7dmJm7dmJm7cmJm7cmJm6<mXae`mf*9;~>
+Ja2LbrrE&`r;cl_!!)0HrW)cZrW!#b!:'O`rosI`rosI`q!.GN(?tnbl2UhLl2UhLl2^,7!!)<L
+!!)<Lr;ci^!!*#`!!*#`rW!8i!:&hLlKSB7!<26`!<29`!!)<`!!)<X!!2?bq<It["R6!P!!)i[
+$39>kl2UhL!!)9ao]c\^l2UhL!!)9aqWe%[#O29hl2^)L!;5U[!9sRL!;5UW!<)0a!:&k=!!)<`
+!<;<e!:&hL!<)3_!<;?a!!2?brTX@_rTX@_rTX@_r9=Xil2UhL!9sOal2^,>!<)0_!<)3_!!)<X
+!<)0b!:&hLrosI`rosI`qW\%\rosahl2^)Ll2^,7rW)u`!<DE`!<;<a!;>[i!9sRL!9sRL!9sRL
+l2^)Ll2^hK!!)u_!s%TdlM^bpl2^,7!9sRLl2^,7!9sOalMLV`l2^,K!<)0d!9sRL!!*#`rW!&c
+!9sR_l2UhRlM^d^l2Uh`l2Uh`l2Uh`l2Uh_l2Uh_l2Ug8l@J5XlMgj7~>
+J`c4ZrrE&\rVuo[!<;3Drr;fVrr3&^s5s=\roO4\roO4\pu_2J(?YYZk5YJDk5YJDk5XT+s8V6D
+s8V6DrVulZ!<<&\!<<&\rr3;es5rJDk2u^+s8M-\s8M0\rrD3\rrD3TrrM9^q<%_W"QoaHs8VoW
+$NK8gk5YJDs8V6]o]?GZk5YJDs8V6]qW@eW#Nl'dk5XTDs7PLWs5s@Ds7PLSs8D']s5rJ5rrD3\
+s8V3as5rJDs8D*[s8V6]rrM9^rT4+[rT4+[rT4+[r8nCek5YJDs5s@]k5XT6s8D'[s8D*[rrD3T
+s8D'^s5rJDroO4\roO4\qW7eXroOLdk5XTDk5XT+rr<#\!WV<\s8V3]s7YRes5s@Ds5s@Ds5s@D
+k5XTDk5YGC!<<#["97N`k5PAlk5XT+s5s@Dk5XT+s5s@]k5>5\k5XTCs8D'`s5s@Ds8W)\rr3)_
+s5s@[joGGNk5PCZjoGG\joGG\joGG\joGG[joGG[joGF4k(2ZPk5PF3~>
+JaVdjo`41C"9@iimK!.P!s%`hmf!1mmJuYTmd:)CmK!%M!<DQd!!)Hd!<2Bd!<2Bm!:K7Tmd:)C
+mK!4Rrr</h!!)Hd!!qum!:K7Tmd:)SmL0*`!:BjT!:BjT!:BjcmJm7dmf*7gmJu\L!!)Hd!;Q!^
+!!M]imJm7`mK`g\mJm7T!:BjdmJm7\mKrs^!:BjT!:BjT!;c-_!!holmJm7TmK!4R"p"&kmd:)C
+r;Zld!:'"F!!holmJuYTmK!7S!!)uc!!*#d!!*#d!!)ES"9@ii!:Kdc!:Kdc!:KX_rU'XcrpBad
+rpBjgmd:)Smed(bmJm7dmJm7cmKN[ZmJu\C!;Psc!:K7TmdBlN!:KO\p[/Chmd:&TmJu\C!:K:S
+!!M]imd:)SmJm7dmK*CVmem+emJu\S!"/,omJuYTmJuYTmed%bmed(_mf!1omJu\C!!)Eemd:&T
+rpBadnEpDZmJuYTWpTierU'XcrU'XcrpBadrpBadrpBadJaS*WM=1BDJ,~>
+Ja2Lbo`41?"9@]el2^_H!s%TdlM^bil2^)LlKSB7l2^VE!<DE`!!)<`!<26`!<26i!:&hLlKSB7
+l2^eJrr</d!!)<`!!qii!:&hLlKSBKl3m[X!9sRL!9sRL!9sR_l2Uh`lMghcl2^,D!!)<`!;PjZ
+!!MQel2Uh\l3ICTl2UhL!9sR`l2UhXl3[OV!9sRL!9sRL!;c![!!hchl2UhLl2^eJ"p!oglKSB7
+r;Zl`!:&kB!!hchl2^)Ll2^hK!!)u_!!*#`!!*#`!!)EO"9@]e!:'L_!:'L_!:'@[rTX@_rosI`
+rosRclKSBKlMLY^l2Uh`l2Uh_l377Rl2^,7!;Pg_!:&hLlK\0F!:'7XpZ`+dlKS?Ll2^,7!:&kK
+!!MQelKSBKl2Uh`l2gtNlMU\al2^,K!".ukl2^)Ll2^)LlMLV^lMLY[lM^bkl2^,7!!)9alKS?L
+rosI`nEL,Vl2^)LWp0QarTX@_rTX@_rosI`rosI`rosI`Ja.gOM<b*@J,~>
+J`c4Z!!)`mkN2pIk5XTDqrS"\k5XTCrs@ifk5XT+s5rJDpuVVWk5G;[k5PD[joGG\jpD(Mk5XT+
+s5rJDrT=.["6TX`k5PAdk5YJDk5XT+s8M-hs5s@Ds5s@Ds5s@Ds8D'[s8M0\rrV?_k4elUk5PDU
+k5YGak5XTDs8(j`s5rJDs5s@Ds8M-\s7YR^s5s@Ds5s@Ds5s@Xk5PAck5XTDs5rJDrT4=ak5XT+
+s5s:[!TsFIk4S`Zk5XTDk5XTDroO4\rT4+[roO4\roO4\mH+QOk5YJDrVll[rVll[q>^EU!<<&\
+!<<&\"97NGs8M0Ys8V3]s8M-\s8D'as5rJDk2u^=joteIk5XT+q>UHWpAamL$ifAOs8V6]k2u^+
+k5PA`k5XT+s8M-\s8M-^s5rJBrrV?_k5PAfk5XTDk5XTDk5XTArrD3Zs8;$YrsRuhk2u^Dk5XT+
+s8W)\!<;QN"TRWak5VID!<<#[!<<#[!<<&\!<<&\!<<&\!<7W4J`_gOrr@Q~>
+JaVdjrrE&dquGmI"p")Z!:K7TrU(3smd:)CmJu\C!:K7TmJuYTrU'XcrU'dgmd:)CrVurdrVuue
+!;u6c!:Kdc!U]sbmeZtjmJu\C!!)EemK!7S#6=2[!:K7Tmf!4\mJm7dmK!=UqZ-Zarr<&er;c]^
+!W_ZVrW)ud!!)rb!!*#d!<DQd!<)<c!;Psl!:BgemJuYT!:BjT!!)H\!<;Hg!:BjdmK*CVme$SI
+mKEUY!:BjTrW!>o!!)EemJm7TmJm7cmK3IWmK!4R!!)uc!!)i_!!)uc!!)uc!s%`hmed%imJm7T
+mJm7TrVurdrW)la"p")Z!:K7TrU'dgmd:)CrW)ud!s%cW!;l0e!:BjT!;>jQ!!M]i!:K:Q!;>g\
+!<2Bq!:BjT!:BjTmJm7TmK!7S!!*#d!<DQ]!!2KfrpKac!q$'VjoGGLrrE)e!s%cW!:]C\!:K7T
+md:(FmKN[ZmJu\C!.jQhmYL<2!.Y~>
+Ja2LbrrE&`quGmE"p!rR!:&hLrTXpolKSB7l2^,7!:&hLl2^)LrTX@_rTXLclKSB7rVur`rVuua
+!;u*_!:'L_!U9[^lMCPfl2^,7!!)9al2^hK#6=&S!:&hLlM^eXl2Uh`l2^nMqZ-Z]rr<&ar;c]Z
+!W_NNrW)u`!!)r^!!*#`!<DE`!<)0_!;Pgh!9sOal2^)L!9sRL!!)<X!<;<c!9sR`l2gtNlLb/E
+l3.1Q!9sRLrW!>k!!)9al2UhLl2Uh_l2q%Ol2^eJ!!)u_!!)i[!!)u_!!)u_!s%TdlMLVel2UhL
+l2UhLrVur`rW)l]"p!rR!:&hLrTXLclKSB7rW)u`!s%WO!;l$a!9sRL!;>^M!!MQe!:&kI!;>[X
+!<26m!9sRL!9sRLl2UhLl2^hK!!*#`!<DEY!!2?brp'I_!pTdNjoGGHrrE)a!s%WO!:]7X!:&hL
+lKSA>l377Rl2^,7!.jEdlA4a*!.Y~>
+J`c4ZrrE&\r;YpA#63iJs5rJDrT4[kk2u^+k5XT+s5rJDk5XTDrT4+[rT47_k2u^+rr2u\rr3#]
+s8;![s5s:[!TsFZk55/bk5XT+s8V6]k5YGC#QNrKs5rJDk5PDTjoGG\joPMEqu?]Ys8N)]rVu`V
+!rqEFrr<#\!<;uZ!<<&\!WV<\s8D'[s7k^ds5s@]k5XTDs5s@Ds8V6Ts8V3_s5s@\joYSFk4ScA
+joteIs5s@Drr3Ags8V6]k5YJDk5YJ[jobYGk5YDB!<<#[!<;lW!<<#[!<<#["97N`k5>5ak5YJD
+k5YJDrr2u\rr;oY#63iJs5rJDrT47_k2u^+rr<#\"97NGs81p]s5s@Ds7YUIrrhKas5rJAs7YRT
+s8M-is5s@Ds5s@Dk5YJDk5YGC!<<&\!WV<UrrM9^roX4[!p9OFk5YJDs8W,]"97NGs7#.Ts5rJD
+k2u]6jp(kJk5XT+s+0<`k(r1"!.Y~>
+JaVdjrr<&ep&OFH!!*#d!!*#d!s%cW!<2Bj!:BjT!:Bjdmf!4`mKEUYmJm7TrVurdqu?cc!;c-\
+!;Z']!<;He!<2Eb!<2Bd!<2EZ!;u6b!<)?b!!)Hc!!)Hb!!)Hd!;u9Y!<2Bf!:K:K!;>g\!<2Ed
+!<;Hi!:BjT!;l3]!<;He!<2Bm!:K7Tmd:&TmdC#RlL"lWmJm7T!!)Hd!!_ik!:BjT!<2Bd!9W\L
+!<2Bd!<2Bd!<2Be!:K[`s6fme!:Kabs6^!imJu\Cr;Zld!;u9`!!qummd:)C!:Bj_mf!4Ymf!1d
+med%bmf!4dme-YXmJm7cmf*7pmJuYT!:BgemJuYTrU'XcrpBjgmJu\<!<;Kc!;l3`!!)Hd!<2Bg
+!:BjTrW)HU!!*#d!!*#d!!&PW"9@iimJqh+JaS<]rr@Q~>
+Ja2Lbrr<&ap&OFD!!*#`!!*#`!s%WO!<26f!9sRL!9sR`lM^e\l3.1Ql2UhLrVur`qu?c_!;c!X
+!;YpY!<;<a!<29^!<26`!<29V!;u*^!<)3^!!)<_!!)<^!!)<`!;u-U!<26b!:&kC!;>[X!<29`
+!<;<e!9sRL!;l'Y!<;<a!<26i!:&hLlKS?LlK\<JlKSTSl2UhL!!)<`!!_]g!9sRL!<26`!9WPH
+!<26`!<26`!<26a!:'C\s6BUa!:'I^s69^el2^,7r;Zl`!;u-\!!qiilKSB7!9sR[lM^eUlM^b`
+lMLV^lM^e`lLk5Tl2Uh_lMghll2^)L!9sOal2^)LrTX@_rosRcl2^,4!<;?_!;l'\!!)<`!<26c
+!9sRLrW)HQ!!*#`!!*#`!!&PS"9@]el2ZD#Ja/$Urr@Q~>
+J`c4Zrr<&]pAaI@!<<&\!<<&\"97NGs8M-bs5s@Ds5s@\k5PDXjoteIk5YJDrr2u\r;Qf[s8(mT
+s7tgUs8V3]s8M0Zs8M-\s8M0Rs8;!Zs8D*ZrrD3[rrD3ZrrD3\s8;$Qs8M-^s5rJ;s7YRTs8M0\
+s8V3as5s@Ds81sUs8V3]s8M-es5rJDk2u^Dk2uXBlK/?Ok5YJDs8V6\rs%Wcs5s@Ds8M-\s5rGD
+s8M-\s8M-\s8M-]s5s1Xs5s@]!9X4Zs5jIak5XT+rVlo\s8;$Xrs7cek2u^+s5s@Wk5PDQk5PA\
+k5>5Zk5PD\k4\iPjoGG[k5YGhk5XTDs5s@]k5XTDrT4+[roO=_k5XT,s8V6[s81sXrrD3\s8M-_
+s5s@Drr;KM!<<&\!<<&\!<8SO"TRWak5U"pJ`_aMrr@Q~>
+JaVdjrr</h!:K:R!9ihN!<)<c!<)?c!<)?c!<2EZ!<2Ed!!qum!:BjT!!)Hc!!DWhmdAm2#OVT[
+!:K7Tmf!4dmJm7cmJm7ame-Y\mJm7cmJm7_mf!4Xmf!4VmJm7dmKN[ZmJm7T!;l3X!<2Bl!:BjT
+!!)Eemed%emJuYTrU'Xcp$Mn^mJu\S!!)H_!<;He!<)<c!9W\R!:K7Tmd:)QmK!=Ur;clcrVurd
+rVurdrVurdrW!#f!:KdcqX47]rpKacr9j7Yr9inO!:Kdcq<e4_rU'XcrU0[c"7?0W!;#XW!!;Qg
+mem+gmJuYTmf!4cmeZtamf!1gmJuYTrU'afmJu\S!;c-_!<2Bd!<)<c!<)<c!<2Bd!<)<c!<)<c
+!4D4p!<)<c!<)<c!;#XX!.jQhmY:00!.Y~>
+Ja2Lbrr</d!:&kJ!9i\J!<)0_!<)3_!<)3_!<29V!<29`!!qii!9sRL!!)<_!!DKdlK[1*#O2<S
+!:&hLlM^e`l2Uh_l2Uh]lLk5Xl2Uh_l2Uh[lM^eTlM^eRl2Uh`l377Rl2UhL!;l'T!<26h!9sRL
+!!)9alMLVal2^)LrTX@_p$)VZl2^,K!!)<[!<;<a!<)0_!9WPN!:&hLlKSBIl2^nMr;cl_rVur`
+rVur`rVur`rW!#b!:'L_qWdtYrp'I_r9EtUr9EVK!:'L_q<@q[rTX@_rTaC_"6omO!;#LS!!;Ec
+lMU\cl2^)LlM^e_lMCP]lM^bcl2^)LrTXIbl2^,K!;c![!<26`!<)0_!<)0_!<26`!<)0_!<)0_
+!4D(l!<)0_!<)0_!;#LT!.jEdlA"U(!.Y~>
+J`c4Zrr</`s5rJBs6/SFs8D'[s8D*[s8D*[s8M0Rs8M0\rs7ces5s@Ds8V6[rr_E`k2tM"#Nl'K
+s5rJDk5PD\joGG[joGGYk4\iTjoGG[joGGWk5PDPk5PDNjoGG\jp(kJk5YJDs81sPs8M-ds5s@D
+s8V6]k5>5]k5XTDrT4+[p#ZAVk5XTCrrD3Ws8V3]s8D'[s5rGJs5rJDk2u^AjoPMErVuo[rr2u\
+rr2u\rr2u\rr3&^s5s:[qW@_UroX4[r9!_Qr9!AG!9X7[q;q\WrT4+[rT=.["6TXGs7>COrrV?_
+k5G;_k5XTDk5PD[k55/Yk5PA_k5XTDrT44^k5XTCs8(mWs8M-\s8D'[s8D'[s8M-\s8D'[s8D'[
+s0^ths8D'[s8D'[s7>CPs+0<`k(`$u!.Y~>
+JaVdjrW)rc"9@iimJt]'!W_ZVrW)ud!!)rb"T[rjmJu\I!<;K_!;u6c!:Kdcs6fmerpKac!U]se
+mJm7dmL0*`!:BjT!:BjTmJm7dmJm7cmK*CVmf!4SmKWa[!:BjTmK!4R!!)uc"9@iimJueF!W_ZV
+r;[2m!:BgemJuYT!:K[`rU'[dmem+emJu\R!!Vcj!:K7TrpBadp$Mq_mJu\CrW)udq>f@>"9@ii
+mK!4Rmf3@Ur;ZicirK#FrW)ob!!)uc!!*#drW)udr;ZicrVuue!<2Bh!:BjT!;Z$_!<2Bd!<2Bf
+!:K:S!;>jP!!)Hd!!qummJuYTmJu\Q!"/,o!:K7Tmd:)CmcjfOmJm7dmJm7TmJm7cmJm7cmJm7.
+mJm7cmJm7dmf*7gmJm7dmJm7cmK*CVme-V]mJqh+JaSKbrr@Q~>
+Ja2LbrW)r_"9@]el2]8t!W_NNrW)u`!!)r^"T[ffl2^,A!<;?[!;u*_!:'L_s6BUarp'I_!U9[a
+l2Uh`l3m[X!9sRL!9sRLl2Uh`l2Uh_l2gtNlM^eOl3@=S!9sRLl2^eJ!!)u_"9@]el2^A>!W_NN
+r;[2i!9sOal2^)L!:'C\rTXC`lMU\al2^,J!!VWf!:&hLrosI`p$)Y[l2^,7rW)u`q>f@:"9@]e
+l2^eJmf3@Qr;Zi_irK#BrW)o^!!)u_!!*#`rW)u`r;Zi_rVuua!<26d!9sRL!;Ym[!<26`!<26b
+!:&kK!;>^L!!)<`!!qiil2^)Ll2^,I!".uk!:&hLlKSB7lKSBKl2Uh`l2UhPl2Uh_l2Uh_l2Uh*
+l2Uh_l2Uh`lMghcl2Uh`l2Uh_l2gtNlLk2Yl2ZD#Ja/3Zrr@Q~>
+J`c4Zrr<'!roO@`k5XTDdcLW2k2u[Cs5j=]r8n1_k5XTDk4J]Rk5#&TjoPMErVuo[s8W)\rr3#]
+s8M-\s8M-hs5s@Ds5s@Ds5rJDs8M-\s8D']s5rJCs6f"Ss5s@Ds5rJDrT4+[rT47_k5XTDn`BoQ
+k2uXB$KhBNs8V6]k5YJDqZ$NV!WV<\rrV?_k5G;`k5YJDk5YGC!<;`S"TRWak2u[Cs5s1Xh<"k?
+k5XTDrT<SK!9X7[!9W>Ar9""YrT4+[rT4+[roX4[s5s:[!9X:\!TsF]jok_Hs5s@WjoGG\joGG\
+joYSFk5PDSk4ATQk5PAdk5XTDk5XTDk5>5dk5YJDk5XT+s5rJ/s8M-\s8M-\s6f"Ls8D'[s8D'[
+s2a=&s8D'[s8M0\rrV?_s8M-\s8D']s5rJ;rrM9^J`_OGN9:-?J,~>
+JaVdjrrE&drr<2i!:K7TddI,8"RZ9X!!)l`rW)f_rW)rc"T[rjmJu\P!;l3\!<;Hf!:Kgd(@D1j
+!:K7Tmd:)C!:K7T!:Bgemd:&TrpBadrpC!kmd:)C!:BjcmJm7cmJm7`mK`g\mJm7T!:Bjdmf*:d
+mf*7imJuYT!<2Bd!;5a^!:BjTrW)ud#6=/lmJuYTmeZtcmJu\C!!M]imd:)KmJm7cmK<OX!:K:J
+!!;Qg!<2Ed!9`eL!<)?M!!VcjmJu\CrW)c^r;Zoe!:Kgdq<e@cmJuYTrpBadrpBadrpC6rmJuYT
+mJuYTmJuYTmK!7Srr<2i!:K7Tq<eCdmd:)Cme-YSmf!4dmdpMZmKEUYmJm7Tr;Zrf!:Bjdmf*:d
+mK!=UrW)f_rW)la"p")Z!:K7Tm-XiRrpBadrpBad`pNg,rpKdds6]pgmdC&Ss6^0nmJuYTmJm7T
+me["`mJm6<mXaeamf*9;~>
+Ja2LbrrE&`rr<2e!:&hLdd$i4"R6!P!!)l\rW)f[rW)r_"T[ffl2^,H!;l'X!<;<b!:'O`(?tnb
+!:&hLlKSB7!:&hL!9sOalKS?LrosI`ros^glKSB7!9sR_l2Uh_l2Uh\l3ICTl2UhL!9sR`lMgk`
+lMghel2^)L!<26`!;5UZ!9sRLrW)u`#6=#hl2^)LlMCP_l2^,;!!MQelKSBCl2Uh_l3%+P!:&kB
+!!;Ec!<29`!9`YH!<)3I!!VWfl2^,7rW)cZr;Zoa!:'O`q<A(_l2^)LrosI`rosI`rossnl2^)L
+l2^)Ll2^)Ll2^hKrr<2e!:&hLq<A+`lKSB7lLk5OlM^e`lLY)Vl3.1Ql2UhLr;Zrb!9sR`lMgk`
+l2^nMrW)f[rW)l]"p!rR!:&hLm-4QNrosI`rosI``p*O(rp'L`s69XclK\?Ks69mjl2^)Ll2UhL
+lMCS\l2Ug8l@J5YlMgj7~>
+J`c4Z!<E0!k5YGak5XT+s3g'0rrhKak5YJXk5PDWk5PD[joteIs5s@Dqu?QUqZ$TX!WV<]rtabs
+k5XT+s5rJDk5XT+s8V6]s5rJDs8M-\s8M-cs5rJDk5XTDrT4+[rT4+[qW8(`k2u^Dk5XTDroX7\
+roX7\"QoaHs8W)\!<;`S"97N`k5PD\jp1qKs5s@Ds5s4Y!p9OFmf*FPs5rJDp>uATrT47_k5XT+
+p&>*Us8W)\s8V9Err;rZl2LqLs5s@Dk5PDVk5G;]k5XTCs7td[s5s@Ds8M-\s8M-\s8M-js5s@D
+s5s@Ds5s@Ds5s@\k5YGak5XT+s7td\s5rJDk2uC;p?)ASs5rtRs5jLbk2u^Dk5G;^k5XTDroX7\
+roO7]k5PDWk5PDYjp(kJk5XT+s6SkJs8M-\s8M-\s2O1$s8M0\s8V3_s5rJCs8V3fs5s@Ds5s@]
+k2uR@roO4\J`_OGMrt$>J,~>
+JaVdjrrE)e!!*#d!!*#d!!(L9rr<2i!:BgerpKI[s6^!imJuYTrpBdemed%jmJm7T!:K7Tmed%d
+mJm7dmK!=UrW!/j!:BjT!:KgdrpBjgmJu\S!<;I'!:K7Tmd:)CmJu\C!:K7TmJuYTmd:&TqX4@`
+s6^['mJuYT!:Bgemd:)C!:BjT!:BjT!:BjZme-V^mJu\J!<;Hf!:Kgds6]mfmed(bmf!1emK!(N
+!!)uc!!*#drrE)e"T[rjmJu\S!"/,o!:K7T!:K7T!:'"G!<)?_!<;Kd!!)Hd!<2Ea!<;Hi!:BjT
+!;l0b!:Kdc"muBY!:BjamL0*`mJu\C!:K7Tmd:)SmLfNf!!)HT!!)Ee!:Bgemd:)C!<2Bd!<2Bd
+!;Z$c!:BjT!<)?b!;#XV!!DWh!:K^as6fme!q$'VrVurdr;cibrrE&drrE&drr</h!:BjbmK<OX
+!:BjbmK<OX!:BjPmKN[ZmJu\C!6":.!:K7Tmf!1tmJu\C!!)EemJm7TmJm7Tmem+gmJu\C!.jQh
+mY^H4!.Y~>
+Ja2LbrrE)a!!*#`!!*#`!!(L5rr<2e!9sOarp'1Ws69^el2^)LrosLalMLVfl2UhL!:&hLlMLV`
+l2Uh`l2^nMrW!/f!9sRL!:'O`rosRcl2^,K!<;=#!:&hLlKSB7l2^,7!:&hLl2^)LlKS?LqWe(\
+s6:C#l2^)L!9sOalKSB7!9sRL!9sRL!9sRVlLk2Zl2^,B!<;<b!:'O`s69UblMLY^lM^bal2^YF
+!!)u_!!*#`rrE)a"T[ffl2^,K!".uk!:&hL!:&hL!:&kC!<)3[!<;?`!!)<`!<29]!<;<e!9sRL
+!;l$^!:'L_"mQ*Q!9sR]l3m[Xl2^,7!:&hLlKSBKl4O*^!!)<L!!)9a!9sOalKSB7!<26`!<26`
+!;Ym_!9sRL!<)3^!;#LR!!DKd!:'F]s6BUa!pTdNrVur`r;ci^rrE&`rrE&`rr</d!9sR^l3%+P
+!9sR^l3%+P!9sRLl377Rl2^,7!6".*!:&hLlM^bpl2^,7!!)9al2UhLl2UhLlMU\cl2^,7!.jEd
+lAFm,!.Y~>
+J`c4ZrrE)]!<<&\!<<&\!<:O1s8N5as5s@]roWqSs5jIak5XTDroO7]k5>5bk5YJDs5rJDk5>5\
+k5YJ\joPMErr32bs5s@Ds5s=\roO=_k5XTCs8V3ts5rJDk2u^+k5XT+s5rJDk5XTDk2u^DqW@hX
+s5k-tk5XTDs5s@]k2u^+s5s@Ds5s@Ds5s@Rk4\fVk5XT:s8V3^s5s=\s5j@^k5>8Zk5PA]k5Y8>
+!<<#[!<<&\s8W,]"om`bk5XTCrsIogs5rJDs5rJDs6Ab?s8D*Ws8V6\rrD3\s8M0Ys8V3as5s@D
+s81pZs5s:["m5jIs5s@Yjp_:Pk5XT+s5rJDk2u^Cjq@^Vs8V6Ds8V6]s5s@]k2u^+s8M-\s8M-\
+s7td[s5s@Ds8D*Zs7>CNrr_E`s5s4Ys5s@]!p9OFrr2u\rVulZs8W)\s8W)\s8N2`s5s@Zjok_H
+s5s@Zjok_Hs5s@Hjp(kJk5XT+s2=%&s5rJDk5PAlk5XT+s8V6]k5YJDk5YJDk5G;_k5XT+s+0<`
+k)/=$!.Y~>
+JaVdjrr<)f!<)<c!<)<c!7gK=!:K:S!<;He!;l3`!<2Bo!:BjTmJuYT!:BjTqu?`brW)udrr</h
+!!)Hc!!Vcj!:BjTr;clcq#LE^!W_ZVrW)ob#6=/lmJu\C!<2Ed!<;Ke!!M]imJm7`mKim]mJuYT
+mJm7TrW)ob!W_ZVquHcb!!)`\p&G<b!:BjT!:Kgd!:Kgds6]shmJu\R!!Vcjmd:)CrW)obrW)]\
+!!*#drrE)e!s%cW!<2Ec!"A8qmJuYT!:BgemJm7Kmf!4_med%bmf!1hmJuYTmd^AXmJm7cme-Y\
+mJm7cmJm7dmJm7dmK<OX!:BjdmJm7dmKN[Z!:BjT!<2Bd!<2Bd!<)<c!<)<c!;Z'^!<)<g!:BjT
+!;5aq!:K7TmJm7T!:K7T!:BjT!!)Ee!:K:K!;Gmc!:K7Tmd:)SmKN[ZmJu\C!;u9a!9ihR!:BjT
+!5e.+!:BjTr;cfarW!Dq!:K7Tmd:)C!:Bgemf!3;mXae_mf*9;~>
+Ja2Lbrr<)b!<)0_!<)0_!7g?9!:&kK!<;<a!;l'\!<26k!9sRLl2^)L!9sRLqu?`^rW)u`rr</d
+!!)<_!!VWf!9sRLr;cl_q#LEZ!W_NNrW)o^#6=#hl2^,7!<29`!<;?a!!MQel2Uh\l3RIUl2^)L
+l2UhLrW)o^!W_NNquHc^!!)`Xp&G<^!9sRL!:'O`!:'O`s69[dl2^,J!!VWflKSB7rW)o^rW)]X
+!!*#`rrE)a!s%WO!<29_!"A,ml2^)L!9sOal2UhGlM^e[lMLV^lM^bdl2^)LlLFrTl2Uh_lLk5X
+l2Uh_l2Uh`l2Uh`l3%+P!9sR`l2Uh`l377R!9sRL!<26`!<26`!<)0_!<)0_!;YpZ!<)0c!9sRL
+!;5Um!:&hLl2UhL!:&hL!9sRL!!)9a!:&kC!;Ga_!:&hLlKSBKl377Rl2^,7!;u-]!9i\N!9sRL
+!5e"'!9sRLr;cf]rW!Dm!:&hLlKSB7!9sOalM^d7l@J5WlMgj7~>
+J`c4Zrr<)^s8D'[s8D'[s4-65s5rJCs8V3]s81sXs8M-gs5s@Dk5XTDs5s@Dr;QcZrr<#\s8N2`
+s8V6[rrqQbs5s@DrVuo[q>^HV!rqEFrr;rZ#QNrdk5XT+s8M0\s8V6]rrhKak5YJXjpD(Mk5XTD
+k5YJDrr;rZ!rqEFr;ZfZ!<;cTpAY?Zs5s@Ds5s=\!9X:\s5jF`k5XTBrrqQbk2u^+rr;rZrr;`T
+!<<&\s8W,]"97NGs8M0[rs\&ik5XTDs5s@]k5YJCk5PDWk5>5Zk5PA`k5XTDk48QPjoGG[k4\iT
+joGG[joGG\joGG\jok_Hs5s@\joGG\jp(kJs5s@Ds8M-\s8M-\s8D'[s8D'[s7tgVs8D'_s5s@D
+s7PLis5rJDk5YJDs5rJDs5s@Ds8V6]s5rJ;s7bX[s5rJDk2u^Cjp(kJk5XT+s8;$Ys6/SJs5s@D
+s2*n#s5s@DrVuiYrr3Gis5rJDk2u^+s5s@]k5PC3k(2ZOk5PF3~>
+JaVdjrrC40p&P'Z"9@iimK!7S$NTSpmJuYTmJuYTmaqL>me-V\mf!4dmJm7cmKN[Z!:K7Tmem.c
+mKEUY!:K7TrpKdd!q$'VrW)ud!!*#drW!,i!:BjT!:fLV!!;Qgmem.bmed%imJuYTmd:)CrW!&g
+!:K:D!;c*d!:K7Tmf!1dmdpJZmeQq^mJm7^mJm7cmJm7cmKWa[mJuYTmK!1Qrr<&eoDf!]!!)Ha
+!"/,omJu\C!!)HT!<2Ea!<;He!<2Bg!:K7TrU'XcrU0XbrpBadrU0[crpKddrpKddrpBado^;DQ
+s6]shmd:)LmJm7dmK*CVmf!1dmf!1hmJuYT!;Q!]!;,[Z!<2Bd!<2Bf!:BjdmJm7dme$SGmf!4%
+me-V\mem+dmK!4RrVurdquD<9JaSB_rr@Q~>
+Ja2LbrrC4,p&P'V"9@]el2^hK$NTGll2^)Ll2^)LlIZ(:lLk2XlM^e`l2Uh_l377R!:&hLlMU__
+l3.1Q!:&hLrp'L`!pTdNrW)u`!!*#`rW!,e!9sRL!:f@R!!;EclMU_^lMLVel2^)LlKSB7rW!&c
+!:&k<!;bs`!:&hLlM^b`lLY&VlM:MZl2UhZl2Uh_l2Uh_l3@=Sl2^)Ll2^bIrr<&aoDf!Y!!)<]
+!".ukl2^,7!!)<L!<29]!<;<a!<26c!:&hLrTX@_rTa@^rosI`rTaC_rp'L`rp'L`rosI`o]l,M
+s69[dlKSBDl2Uh`l2gtNlM^b`lM^bdl2^)L!;PjY!;,OV!<26`!<26b!9sR`l2Uh`lLb/ClM^e!
+lLk2XlMU\`l2^eJrVur`quD<5Ja/*Wrr@Q~>
+J`c4ZrrC4(pAb*R"TRWak5YGC$ifAhk5XTDk5XTDk1K\6k4\fTk5PD\joGG[jp(kJs5rJDk5G>[
+joteIs5rJDroX7\!p9OFrr<#\!<<&\rr3/as5s@Ds7,7NrrV?_k5G>Zk5>5ak5XTDk2u^+rr3)_
+s5rJ4s8(j\s5rJDk5PA\k4JZRk5,,VjoGGVjoGG[joGG[jp1qKk5XTDk5YAAs8N)]o`#$Us8V6Y
+rsIogk5XT+s8V6Ds8M0Ys8V3]s8M-_s5rJDrT4+[rT=+ZroO4\rT=.[roX7\roX7\roO4\o]GlI
+s5jF`k2u^<joGG\joYSFk5PA\k5PA`k5XTDs7kaUs7GFRs8M-\s8M-^s5s@\joGG\k4Sc?k5PCr
+k4\fTk5G;\k5YDBrr2u\r;V?1J`_gOrr@Q~>
+JaVdjrrC(,rW)f_%KPqb!:K7TmJuYTmJm7TnGid]!:K7TmdC&SqsOF`s6]mfmem.amK3IW!:Kdc
+!:KO\qsFIbmem+dmK!7S!!*#d!!*#do`5!ZrVurdrW)KV!s%`hmbn0Gmf!1gmJu\CrW)WZ!s%`h
+mem.`med(bmf*7emem+dmK!7S!!)`\!!*#d!!*#d#lsD]!:K7Tmd:)Smf*:emf!1fmJu\S!"/,o
+mJm7TmJuYTmf!1mmJuYTmJu\C!!)uc#6=/lmJm7T!<)<c!;c-W!8R#A!<;He!<2Bd!<2Bd!;Z$_
+!<)<c!<2Eb!<;Kd!<;He!;c*d!:BjT!;>g\!<)<c!<)<c!<)<c!<)<c!<2Ec!:0(H!6FU%!!)HM
+!.jQhmYpT6!.Y~>
+Ja2LbrrC((rW)f[%KPeZ!:&hLl2^)Ll2UhLnGidY!:&hLlK\?Kqs+.\s69UblMU_]l2q%O!:'L_
+!:'7Xqs"1^lMU\`l2^hK!!*#`!!*#`o`5!VrVur`rW)KR!s%TdlJVaClM^bcl2^,7rW)WV!s%Td
+lMU_\lMLY^lMghalMU\`l2^hK!!)`X!!*#`!!*#`#ls8U!:&hLlKSBKlMgkalM^bbl2^,K!".uk
+l2UhLl2^)LlM^bil2^)Ll2^,7!!)u_#6=#hl2UhL!<)0_!;c!S!8Ql=!<;<a!<26`!<26`!;Ym[
+!<)0_!<29^!<;?`!<;<a!;bs`!9sRL!;>[X!<)0_!<)0_!<)0_!<)0_!<29_!:/qD!6FI!!!)<I
+!.jEdlAY$.!.Y~>
+J`c4ZrrC($rr;iW%fb\Rs5rJDk5XTDk5YJDnc&gUs5rJDk2u[Cqr[nXs5j@^k5G>YjobYGs5s:[
+!9X"TqrRqZk5G;\k5YGC!<<&\!<<&\p&G$Rrr2u\rr;NN"97N`k2H@?k5PA_k5XT+rr;ZR"97N`
+k5G>Xk5>8Zk5YG]k5G;\k5YGC!<;cT!<<&\!<<&\$30/Ms5rJDk2u^Ck5YJ]k5PA^k5XTCrsIog
+k5YJDk5XTDk5PAek5XTDk5XT+s8W&[#QNrdk5YJDs8D'[s8(mOs4lc9s8V3]s8M-\s8M-\s7tdW
+s8D'[s8M0Zs8V6\s8V3]s8(j\s5s@Ds7YRTs8D'[s8D'[s8D'[s8D'[s8M0[s6Jh@s2a?rrrD3E
+s+0<`k)AI&!.Y~>
+JaVdjrrC+-"9@iimK!1Q!!*#d!!*#d!!*#d"p"&kmJuYTrpKL\$LRo^!:K7TmJuYTrU'jimJuYT
+mdC#R!U]sdmem+fmJuYTrU0Xbq!ReT$17f]mJu\C!:K:P!<2EW!;>gd!:Bgemd:)Cmf!4cmed%c
+mK!7S!<DQd!!VcjmJu\Cr;[,k!:BgemJuYTp$VJQ"muBY!!)HZ!<)<c!;Z$h!:K7Tmd:)CmK!7S
+!!*#d!W_WgrU'^emdC&S(%)&%mJuYT!:BjT!!)Ee!:Bgemd:)NmKN[ZmJu\C!:T@T!86cD!:BjT
+!!)uc!!)uc!!)][n,WCS"p")Z!:K7Ti9g^JmJuYTkjJEM_!_.$"muBY!:K:K!!)Hd!<;Kd!.jQh
+mYL<2!.Y~>
+Ja2LbrrC+)"9@]el2^bI!!*#`!!*#`!!*#`"p!ogl2^)Lrp'4X$L.WV!:&hLl2^)LrTXRel2^)L
+lK\<J!U9[`lMU\bl2^)LrTa@^q!.MP$0hNUl2^,7!:&kH!<29S!;>[`!9sOalKSB7lM^e_lMLV_
+l2^hK!<DE`!!VWfl2^,7r;[,g!9sOal2^)Lp$22M"mQ*Q!!)<V!<)0_!;Ymd!:&hLlKSB7l2^hK
+!!*#`!W_KcrTXFalK\?K($Yc!l2^)L!9sRL!!)9a!9sOalKSBFl377Rl2^,7!:T4P!86W@!9sRL
+!!)u_!!)u_!!)]Wn,WCO"p!rR!:&hLi9CFFl2^)Lkj&-I_!:ju"mQ*Q!:&kC!!)<`!<;?`!.jEd
+lA4a*!.Y~>
+J`c4ZrrC+%"TRWak5YAA!<<&\!<<&\!<<&\#63ick5XTDroWtT$KhBNs5rJDk5XTDrT4=ak5XTD
+k2uXB!TsF\k5G;^k5XTDrT=+Zpu_8L$0M9Mk5XT+s5rJ@s8M0Os7YR\s5s@]k2u^+k5PD[k5>5[
+k5YGC!WV<\rrqQbk5XT+rVm/cs5s@]k5XTDp#brI"m5jIs8V6Rs8D'[s7td`s5rJDk2u^+k5YGC
+!<<&\!rqE_rT41]k2u[C($>Prk5XTDs5s@Ds8V6]s5s@]k2u^>jp(kJk5XT+s6o+Ls4QN<s5s@D
+s8W&[!<<#[!<;`SnGiFK#63iJs5rJDi8t1Bk5XTDkiVmE^ukUq"m5jIs5rJ;rrD3\s8V6\s+0<`
+k(r1"!.Y~>
+JaVdjrrC.."p")Z!:K7TrpBadrU'XcrU'XcrpK[arpBdeme$S[mL'$_mJu\C!:K7TmdBB@#jq]\
+mJuYTmK!.Pp&G-]!<2Bg!:BjTp&P'Z!<DQe!!)Hd!;#U_!:BjT!:K:S!!)Hd!!qummJuYTmJm7c
+mf*7hmJuYTr9b!omd:)CmJm7TmJu\C!;c-W!<2Bn!:K7Tmd:&TmJu\O!!;Qg!<2Bd!;Gmd!:BjT
+!:K7TrU'XcrU'XcrU0:Xs6^9qmJuYTmJuYTmJuYTq<e4_rpBadrpBadna6M[mJuYTg[5:HmJm7T
+mJm7cmJm7dmJm7cmJm7cmJm7amf!4cmf!4^mJm7dmJm7dmJm7HmKN[ZmJu\C!:&tT!:BjT!5e.)
+!:Kgd#jq]\mJu\C!:KdcrU'slmJuYT!:BjT!.jQhmYUB3!.Y~>
+Ja2LbrrC.*"p!rR!:&hLrosI`rTX@_rTX@_rp'C]rosLalLb/Wl3dUWl2^,7!:&hLlK[[8#jMET
+l2^)Ll2^_Hp&G-Y!<26c!9sRLp&P'V!<DEa!!)<`!;#I[!9sRL!:&kK!!)<`!!qiil2^)Ll2Uh_
+lMghdl2^)Lr9=^klKSB7l2UhLl2^,7!;c!S!<26j!:&hLlKS?Ll2^,G!!;Ec!<26`!;Ga`!9sRL
+!:&hLrTX@_rTX@_rTa"Ts6:!ml2^)Ll2^)Ll2^)Lq<@q[rosI`rosI`n`g5Wl2^)LgZf"Dl2UhL
+l2Uh_l2Uh`l2Uh_l2Uh_l2Uh]lM^e_lM^eZl2Uh`l2Uh`l2UhDl377Rl2^,7!:&hP!9sRL!5e"%
+!:'O`#jMETl2^,7!:'L_rTX[hl2^)L!9sRL!.jEdlA=g+!.Y~>
+J`c4ZrrC.&#63iJs5rJDroO4\rT4+[rT4+[roX.YroO7]k4ScSjpV4Ok5XT+s5rJDk2u"0#j20L
+k5XTDk5Y>@pAY0Us8M-_s5s@DpAb*R!WV<]rrD3\s7>@Ws5s@Ds5rJCrrD3\rs7cek5XTDk5YJ[
+k5YG`k5XTDr8nIgk2u^+k5YJDk5XT+s8(mOs8M-fs5rJDk2u^Dk5XT?rrV?_s8M-\s7bX\s5s@D
+s5rJDrT4+[rT4+[rT<bPs5jaik5XTDk5XTDk5XTDq;q\WroO4\roO4\n`BuSk5XTDgZAb@k5YJD
+k5YJ[joGG\joGG[joGG[joGGYk5PD[k5PDVjoGG\joGG\joGG@jp(kJk5XT+s6A_Ls5s@Ds2*n!
+s5s=\#j20Lk5XT+s5s:[rT4Fdk5XTDs5s@Ds+0<`k)&7#!.Y~>
+JaVdjrrD!F!!)uc!!)ucrrE#c!!)uc!W_WgrpBadrpBadp$Ui?!U]semf*:dmJm7dmed(amK*CV
+mf!4dmJm7dmf*:emK3IW!!)f^r;ZicrW)larW)obrW!)h!:K7TrU0Xb"muBY!:Bj[mJm7cmJm7d
+mf*7qmJu\C!:BgemJm7T!<)<i!:K7Tmd:)SmJm7dmKWa[mJm7TmK!7S!!)c]r;[#h!:BjT!<2Bd
+!<2EZ!!M]imd:)Jmf!4PmdpMZmK<OX!:K:S!;Z$_!<)<c!<)<c!;#U_!:K7Tmd:)2mJm7dmJm7d
+mJm7dmJm7bmJm7dmJm7dmJm7amKrs^!:BjT!:BjT!;l0a!<)<c!<)<c!9EPJ!<2Bd!<2Bd!:9+X
+!:K7Tmd:(nmKWa[mJu\C!!*#drrE)e!<DQe!<;Hp!:K7TmJm7T!:K7TJaS*WMXLKEJ,~>
+Ja2LbrrD!B!!)u_!!)u_rrE#_!!)u_!W_KcrosI`rosI`p$1Q;!U9[alMgk`l2Uh`lMLY]l2gtN
+lM^e`l2Uh`lMgkal2q%O!!)fZr;Zi_rW)l]rW)o^rW!)d!:&hLrTa@^"mQ*Q!9sRWl2Uh_l2Uh`
+lMghml2^,7!9sOal2UhL!<)0e!:&hLlKSBKl2Uh`l3@=Sl2UhLl2^hK!!)cYr;[#d!9sRL!<26`
+!<29V!!MQelKSBBlM^eLlLY)Vl3%+P!:&kK!;Ym[!<)0_!<)0_!;#I[!:&hLlKSB*l2Uh`l2Uh`
+l2Uh`l2Uh^l2Uh`l2Uh`l2Uh]l3[OV!9sRL!9sRL!;l$]!<)0_!<)0_!9EDF!<26`!<26`!:8tT
+!:&hLlKSAfl3@=Sl2^,7!!*#`rrE)a!<DEa!<;<l!:&hLl2UhL!:&hLJa.gOMX(3AJ,~>
+J`c4ZrrD!>!<<#[!<<#[s8W&[!<<#[!rqE_roO4\roO4\p#b<7!TsF]k5YJ\joGG\k5>8YjoYSF
+k5PD\joGG\k5YJ]jobYGs8VlVrVll[rr;oYrr;rZrr3,`s5rJDrT=+Z"m5jIs5s@SjoGG[joGG\
+k5YGik5XT+s5s@]k5YJDs8D'as5rJDk2u^CjoGG\jp1qKk5YJDk5YGC!<;fUrVm&`s5s@Ds8M-\
+s8M0RrrhKak2u^:k5PDHk4J]Rjok_Hs5rJCs7tdWs8D'[s8D'[s7>@Ws5rJDk2u^"joGG\joGG\
+joGG\joGGZjoGG\joGG\joGGYjpM.Ns5s@Ds5s@Ds81pYs8D'[s8D'[s5`;Bs8M-\s8M-\s6SkP
+s5rJDk2u]^jp1qKk5XT+s8W)\s8W,]!WV<]s8V3hs5rJDk5YJDs5rJDJ`_OGMWXp=J,~>
+JaVdjrrCsE!!*#d!!*#d!s%cW!<2Bd!<2Bf!:BjcmJm7cmJm7Xmed%bmf!1dmeQn`med(`mJm7d
+mf*:dmK*CVmem+dmK!4Rr;[Ar!:Bgemd:&Tmd:&Tmd:)OmcjcRmJm7dme-Y\mJm7TmJm7dmLK<c
+!:BjT!:BjT!:BjTmK!7S!!*#d!W_WgrU'mjmJu\C!:BjcmJm7_mK!=UrW!)h!:K7TrU0%Qq!RhU
+nEpJ\mJuYTmdC&SqX4%WjmE*KrpBadrpBadhsLIErU0[cs6fme!U]samKN[ZmJu\C!;l0m!:K7T
+md:)CmJu\C!;#UY!<)<c!<)<c!:K7T!<)<c!<)<c!:K7T!<2Bd!<2Bd!64F0!:K7T!<2Bd!<2Ed
+!!Vcj!:BjTrW)rcrrE)errE&d!!%T<JaSHarr@Q~>
+Ja2LbrrCsA!!*#`!!*#`!s%WO!<26`!<26b!9sR_l2Uh_l2UhTlMLV^lM^b`lM:J\lMLY\l2Uh`
+lMgk`l2gtNlMU\`l2^eJr;[An!9sOalKS?LlKS?LlKSBGlKS?Nl2Uh`lLk5Xl2UhPl2Uh`l43m[
+!9sRL!9sRL!9sRLl2^hK!!*#`!W_KcrTXUfl2^,7!9sR_l2Uh[l2^nMrW!)d!:&hLrT`bMq!.PQ
+nEL2Xl2^)LlK\?KqWdbSjlugGrosI`rosI`hs(1ArTaC_s6BUa!U9[]l377Rl2^,7!;l$i!:&hL
+lKSB7l2^,7!;#IU!<)0_!<)0_!:K+P!<)0_!<)0_!:K+P!<26`!<26`!64:,!:&hL!<26`!<29`
+!!VWf!9sRLrW)r_rrE)arrE&`!!%T8Ja/0Yrr@Q~>
+J`c4ZrrCs=!<<&\!<<&\"97NGs8M-\s8M-^s5s@[joGG[joGGPk5>5Zk5PA\k5,)Xk5>8XjoGG\
+k5YJ\joYSFk5G;\k5YDBrVmDjs5s@]k2u^Dk2u^Dk2u^?k3DsJk5YJ\k4\iTjoGGLjoGG\jq%LS
+s5s@Ds5s@Ds5s@Dk5YGC!<<&\!rqE_rT4@bk5XT+s5s@[joGGWjoPMErr3,`s5rJDrT<MIpu_;M
+nE'rTk5XTDk2u[CqW@MOjlQRCroO4\roO4\hrXq=rT=.[s5s@]!TsFYjp(kJk5XT+s81pes5rJD
+k2u^+k5XT+s7>@Qs8D'[s8D'[s6f"Ls8D'[s8D'[s6f"Ls8M-\s8M-\s2O1(s5rJDs8M-\s8M0\
+rrqQbs5s@Drr;u[s8W,]s8W)\!<7W4J`_mQrr@Q~>
+JaVdjrrCpD"p")Z!:K7TrU'jimd:)CmJuD;!s%`hmf!1imJu\C!:KU^!U]sXmKN[ZmJu\C!<2C(
+!:K7Tmd:)CmJm7T!:K7Tmd:)C!:K7TmdC#R!:K^arU0Xbs6fme"RZ9XmK!4Rrr<&erW)rc!!*#d
+!!)NV!!)ucrr<Jq!:BgemJu\C!:BgerU'XcrU'XcmHsrSrU'dgmd:)CrW)rc!!)i_rW)udrr<&e
+qZ-6UrW)?R$NTV_!:K7T!:BjT!;Gp\!93DH!<)<c!<)<c!86cC!:BjT!;Psb!:BjT!;l0a!<2Bj
+!:BjT!:BjdmJm7YmJm7dmJm7dmJm76mJm7cmJm7cmJm7.mJm7cmJm7cmL90a!:K7TmJuYTmd:&T
+rpBadrU'XcrU'XcJaS*WN:-]GJ,~>
+Ja2LbrrCp@"p!rR!:&hLrTXRelKSB7l2]u3!s%TdlM^bel2^,7!:'=Z!U9[Tl377Rl2^,7!<27$
+!:&hLlKSB7l2UhL!:&hLlKSB7!:&hLlK\<J!:'F]rTa@^s6BUa"R6!Pl2^eJrr<&arW)r_!!*#`
+!!)NR!!)u_rr<Jm!9sOal2^,7!9sOarTX@_rTX@_mHOZOrTXLclKSB7rW)r_!!)i[rW)u`rr<&a
+qZ-6QrW)?N$NTJW!:&hL!9sRL!;GdX!938D!<)0_!<)0_!86W?!9sRL!;Pg^!9sRL!;l$]!<26f
+!9sRL!9sR`l2UhUl2Uh`l2Uh`l2Uh2l2Uh_l2Uh_l2Uh*l2Uh_l2Uh_l4!aY!:&hLl2^)LlKS?L
+rosI`rTX@_rTX@_Ja.gON9^ECJ,~>
+J`c4ZrrCp<#63iJs5rJDrT4=ak2u^+k5XT+"97N`k5PAak5XT+s5s+V!TsFPjp(kJk5XT+s8M-u
+s5rJDk2u^+k5YJDs5rJDk2u^+s5rJDk2uXB!9X1YrT=+Zs5s@]"QoaHk5YDBs8N)]rr;u[!<<&\
+!<;QN!<<#[s8NMis5s@]k5XT+s5s@]rT4+[rT4+[mH+EKrT47_k2u^+rr;u[!<;lWrr<#\s8N)]
+qu?9Mrr;BJ$ifAOs5rJDs5s@Ds7b[Ts5N/@s8D'[s8D'[s4QN;s5s@Ds7k^Zs5s@Ds81pYs8M-b
+s5s@Ds5s@\joGGQjoGG\joGG\joGG.joGG[joGG[joGG&joGG[joGG[jph@Qs5rJDk5XTDk2u^D
+roO4\rT4+[rT4+[J`_OGN9:-?J,~>
+JaVdjrrCmC"9@iimK!.P"9@iimJuD;"9@ii!:Kab&+0Gc!!)EemJm7TmJu\C!;#UY!<2Bd!<2Bf
+!:BjdmJm7dmKWa[mJuYTmK!4R!!*#d!<DQe!!;Qgmem+dmK!7S"T[rjmJm7dmJm7dmJm7dmK3IW
+!:Kgds6fmerpBad^?u.)md:&Tmf!4dmJm7cmJm7amf!1fmJu\I!;Psb!:BjT!:T=U!<2Bm!:K7T
+!:BjTmK!(N"9@iimJsHYrW)Z[rW)i`!!)ucrrE&drrE#c!!)WY"p")Z!:K7TK^Jg?rU'mjmJu\C
+!:Bjcmf*:cmJm7cmJm6<mXae`mf*9;~>
+Ja2LbrrCm?"9@]el2^_H"9@]el2]u3"9@]e!:'I^&*a/[!!)9al2UhLl2^,7!;#IU!<26`!<26b
+!9sR`l2Uh`l3@=Sl2^)Ll2^eJ!!*#`!<DEa!!;EclMU\`l2^hK"T[ffl2Uh`l2Uh`l2Uh`l2q%O
+!:'O`s6BUarosI`^?Pk%lKS?LlM^e`l2Uh_l2Uh]lM^bbl2^,A!;Pg^!9sRL!:T1Q!<26i!:&hL
+!9sRLl2^YF"9@]el2\$QrW)ZWrW)i\!!)u_rrE&`rrE#_!!)WU"p!rR!:&hLK^&O;rTXUfl2^,7
+!9sR_lMgk_l2Uh_l2Ug8l@J5XlMgj7~>
+J`c4ZrrCm;"TRWak5Y>@"TRWak5XT+"TRWas5s7Z&*EoSs8V6]k5YJDk5XT+s7>@Qs8M-\s8M-^
+s5s@\joGG\jp1qKk5XTDk5YDB!<<&\!WV<]rrV?_k5G;\k5YGC"om`bk5YJ\joGG\joGG\jobYG
+s5s=\s5s@]roO4\^?,V!k2u^Dk5PD\joGG[joGGYk5PA^k5XT9s7k^Zs5s@Ds6o(Ms8M-es5rJD
+s5s@Dk5Y8>"TRWak5VXIrr;]Srr;lX!<<#[s8W)\s8W&[!<;ZQ#63iJs5rJDK]W:7rT4@bk5XT+
+s5s@[k5YJ[joGG[joGF4k(2ZPk5PF3~>
+JaVdjrrCjBrW)c^rW)*K#6=/lmJuYTmem+rmJm7TmJuYTmJuYT!:K7Tp$Me[rU'XcrU'XcrU'Xc
+rU'^emdC&SqsG=%md:&TmJu\C!:BjT!!)Ee!:BjTmJuYT!<2Bd!<)<c!<2Bj!:K7Tmd:(`mf*7i
+mJu\C!<)<c!;Psj!:K7Tmd:)C!:K7Tmf!4ZmKN[ZmJu\C!:fIW!<)<i!:BjTmJm7dmJm7amKN[Z
+mJu\C!4;1f!<2E[!8m2I!:BjT!.sV=!<2Bd!<2Bd!;Ps^!<2Bd!<2Bd!.jQhmYUB3!.Y~>
+Ja2LbrrCj>rW)cZrW)*G#6=#hl2^)LlMU\nl2UhLl2^)Ll2^)L!:&hLp$)MWrTX@_rTX@_rTX@_
+rTXFalK\?Kqs#%!lKS?Ll2^,7!9sRL!!)9a!9sRLl2^)L!<26`!<)0_!<26f!:&hLlKSAXlMghe
+l2^,7!<)0_!;Pgf!:&hLlKSB7!:&hLlM^eVl377Rl2^,7!:f=S!<)0e!9sRLl2Uh`l2Uh]l377R
+l2^,7!4;%b!<29W!8m&E!9sRL!.sJ9!<26`!<26`!;PgZ!<26`!<26`!.jEdlA=g+!.Y~>
+J`c4ZrrCj:rr;fVrr;-C#QNrdk5XTDk5G;jk5YJDk5XTDk5XTDs5rJDp#Z8SrT4+[rT4+[rT4+[
+rT41]k2u[CqrSdrk2u^Dk5XT+s5s@Ds8V6]s5s@Dk5XTDs8M-\s8D'[s8M-bs5rJDk2u]Pk5YGa
+k5XT+s8D'[s7k^bs5rJDk2u^+s5rJDk5PDRjp(kJk5XT+s7,4Os8D'as5s@Dk5YJ\joGGYjp(kJ
+k5XT+s0Uq^s8M0Ss52rAs5s@Ds+9A5s8M-\s8M-\s7k^Vs8M-\s8M-\s+0<`k)&7#!.Y~>
+JaVdjrrD!FlN$8="9@iimdB`J!q$$grpKddrU'Xcp?hn\rU'XcrU'Xcq<mqVrpBmhmJuYTrU'Xc
+rpBmhmJuYTrpBadrpBadp[/"]rpBadrpBad[dF7umJuYToBlSYrpBadrpBadrpKdd!:Kgdp[/"]
+rpBadrpBadm-XiRrU'XcrU'XcrU'XcrpBadrpBadZ0qSkp?qn[g@"q?JaNd2!:K7Tmd:)KmKN[Z
+mJu\C!.jQhmYL<2!.Y~>
+Ja2LbrrD!BlN$89"9@]elK\$B!pTacrp'L`rTX@_p?DVXrTX@_rTX@_q<IYRrosUdl2^)LrTX@_
+rosUdl2^)LrosI`rosI`pZ__YrosI`rosI`[d!tql2^)LoBH;UrosI`rosI`rp'L`!:'O`pZ__Y
+rosI`rosI`m-4QNrTX@_rTX@_rTX@_rosI`rosI`Z0M;gp?MVWg?SY;Ja*L*!:&hLlKSBCl377R
+l2^,7!.jEdlA4a*!.Y~>
+J`c4ZrrD!>li6;5"TRWak2u@:!p9O_roX7\rT4+[p>uATrT4+[rT4+[q<%DNroO@`k5XTDrT4+[
+roO@`k5XTDroO4\roO4\pZ;JUroO4\roO4\[cR_mk5XTDoB$&QroO4\roO4\roX7\!9X:\pZ;JU
+roO4\roO4\m,e<JrT4+[rT4+[rT4+[roO4\roO4\Z0)&cp?)ASg?/D7J`[4"s5rJDk2u^;jp(kJ
+k5XT+s+0<`k(r1"!.Y~>
+JaVdjrrCjBr;cfa!W_ZVrW(dBrW)$I!!*#d!!*#d!!)ZZrW)c^rW)ob!!)ucr;Zug!:K7TrU'Xc
+q<e4_rU'XcrU'Xc[dO+poBlSYrU(-qmd:)C!:K7Tmd:)C!!)i_!!)uc!!)uc!!(pE!!)uc!!)uc
+!!'@n"9@iimK!%M"9@iimJuA:!!)uco`0X4('*b&mJm7T!:K7TmJu\C!:K7TmJuYTJaS*WL[P0B
+J,~>
+Ja2LbrrCj>r;cf]!W_NNrW(d>rW)$E!!*#`!!*#`!!)ZVrW)cZrW)o^!!)u_r;Zuc!:&hLrTX@_
+q<@q[rTX@_rTX@_[d*hloBH;UrTXjmlKSB7!:&hLlKSB7!!)i[!!)u_!!)u_!!(pA!!)u_!!)u_
+!!'@j"9@]el2^VE"9@]el2]r2!!)u_o`0X0('*V"l2UhL!:&hLl2^,7!:&hLl2^)LJa.gOL[+m>
+J,~>
+J`c4ZrrCj:rVuiY!rqEFrr:g:rr;'A!<<&\!<<&\!<;]Rrr;fVrr;rZ!<<#[rVm#_s5rJDrT4+[
+q;q\WrT4+[rT4+[[c[ShoB$&QrT4Uik2u^+s5rJDk2u^+s8VoW!<<#[!<<#[!<:s=!<<#[!<<#[
+!<9Cf"TRWak5Y5="TRWak5XQ*!<<#[p&B[,(B<Osk5YJDs5rJDk5XT+s5rJDk5XTDJ`_OGLZ\U:
+J,~>
+JaVdjrrCmC"T[rjmJm7dmKN[Z!:BjT!8m2I!:BjT!9EPP!:K7Tmd:)ImK<OX!:Bjdme-Y\me-XS
+me-YHmJm7dmJm7dmK3IWmK!4R!!)uc!!%iC"9@iimdC&S"RZ6imK!+O"p")Z!:K7TjmE*KrpBad
+rpK^bJaWO*rW)udrrE)errE)e!!)ucrW%N;JaS9\rr@Q~>
+Ja2LbrrCm?"T[ffl2Uh`l377R!9sRL!8m&E!9sRL!9EDL!:&hLlKSBAl3%+P!9sR`lLk5XlLk4O
+lLk5Dl2Uh`l2Uh`l2q%Ol2^eJ!!)u_!!%i?"9@]elK\?K"R5sel2^\G"p!rR!:&hLjlugGrosI`
+rp'F^Ja37"rW)u`rrE)arrE)a!!)u_rW%N7Ja/!Trr@Q~>
+J`c4ZrrCm;"om`bk5YJ\jp(kJs5s@Ds52rAs5s@Ds5`;Hs5rJDk2u^9jok_Hs5s@\k4\iTk4\hK
+k4\i@joGG\joGG\jobYGk5YDB!<<#[!<7l;"TRWak2u[C"Qoaak5Y;?#63iJs5rJDjlQRCroO4\
+roX1ZJ`csorr<#\s8W,]s8W,]!<<#[rr7Q3J`_^Lrr@Q~>
+JaVdjrrCpD&HM7e!:K7T!:K7T!:Bgemd:)6mKN[ZmJu\C!9EPN!:BjT!;,[`!:K7Tmd:)Pmf!4\
+mf!3Smf!4MmJm7cmJm7cmK3IWmK!7S!!*#d!!&5N!!)uc!!)uc%fl%c!:BjT!:BjT!:BjT!;u6b
+!<2Bd!<2Bd!9NVV!:K7Tmd:&TmJuYTKC8F5s6^!imd:)Cp&K[3JaSE`rr@Q~>
+Ja2LbrrCp@&HM+]!:&hL!:&hL!9sOalKSB.l377Rl2^,7!9EDJ!9sRL!;,O\!:&hLlKSBHlM^eX
+lM^dOlM^eIl2Uh_l2Uh_l2q%Ol2^hK!!*#`!!&5J!!)u_!!)u_%fkn[!9sRL!9sRL!9sRL!;u*^
+!<26`!<26`!9NJR!:&hLlKS?Ll2^)LKBi.1s69^elKSB7p&K[/Ja/-Xrr@Q~>
+J`c4ZrrCp<&c_"Us5rJDs5rJDs5s@]k2u^&jp(kJk5XT+s5`;Fs5s@Ds7GFXs5rJDk2u^@k5PDT
+k5PCKk5PDEjoGG[joGG[jobYGk5YGC!<<&\!<88F!<<#[!<<#[&-(eSs5s@Ds5s@Ds5s@Ds8;!Z
+s8M-\s8M-\s5iANs5rJDk2u^Dk5XTDKBDn-s5jIak2u^+pA]^+J`_jPrr@Q~>
+M=1?CrU'Xcr9aObn*^2UhsLIErpBadrpKdd"muBY!:BjdmJm7VmJm7cmJm7cmK3IWmK!7S!!*#d
+!!)*JrW)TY!!*#d!!*#d!!)uc"9@iimK!(N"9@iimJt/m!!)uc!!)uc!!)*J"9@iimJuYB!!)uc
+!!)uc!!)l`"p")Z!:K7TrU'XcrU'XcrU'XcT^Dd[rpBadrpBadrU'dgmJm7Tr;cib!!*#d!!)uc
+!!)uc!!)-K$NTSpmJm7TmJu\C!.jP<mf!1fmJu\R!!M]imd:)Smf!4`mJm7cmJm7cmJm6<mXaem
+mf*9;~>
+M<b'?rTX@_r9=7^n*9oQhs(1ArosI`rp'L`"mQ*Q!9sR`l2UhRl2Uh_l2Uh_l2q%Ol2^hK!!*#`
+!!)*FrW)TU!!*#`!!*#`!!)u_"9@]el2^YF"9@]el2\`e!!)u_!!)u_!!)*F"9@]el2^5:!!)u_
+!!)u_!!)l\"p!rR!:&hLrTX@_rTX@_rTX@_T]uLWrosI`rosI`rTXLcl2UhLr;ci^!!*#`!!)u_
+!!)u_!!)-G$NTGll2UhLl2^,7!.jD8lM^bbl2^,J!!MQelKSBKlM^e\l2Uh_l2Uh_l2Ug8l@J5e
+lMgj7~>
+M<=d;rT4([r8mtZn)jWMhrXq=roO4\roX7\"m5jIs5s@\joGGNjoGG[joGG[jobYGk5YGC!<<&\
+!<;-Brr;WQ!<<&\!<<&\!<<#["TRWak5Y8>"TRWak5W?]!<<#[!<<#[!<;-B"TRWak5Xi2!<<#[
+!<<#[!<;oX#63iJs5rJDrT4+[rT4+[rT4+[T]Q7SroO4\roO4\rT47_k5YJDrVulZ!<<&\!<<#[
+!<<#[!<;0C$ifAhk5YJDk5XT+s+0;4k5PA^k5XTBrrhKak2u^Ck5PDXjoGG[joGG[joGF4k(2Z]
+k5PF3~>
+MXCHErpBpimd:)C!<2Bf!:BjVmf*:FmJm7cmJm7cmem.cmJm7cmJm7VmJm7dmJm7dmK3IWmK!4R
+!!)uc!!)9Op&OpV!!)uc!!)uc#lsD]!:K7Tmd:)PmKN[ZmJu\C!5n4)!<2Bd!<2Bd!9EPP!:K7T
+md:)BmJm7dmJm7dmJm7^mK<OX!:BjamJm7dmJm7dmJm6YmKN[ZmJu\C!;l0g!:BjT!:Bj7mem.b
+mJm7dmJm6=mKEUY!:BjTqZ-Za!!*#d"9@iimK!.P!!*#d!!*#d!!%T<JaSilrr@Q~>
+MWt0ArosXelKSB7!<26b!9sRRlMgkBl2Uh_l2Uh_lMU__l2Uh_l2UhRl2Uh`l2Uh`l2q%Ol2^eJ
+!!)u_!!)9Kp&OpR!!)u_!!)u_#ls8U!:&hLlKSBHl377Rl2^,7!5n(%!<26`!<26`!9EDL!:&hL
+lKSB:l2Uh`l2Uh`l2UhZl3%+P!9sR]l2Uh`l2Uh`l2UgUl377Rl2^,7!;l$c!9sRL!9sR3lMU_^
+l2Uh`l2Ug9l3.1Q!9sRLqZ-Z]!!*#`"9@]el2^_H!!*#`!!*#`!!%T8Ja/Qdrr@Q~>
+MWOm=roO@ak2l[+!<2*^!9O:Nk5PG>joGG[joGG[k5G>[joGG[joGGNjoGG\joGG\jobYGk5YDB
+!<<#[!<;<GpAasN!<<#[!<<#[$30/Ms5rJDk2u^@jp(kJk5XT+s23t!s8M-\s8M-\s5`;Hs5rJD
+k2u^2joGG\joGG\joGGVjok_Hs5s@YjoGG\joGG\joGFQjp(kJk5XT+s81p_s5s@Ds5s@/k5G>Z
+joGG\joGF5joteIs5s@Dqu?]Y!<<&\"TRWak5Y>@!<<&\!<<&\!<7W4J``9\rr@Q~>
+MXCHErpBgfmK!7S!W_WgrpBadna?DWg$\P6!U]sdmJm7cmJm7]mKN[ZmJu\C!8$Z<!9rnO!<2Bd
+!<2Bd!<)<c!<2Bd!<2Bd!5n4/!:K7Tmd:)9mJm7dmJm7dmJm7SmKN[ZmJu\C!;>j[!;Z$e!:K7T
+md:(FmK<OX!:Bj_med(7me$SYmJm6?mK*CVmdU;WmK3IWmK!.P"p")Z!:K7TJaS*WQ1"YPJ,~>
+MWt0ArosObl2^hK!W_KcrosI`n`p,Sg$882!U9[`l2Uh_l2UhYl377Rl2^,7!8$N8!9rbK!<26`
+!<26`!<)0_!<26`!<26`!5n(+!:&hLlKSB1l2Uh`l2Uh`l2UhOl377Rl2^,7!;>^W!;Yma!:&hL
+lKSA>l3%+P!9sR[lMLY3lLb/Ul2Ug;l2gtNlL=lSl2q%Ol2^_H"p!rR!:&hLJa.gOQ0SALJ,~>
+MWOm=roO7^joGDC!W_?_roO1\n`KiOg#i#.!TsF\joGG[joGGUjp(kJk5XT+s4?E4s68YGs8M-\
+s8M-\s8D'[s8M-\s8M-\s23t's5rJDk2u^)joGG\joGG\joGGKjp(kJk5XT+s7YUSs7td]s5rJD
+k2u]6jok_Hs5s@Wk5>8/k4ScQjoGF7joYSFk4/KOjobYGk5Y>@#63iJs5rJDJ`_OGQ0/)HJ,~>
+L@,*CmK!7S!W_WgrpBadna?DWeaED:qsFFarpBadrpBadp$Mq_mJuYTfBrbAmJuYTlg=`QrU'Xc
+rU'afmd:)RmJm7cmJm7)mK<OX!:BjJmJm7cmJm7cmJm7SmK<OX!:Bj_me-YYmK<OX!:BiUmf!4a
+mdpM/mf!4TmJm7cmJm7cmJm6SmJm7dmJm7dmeQq`mf*:dmJm7dmJm7amK<OX!:Bi<mXaejmf*9;~>
+L?\g?l2^hK!W_KcrosI`n`p,Sea!,6qs".]rosI`rosI`p$)Y[l2^)LfBNJ=l2^)LlfnHMrTX@_
+rTXIblKSBJl2Uh_l2Uh%l3%+P!9sRFl2Uh_l2Uh_l2UhOl3%+P!9sR[lLk5Ul3%+P!9sQQlM^e]
+lLY)+lM^ePl2Uh_l2Uh_l2UgOl2Uh`l2Uh`lM:M\lMgk`l2Uh`l2Uh]l3%+P!9sQ8l@J5blMgj7~>
+L?8O;joGDC!W_?_roO1\n`KiOe`Ql2qrRnYroO4\roO4\p#ZDWk5XTDfB*59k5XTDlfJ3IrT4+[
+rT44^k2u^BjoGG[joGG!jok_Hs5s@BjoGG[joGG[joGGKjok_Hs5s@Wk4\iQjok_Hs5s?Mk5PDY
+k4J]'k5PDLjoGG[joGG[joGFKjoGG\joGG\k5,,Xk5YJ\joGG\joGGYjok_Hs5s?4k(2ZZk5PF3~>
+L[G6Emd:)SmK*CV!<2Bd!:fLQ!8QuF!:BjT!;l0g!:K7Tmd:)Hmf!4<mKN[ZmJu\C!1!!O!5n7(
+!;,^Y!;Gp\!1iQO!;u9_!7C3;!:BjT!:T=U!<2Bd!<2Bd!1<0S!<)<g!:K7TmeZtcmJm7cmJm7c
+mJm7amf!3;mXaeimf*9;~>
+L["sAlKSBKl2gtN!<26`!:f@M!8QiB!9sRL!;l$c!:&hLlKSB@lM^e8l377Rl2^,7!0ujK!5n+$
+!;,RU!;GdX!1iEK!;u-[!7C'7!9sRL!:T1Q!<26`!<26`!1<$O!<)0c!:&hLlMCP_l2Uh_l2Uh_
+l2Uh]lM^d7l@J5alMgj7~>
+LZS[=k2l[CjoPPF!<2*\!:f4I!8Q]>s5s@Ds81p_s5rJDk2u^8k5PD4jp(kJk5XT+s-;aGs24!u
+s7GIQs7b[Ts./<Gs8;$Ws3]s3s5s@Ds6o(Ms8M-\s8M-\s-VpKs8D'_s5rJDk55/[k5YJ[joGG[
+joGGYk5PC3k(2ZYk5PF3~>
+M!b6CrpBadrpBgfmK!7S!!)QWq#K7="p")Z!:K7TqsFRemJuYTp?qVSh!P.BrpBadrpBadRdTkL
+bO5'(!U]sdmK3IW!:Kgdr9j7YSaQIWq<eFemJuYTmJt`("p")Z!:K7Tn*UA[md:)CmJr@:o`4[Q
+p&K[3JaSlmrr@Q~>
+M!=s?rosI`rosObl2^hK!!)QSq#K79"p!rR!:&hLqs":al2^)Lp?M>Oh!+k>rosI`rosI`Rd0SH
+bNed$!U9[`l2q%O!:'O`r9EtUSa-1Sq<A.al2^)Ll2];u"p!rR!:&hLn*1)WlKSB7l2Zq2o`4[M
+p&K[/Ja/Terr@Q~>
+Lun[;roO1\roO7^joGDC!!)QOq#K75#63iJs5rJDqrS%]k5XTDp?))Kgu\V:roO4\roO4\Rca>D
+bNANu!TsF\jobYGs5s=\r9!_QS`]qOq;qn]k5XTDk5Wom#63iJs5rJDn)aiSk2u^+k5UP*p&F^I
+pA]^+J``<]rr@Q~>
+M=(?DrU'XcrpBgfmK!7S!!)QWrrC^>!!*#d!!*#d!!)oarW)KVrW(X>!!)uc!!)uc!!&ARrW'k(
+rW)i`!!*#drrE)e!s%cW!;Z'^!1N<Y!:BjT!;l0i!:BgemJm7T!:fIW!<)<c!<)<c!:]CV!<2Bd
+!<2Bd!:T=Y!:BjT!0HUP!:K7T!:Kdc!U]sWmf!3;mXaeimf*9;~>
+M<Y'@rTX@_rosObl2^hK!!)QSrrC^:!!*#`!!*#`!!)o]rW)KRrW(X:!!)u_!!)u_!!&ANrW'k$
+rW)i\!!*#`rrE)a!s%WO!;YpZ!1N0U!9sRL!;l$e!9sOal2UhL!:f=S!<)0_!<)0_!:]7R!<26`
+!<26`!:T1U!9sRL!0HIL!:&hL!:'L_!U9[SlM^d7l@J5alMgj7~>
+M<4d<rT4([roO7^joGDC!!)QOrrC^6!<<&\!<<&\!<;rYrr;NNrr:[6!<<#[!<<#[!<8DJrr9mu
+rr;lX!<<&\s8W,]"97NGs7tgVs-i'Qs5s@Ds81pas5s@]k5YJDs7,4Os8D'[s8D'[s7#.Ns8M-\
+s8M-\s6o(Qs5s@Ds,c@Hs5rJDs5s:[!TsFOk5PC3k(2ZYk5PF3~>
+MXCHEqsFLcmK!7S!W_WgnF$;Vg$Sh?rU'XcrU'[dme-YSmK<OX!:Bi<mcNp?!:BjT!6+@/!:BjT
+!;l0h!:K7Tmd:&TrpBadqsFRemJuYTSF-R]md:)CmK!4R!s%`hmf!1gmJuYTna6AWrpBadrpBad
+nEp8VrU'XcrU'Xcn*^/TOR</MmdB`JoBl_]mJuYTJaS*WPj\POJ,~>
+MWt0Aqs"4_l2^hK!W_KcnEU#Rg$/P;rTX@_rTXC`lLk5Ol3%+P!9sQ8lK7@7!9sRL!6+4+!9sRL
+!;l$d!:&hLlKS?LrosI`qs":al2^)LSE^:YlKSB7l2^eJ!s%TdlM^bcl2^)Ln`g)SrosI`rosI`
+nEKuRrTX@_rTX@_n*9lPOQllIlK\$BoBHGYl2^)LJa.gOPj88KJ,~>
+MWOm=qrRq[joGDC!W_?_nE0`Ng#`;7rT4+[rT4.\k4\iKjok_Hs5s?4k2te/s5s@Ds2F+'s5s@D
+s81p`s5rJDk2u^DroO4\qrS%]k5XTDSE:%Uk2u^+k5YDB"97N`k5PA_k5XTDn`BiOroO4\roO4\
+nE'`NrT4+[rT4+[n)jWLOQHWEk2u@:oB$2Uk5XTDJ`_OGPihuGJ,~>
+MXLBBrpBadr9aObn*^2UamT-.oBle_md:)CmJqh+kjAWTmd:)CmJt;q"p")Z!:K7TqsOF`"7?0W
+!<)<c!<)<i!:K7Tmd:(HmJm7dmJm7dmK*CVmf!4dmKWa[!:K7TmJueF"p")Z!:K7Tf'`53O7!&L
+mdC#R!U]sdmJm7cmJm7cmKN[ZmJu\C!.jQhmZm5?!.Y~>
+MX(*>rosI`r9=7^n*9oQam/j*oBHM[lKSB7l2ZD#kir?PlKSB7l2\li"p!rR!:&hLqs+.\"6omO
+!<)0_!<)0e!:&hLlKSA@l2Uh`l2Uh`l2gtNlM^e`l3@=S!:&hLl2^A>"p!rR!:&hLf';r/O6QcH
+lK\<J!U9[`l2Uh_l2Uh_l377Rl2^,7!.jEdlBUZ7!.Y~>
+MWXg:roO1\r8mtZn)jWMal`U&oB$8Wk2u^+k5U"pkiN*Lk2u^+k5WKa#63iJs5rJDqr[nX"6TXG
+s8D'[s8D'as5rJDk2u]8joGG\joGG\joYSFk5PD\jp1qKs5rJDk5Xu6#63iJs5rJDf&l]+O6-ND
+k2uXB!TsF\joGG[joGG[jp(kJk5XT+s+0<`k*>*/!.Y~>
+JaVdjrrC40"9@iimJuqJ!!*#d!!*#d!!'.h!!)uc!!)uc!!)0L!!)uc!!)uc!!)KU!!*#d!!*#d
+!!(./!!*#d!!*#d!!)oarW)Z[!!*#d!!*#d!s%cW!<)<c!<)<c!3PYh!<)<c!<)<i!:K7Tmd:)M
+mJm7cmJm7cmJm7bmK<OX!:Bj7mf!3FmK*CVmf!1hmJm7T!<2Bd!<2Bd!<)<c!<2Bd!<2Bd!.jQh
+m[!;@!.Y~>
+Ja2LbrrC4,"9@]el2^MB!!*#`!!*#`!!'.d!!)u_!!)u_!!)0H!!)u_!!)u_!!)KQ!!*#`!!*#`
+!!(.+!!*#`!!*#`!!)o]rW)ZW!!*#`!!*#`!s%WO!<)0_!<)0_!3PMd!<)0_!<)0e!:&hLlKSBE
+l2Uh_l2Uh_l2Uh^l3%+P!9sR3lM^dBl2gtNlM^bdl2UhL!<26`!<26`!<)0_!<26`!<26`!.jEd
+lB^`8!.Y~>
+J`c4ZrrC4("TRWak5Y,:!<<&\!<<&\!<91`!<<#[!<<#[!<;3D!<<#[!<<#[!<;NM!<<&\!<<&\
+!<:1'!<<&\!<<&\!<;rYrr;]S!<<&\!<<&\"97NGs8D'[s8D'[s/kD`s8D'[s8D'as5rJDk2u^=
+joGG[joGG[joGGZjok_Hs5s@/k5PC>joYSFk5PA`k5YJDs8M-\s8M-\s8D'[s8M-\s8M-\s+0<`
+k*G00!.Y~>
+JaVdjrrC71"p")Z!:K7TqX+dmmd:)C!:K7TmJu\C!3PYh!<2Bd!<2Bd!9EPJ!<2Bd!<2Bd!:T=U
+!<)<c!<)<c!6ad1!<)<c!<)<d!:KO\qsFFarU'XcrU'afmd:)SmJm7dmJm6\mK<OX!:Bj\mJm7d
+mJm7dmJm7`mf!46mK<OX!:BiImLfNfmJuYT!:K7T!:BjTmJu\C!<)<c!<)<c!<)<c!.jQhm[*AA
+!.Y~>
+Ja2LbrrC7-"p!rR!:&hLqW\LilKSB7!:&hLl2^,7!3PMd!<26`!<26`!9EDF!<26`!<26`!:T1Q
+!<)0_!<)0_!6aX-!<)0_!<)0`!:'7Xqs".]rTX@_rTXIblKSBKl2Uh`l2UgXl3%+P!9sRXl2Uh`
+l2Uh`l2Uh\lM^e2l3%+P!9sQEl4O*^l2^)L!:&hL!9sRLl2^,7!<)0_!<)0_!<)0_!.jEdlBgf9
+!.Y~>
+J`c4ZrrC7)#63iJs5rJDqW87ek2u^+s5rJDk5XT+s/kD`s8M-\s8M-\s5`;Bs8M-\s8M-\s6o(M
+s8D'[s8D'[s3'O)s8D'[s8D'\s5s%TqrRnYrT4+[rT44^k2u^CjoGG\joGFTjok_Hs5s@TjoGG\
+joGG\joGGXk5PD.jok_Hs5s?Ajq@^Vk5XTDs5rJDs5s@Dk5XT+s8D'[s8D'[s8D'[s+0<`k*P61
+!.Y~>
+JaVdjrrC:2!!*#d!!*#d!!)l`!!*#d!!*#d!!&tc"p")Z!:K7TipI!Nmd:)CmJs<U!!)uc!!)uc
+!!*#drW)3N"p")Z!:K7TTC2[Yo^2n`md:)CmK!4Rp&N\3"p")Z!:K7TNU?cHrpBadrpC!kmd:)C
+!:Bi<mXae]mf*9;~>
+Ja2LbrrC:.!!*#`!!*#`!!)l\!!*#`!!*#`!!&t_"p!rR!:&hLip$^JlKSB7l2[mM!!)u_!!)u_
+!!*#`rW)3J"p!rR!:&hLTBcCUo]cV\lKSB7l2^eJp&N\/"p!rR!:&hLNTpKDrosI`ros^glKSB7
+!9sQ8l@J5UlMgj7~>
+J`c4ZrrC:*!<<&\!<<&\!<;oX!<<&\!<<&\!<9"[#63iJs5rJDioUIFk2u^+k5VLE!<<#[!<<#[
+!<<&\rr;6F#63iJs5rJDTB?.Qo]?AXk2u^+k5YDBpA`_+#63iJs5rJDNTL6@roO4\roOIck2u^+
+s5s?4k(2ZMk5PF3~>
+JaVdjrrC=3!!)uc!!)uc!!)l`"p")Z!:K7TVX=QemJuYTi9g^JmJuYTf^8_>rU'XcrU'XcrU'Xc
+rU'XcrU'Xcm-XiRrpBadrpBadrpBmhmJuYTl0\ZSmJuYTU@.^Tp[/.amJuYTq!S+]e*[29rpBad
+rpBadO6uuJrU'XcrU'^emdC&SJaS*WL@5'AJ,~>
+Ja2LbrrC=/!!)u_!!)u_!!)l\"p!rR!:&hLVWn9al2^)Li9CFFl2^)Lf]iG:rTX@_rTX@_rTX@_
+rTX@_rTX@_m-4QNrosI`rosI`rosUdl2^)Ll08BOl2^)LU?_FPpZ_k]l2^)Lq!.hYe*6o5rosI`
+rosI`O6Q]FrTX@_rTXFalK\?KJa.gOL?ed=J,~>
+J`c4ZrrC=+!<<#[!<<#[!<;oX#63iJs5rJDVWJ$]k5XTDi8t1Bk5XTDf]E26rT4+[rT4+[rT4+[
+rT4+[rT4+[m,e<JroO4\roO4\roO@`k5XTDl/i-Kk5XTDU?;1LpZ;VYk5XTDpu_SUe)gZ1roO4\
+roO4\O6-HBrT4+[rT41]k2u[CJ`_OGL?AL9J,~>
+JaVdjrrBXu"9@iimJuG<!!)uc!!)uc!!(./rW(gCrW(O;!!*#d!!*#d!!)oa!!*#d!!*#d!!)<P
+&ch@f!:K7TmJuYTmd:)CmJuYTlgF`Pg$Sh?rU'XcrU'Xcd-gl5o'ZJWq!J7bmJuYTea<D;rU'Xc
+rU'Xcj6lX@YjV2bJaS*WMXLKEJ,~>
+Ja2LbrrBXq"9@]el2^#4!!)u_!!)u_!!(.+rW(g?rW(O7!!*#`!!*#`!!)o]!!*#`!!*#`!!)<L
+&ch4^!:&hLl2^)LlKSB7l2^)Llg"HLg$/P;rTX@_rTX@_d-CT1o'62Sq!%t^l2^)Le`m,7rTX@_
+rTX@_j6H=<Yj1o^Ja.gOMX(3AJ,~>
+J`c4ZrrBXm"TRWak5XW,!<<#[!<<#[!<:1'rr:j;rr:R3!<<&\!<<&\!<;rY!<<&\!<<&\!<;?H
+'*%+Vs5rJDk5XTDk2u^+k5XTDlfS3Hg#`;7rT4+[rT4+[d,t?-o&frOpuV_Zk5XTDe`Hl3rT4+[
+rT4+[j6$(8YibZZJ`_OGMWXp=J,~>
+JaVdjrrBUtrW)'J!!*#d!!*#d!!(72p&O7Cp&Ne6"p")Z!:K7Tq<eFemd:)CmJuJ="9@iimK!7S
+!!*#d!!*#d!!)HTp&Nn9!!*#d!!*#d!!(C6"9@iimK!"Lp&P'Z"p")Z!:K7To^2\ZrU'XcrU'Xc
+`U3a+q!J.^XR?&fJaS*WL@5'AJ,~>
+Ja2LbrrBUprW)'F!!*#`!!*#`!!(7.p&O7?p&Ne2"p!rR!:&hLq<A.alKSB7l2^&5"9@]el2^hK
+!!*#`!!*#`!!)HPp&Nn5!!*#`!!*#`!!(C2"9@]el2^SDp&P'V"p!rR!:&hLo]cDVrTX@_rTX@_
+`TdF'q!%hZXQocbJa.gOL?ed=J,~>
+J`c4ZrrBUlrr;*B!<<&\!<<&\!<::*pAa:;pA`h.#63iJs5rJDq;qn]k2u^+k5XZ-"TRWak5YGC
+!<<&\!<<&\!<;KLpA`q1!<<&\!<<&\!<:F."TRWak5Y2<pAb*R#63iJs5rJDo]?/RrT4+[rT4+[
+`T@1#puVSVXQKN^J`_OGL?AL9J,~>
+JaVdjrrBb#p&O=E"p")Z!:K7Ta6rp,hX:@CeF!G>mJuYTp[/.amJuYTk3i3KrpC*nmJu\C!:K7T
+mJuS@rW(R<"p")Z!:K7Td-_)<md:)CmJunIrW)f_!!*#d!!*#d!!)ZZ!!*#d!!*#d!!'t*!<;i^
+!<91h"9@iimJqh+JaS<]rr@Q~>
+Ja2LbrrBatp&O=A"p!rR!:&hLa6NX(hWk(?eER/:l2^)LpZ_k]l2^)Lk3DpGrosgjl2^,7!:&hL
+l2^/8rW(R8"p!rR!:&hLd-:f8lKSB7l2^JArW)f[!!*#`!!*#`!!)ZV!!*#`!!*#`!!'t&!!)fZ
+!!'.d"9@]el2ZD#Ja/$Urr@Q~>
+J`c4ZrrBappAa@=#63iJs5rJDa6*C$hWFh;eE-o6k5XTDpZ;VYk5XTDk2u[CroORfk5XT+s5rJD
+k5Xc0rr:U4#63iJs5rJDd,kQ4k2u^+k5Y)9rr;iW!<<&\!<<&\!<;]R!<<&\!<<&\!<:""!<;iV
+!<91`"TRWak5U"pJ`_aMrr@Q~>
+JaVdjrrBn'!!)uc!W_ZVrW)!H"9@iimJt;q"9@iimJuVA!!)uc!!)uc"p"&kmJuYTeF*;9p$VeZ
+l0e6Fs6^!imJuYTl0\ZSmJuYTkO&<MrU'XcrU'Xcr9a^gmJuYT!<)<c!<)<c!8HoA!<2Bd!<2Bd
+!;>g`!:BjT!;u6b!<)<c!<)<c!;,[`!:K7Tmd:(mmK!:^mK!9imKN[ZmJu\C!.jQhmYL<2!.Y~>
+Ja2LbrrBn#!!)u_!W_NNrW)!D"9@]el2\li"9@]el2^29!!)u_!!)u_"p!ogl2^)LeE[#5p$2MV
+l0@sBs69^el2^)Ll08BOl2^)LkNW$IrTX@_rTX@_r9=Fcl2^)L!<)0_!<)0_!8Hc=!<26`!<26`
+!;>[\!9sRL!;u*^!<)0_!<)0_!;,O\!:&hLlKSAel2UhZl2Ugel377Rl2^,7!.jEdlA4a*!.Y~>
+J`c4ZrrBmt!<<#[!rqEFrr;$@"TRWak5WKa"TRWak5Xf1!<<#[!<<#[#63ick5XTDeE6c1p#c8R
+l/q^>s5jIak5XTDl/i-Kk5XTDkN2dErT4+[rT4+[r8n1_k5XTDs8D'[s8D'[s4cZ9s8M-\s8M-\
+s7YRXs5s@Ds8;!Zs8D'[s8D'[s7GFXs5rJDk2u]]joGGVjoGFajp(kJk5XT+s+0<`k(r1"!.Y~>
+JaVdjrrBk&!!*#d"p"&kmJuYTj6lmHa6j-3md:)CmJuVA!!*#d!!*#d#QX8mmd:)CmJtr.p&P'Z
+p&P*[!!)ESrW)f_rW)?R!!*#drr<2i!:K7TkO&<MrpBadrpBadqX4=_s6]jerpBadrpBadg[5%A
+rU'XcrU'Xcq!J=dmd:)CmK!1Q!!)uc!!)uc!!)ZZ"9@iimJt,l!<;i^!<97j!!*#d!!*#d!!%T<
+JaSB_rr@Q~>
+Ja2LbrrBk"!!*#`"p!ogl2^)Lj6HUDa6Ej/lKSB7l2^29!!*#`!!*#`#QX,ilKSB7l2]N&p&P'V
+p&P*W!!)EOrW)f[rW)?N!!*#`rr<2e!:&hLkNW$IrosI`rosI`qWe%[s69RarosI`rosI`gZeb=
+rTX@_rTX@_q!&%`lKSB7l2^bI!!)u_!!)u_!!)ZV"9@]el2\]d!!)fZ!!'4f!!*#`!!*#`!!%T8
+Ja/*Wrr@Q~>
+J`c4ZrrBjs!<<&\#63ick5XTDj6$@@a6!U+k2u^+k5Xf1!<<&\!<<&\#lj&ek2u^+k5X,spAb*R
+pAb-S!<;HKrr;iWrr;BJ!<<&\s8N5as5rJDkN2dEroO4\roO4\qW@eWs5j=]roO4\roO4\gZAM9
+rT4+[rT4+[puVe\k2u^+k5YAA!<<#[!<<#[!<;]R"TRWak5W<\!<;iV!<97b!<<&\!<<&\!<7W4
+J`_gOrr@Q~>
+JaVdjrrBh%$39M^!!)Ee!:K7TkjJ-EbjGH2rpBadrpBadm-Y,Zmd:)CmJuYTrpBadrpBadk3`3L
+rU'XcrU'Xcr9jOap$VeZs6]jerpBadmHt/YmJuYTmdBcKnEpV`mJuYTmJuYTmJuG<"p")Z!:K7T
+rU0@Zs6]shmd:(qmJm7dmJm7dmJm7bmJm7dmJm7dmJm7Xmf!4&mK!:cmK!:cmK!:#mJm7cmJm7c
+mK3IWmK!4R!!)uc!!%T<JaSE`rr@Q~>
+Ja2LbrrBh!$39AV!!)9a!:&hLkj%jAbj#0.rosI`rosI`m-4iVlKSB7l2^)LrosI`rosI`k3;pH
+rTX@_rTX@_r9F7]p$2MVs69RarosI`mHOlUl2^)LlK\'CnEL>\l2^)Ll2^)Ll2^#4"p!rR!:&hL
+rTa(Vs69[dlKSAil2Uh`l2Uh`l2Uh^l2Uh`l2Uh`l2UhTlM^e"l2Uh_l2Uh_l2Ugtl2Uh_l2Uh_
+l2q%Ol2^eJ!!)u_!!%T8Ja/-Xrr@Q~>
+J`c4ZrrBgr$NK8Ns8V6]s5rJDkiVU=biSp*roO4\roO4\m,eTRk2u^+k5XTDroO4\roO4\k2l[D
+rT4+[rT4+[r9""Yp#c8Rs5j=]roO4\mH+WQk5XTDk2uC;nE()Xk5XTDk5XTDk5XW,#63iJs5rJD
+rT<hRs5jF`k2u]ajoGG\joGG\joGGZjoGG\joGG\joGGPk5PCsjoGG[joGG[joGFpjoGG[joGG[
+jobYGk5YDB!<<#[!<7W4J`_jPrr@Q~>
+JaVdjrrBe$$39JomJuYTmd:&TrpBadrU'XcmdC&SamK-/rU'XcrU'Xcm-Y&XmJuYTmK!4R!!)uc
+!!)0L!!*#d!!*#d!!)rb"9@iimK!"L!<DQe!!M]imd:)BmKN[ZmJu\C!;u9a!:0%W!:K7TmJm7d
+mJm7MmK<OX!:Bj^mf!4bmK<OX!:Bj-mJm7cmJm7cmJm7bmKN[ZmJu\C!;5dR!6+@+s7l!^s1Ib"
+!<2Bd!<2Bd!.jQhmXag(mf*9;~>
+Ja2LbrrBdu$39>kl2^)LlKS?LrosI`rTX@_mcscOam&j+rTX@_rTX@_m-4cTl2^)Ll2^eJ!!)u_
+!!)0H!!*#`!!*#`!!)r^"9@]el2^SD!<DEa!!MQelKSB:l377Rl2^,7!;u-]!:/nS!:&hLl2Uh`
+l2UhIl3%+P!9sRZlM^e^l3%+P!9sR)l2Uh_l2Uh_l2Uh^l377Rl2^,7!;5XN!6+4'!;PgZ!5.Rs
+!<26`!<26`!.jEdl@J6ulMgj7~>
+J`c4ZrrBdq$NK8gk5XTDk2u^DroO4\rT4+[mcONKalWU'rT4+[rT4+[m,eNPk5XTDk5YDB!<<#[
+!<;3D!<<&\!<<&\!<;uZ"TRWak5Y2<!WV<]rrhKak2u^2jp(kJk5XT+s8;$Ys6JeOs5rJDk5YJ\
+joGGEjok_Hs5s@Vk5PDZjok_Hs5s@%joGG[joGG[joGGZjp(kJk5XT+s7POJs2F+#s7k^Vs1IIo
+s8M-\s8M-\s+0<`k(2[mk5PF3~>
+JaVdjrrBb#rW)ud!!*#drrE)e!!*#d!!)HT"9@iimJs6SrW(U="p")Z!:K7Tr9aahmd:)CmK!(N
+"9@lX!:Kgd!U]sTmJm7dmJm7dmJm7dmK<OX!:BjQmK<OX!:BjGmf!4]mK<OX!:Bjcmf!3omK<OX
+!:BjVmf!4CmJm7cmJm7cmJm7UmK!:^mK!:!mKN[ZmJu\C!.jQhmXag'mf*9;~>
+Ja2LbrrBatrW)u`!!*#`rrE)a!!*#`!!)HP"9@]el2[gKrW(U9"p!rR!:&hLr9=IdlKSB7l2^YF
+"9@`P!:'O`!U9[Pl2Uh`l2Uh`l2Uh`l3%+P!9sRMl3%+P!9sRClM^eYl3%+P!9sR_lM^dkl3%+P
+!9sRRlM^e?l2Uh_l2Uh_l2UhQl2UhZl2Ugrl377Rl2^,7!.jEdl@J6tlMgj7~>
+J`c4ZrrBaprr<#\!<<&\s8W,]!<<&\!<;KL"TRWak5VFCrr:X5#63iJs5rJDr8n4`k2u^+k5Y8>
+"TRWHs5s=\!TsFLjoGG\joGG\joGG\jok_Hs5s@Ijok_Hs5s@?k5PDUjok_Hs5s@[k5PCgjok_H
+s5s@Nk5PD;joGG[joGG[joGGMjoGGVjoGFnjp(kJk5XT+s+0<`k(2[lk5PF3~>
+JaVdjrrBn'p&P*["p")Z!:K7Tmd:>\md:)CmJuYTrU'Xc[I3_gg[51EmJuYTr9aObrpBadrpBad
+qsFFarpBgfmdC&SmHsrSrU'XcrU'pkmJu\C!:K7TlgF`PjR2^ArU'ghmd:)Cme-Xjmf!4UmK<OX
+!:BjDmJm7dmJm7dmJm7TmK!:^mK!9umK<OX!:Bi<mXaeWmeZAO!.Y~>
+Ja2LbrrBn#p&P*W"p!rR!:&hLmck&XlKSB7l2^)LrTX@_[HdGcgZenAl2^)Lr9=7^rosI`rosI`
+qs".]rosOblK\?KmHOZOrTX@_rTXXgl2^,7!:&hLlg"HLjQcF=rTXOdlKSB7lLk4flM^eQl3%+P
+!9sR@l2Uh`l2Uh`l2UhPl2UhZl2Ugql3%+P!9sQ8l@J5OlMBfG!.Y~>
+J`c4ZrrBmtpAb-S#63iJs5rJDmcFfTk2u^+k5XTDrT4+[[H@2_gZAY=k5XTDr8n"ZroO4\roO4\
+qrRnYroO:^k2u[CmH+EKrT4+[rT4Cck5XT+s5rJDlfS3HjQ?19rT4:`k2u^+k4\hbk5PDMjok_H
+s5s@<joGG\joGG\joGGLjoGGVjoGFmjok_Hs5s?4k(2ZGk5+6?!.Y~>
+JaVdjrrBb#rW)c^"9@iimJu\C!!*#drrE)errE&d!!'7krW)ob!!)uc!!)uc!!)-KrW)la!!)uc
+!!)uc!!)uc!!*#dp&O:DrrE&d!!*#drrDTWp&O1ArW)f_!!*#d!!*#d!W_ZVrW'Irp&OdR"p")Z
+!:K7ThX1RJmd:)CmJuYB!<;i^!<9UtrW%N;JaS*Wq<n7_J,~>
+Ja2LbrrBatrW)cZ"9@]el2^8;!!*#`rrE)arrE&`!!'7grW)o^!!)u_!!)u_!!)-GrW)l]!!)u_
+!!)u_!!)u_!!*#`p&O:@rrE&`!!*#`rrDTSp&O1=rW)f[!!*#`!!*#`!W_NNrW'Inp&OdN"p!rR
+!:&hLhWb:FlKSB7l2^5:!!)fZ!!'RprW%N7Ja.gOq<It[J,~>
+J`c4ZrrBaprr;fV"TRWak5Xl3!<<&\s8W,]s8W)\!<9:crr;rZ!<<#[!<<#[!<;0Crr;oY!<<#[
+!<<#[!<<#[!<<&\pAa=<s8W)\!<<&\s8VWOpAa49rr;iW!<<&\!<<&\!rqEFrr9LjpAagJ#63iJ
+s5rJDhW>%Bk2u^+k5Xi2!<;iV!<9Ulrr7Q3J`_OGq<%\WJ,~>
+JaVdjrrBe$"9@iimK!(NrW)BS!!)uc#QX8mmd:)CmJsKZ"9@iimK!4R!!*#d!!*#d!!)6Np&O@F
+rW)!HrrE&d!!*#drrDHSrW(pF"9@iimK!1Q!!)uc!!)ucrr</h!:Bipmf!4WmJm7dmJm7dmJm7D
+mK<OX!:BjRme6[ome-X3mXaeWmeuSR!.Y~>
+Ja2LbrrBdu"9@]el2^YFrW)BO!!)u_#QX,ilKSB7l2\'R"9@]el2^eJ!!*#`!!*#`!!)6Jp&O@B
+rW)!DrrE&`!!*#`rrDHOrW(pB"9@]el2^bI!!)u_!!)u_rr</d!9sQllM^eSl2Uh`l2Uh`l2Uh@
+l3%+P!9sRNlLk4klLk4/l@J5OlM^#J!.Y~>
+J`c4ZrrBdq"TRWak5Y8>rr;EK!<<#[#lj&ek2u^+k5V[J"TRWak5YDB!<<&\!<<&\!<;9FpAaC>
+rr;$@s8W)\!<<&\s8VKKrr:s>"TRWak5YAA!<<#[!<<#[s8N2`s5s?hk5PDOjoGG\joGG\joGG<
+jok_Hs5s@Jk4\hgk4\h+k(2ZGk5FHB!.Y~>
+JaVdjrrBh%"p")Z!:BgerpKI[o'QJXrU'mjmd:)C!:BikmKN[ZmJu\C!<)<i!:K7Tmd:)8mf!4K
+mK<OX!:BjHmKN[ZmJu\C!:9+V!:BjT!9<JO!:K7Tmd:)HmKN[ZmJu\C!4VA!!:BjT!;,[Z!<)<c
+!<)<c!8d/C!28f\!<)<c!<2Ec!.jQhmXag%mf*9;~>
+Ja2LbrrBh!"p!rR!9sOarp'1Wo'-2TrTXUflKSB7!9sQgl377Rl2^,7!<)0e!:&hLlKSB0lM^eG
+l3%+P!9sRDl377Rl2^,7!:8tR!9sRL!9<>K!:&hLlKSB@l377Rl2^,7!4V4r!9sRL!;,OV!<)0_
+!<)0_!8d#?!28ZX!<)0_!<29_!.jEdl@J6rlMgj7~>
+J`c4ZrrBgr#63iJs5s@]roWqSo&]rPrT4@bk2u^+s5s?cjp(kJk5XT+s8D'as5rJDk2u^(k5PDC
+jok_Hs5s@@jp(kJk5XT+s6SkNs5s@Ds5W5Gs5rJDk2u^8jp(kJk5XT+s0q+ns5s@Ds7GFRs8D'[
+s8D'[s5)o;s.SQTs8D'[s8M0[s+0<`k(2[jk5PF3~>
+JaVdjrrBk&$39JomJuYTmJuYTrU0XbmHsrSrpBadrpKacYjMJkrpBadrpBadrU'dgmJuYTrU'Xc
+rU'XcmHt)WmJuYToBlSYrU'XcrU0[cs6]shmd:)7mK<OX!:BjRmKN[ZmJuYT!<2Bd!9rnS!:K7T
+!<2Bd!<)<c!;c*`!<2Bd!<2Bd!4hM%!:K7Tmd:(ume-YUme6[jmJm7dmK*CVmf!1emJqh+JaS*W
+qX4@`J,~>
+Ja2LbrrBk"$39>kl2^)Ll2^)LrTa@^mHOZOrosI`rp'I_Yj)2grosI`rosI`rTXLcl2^)LrTX@_
+rTX@_mHOfSl2^)LoBH;UrTX@_rTaC_s69[dlKSB/l3%+P!9sRNl377Rl2^)L!<26`!9rbO!:&hL
+!<26`!<)0_!;bs\!<26`!<26`!4hA!!:&hLlKSAmlLk5QlLk4fl2Uh`l2gtNlM^bal2ZD#Ja.gO
+qWe(\J,~>
+J`c4ZrrBjs$NK8gk5XTDk5XTDrT=+ZmH+EKroO4\roX4[YiYrcroO4\roO4\rT47_k5XTDrT4+[
+rT4+[mH+QOk5XTDoB$&QrT4+[rT=.[s5jF`k2u^'jok_Hs5s@Jjp(kJk5XTDs8M-\s68YKs5rJD
+s8M-\s8D'[s8(jXs8M-\s8M-\s1.7rs5rJDk2u]ek4\iMk4\hbjoGG\joYSFk5PA]k5U"pJ`_OG
+qW@eXJ,~>
+JaVdjrrBn'!!*#drr<2i!:K7TrU'dgmJuYTmHt#UmdBcK[I+"prU'XcrU'XcrU0Xb!U]semJm7d
+mJm7SmKN[ZmJu\C!;#UY!<2Bd!<2Ed!<2Bd!<2Bd!93GG!:9+\!:BjT!:BjT!:BjOmJm7cmJm7d
+mf*:emJm7`mJm7cmJm7cmJm7HmJm7cmJm7cmJm7KmJm7dmJm7dmJm7.mf!4YmK!:^mK!9rmL'$_
+mJuYT!:BjTmJqh+JaS*WqsOIaJ,~>
+Ja2LbrrBn#!!*#`rr<2e!:&hLrTXLcl2^)LmHO`QlK\'C[H[_lrTX@_rTX@_rTa@^!U9[al2Uh`
+l2UhOl377Rl2^,7!;#IU!<26`!<29`!<26`!<26`!93;C!:8tX!9sRL!9sRL!9sRKl2Uh_l2Uh`
+lMgkal2Uh\l2Uh_l2Uh_l2UhDl2Uh_l2Uh_l2UhGl2Uh`l2Uh`l2Uh*lM^eUl2UhZl2Ugnl3dUW
+l2^)L!9sRLl2ZD#Ja.gOqs+1]J,~>
+J`c4ZrrBmt!<<&\s8N5as5rJDrT47_k5XTDmH+KMk2uC;[H7JhrT4+[rT4+[rT=+Z!TsF]joGG\
+joGGKjp(kJk5XT+s7>@Qs8M-\s8M0\s8M-\s8M-\s5N2?s6SkTs5s@Ds5s@Ds5s@GjoGG[joGG\
+k5YJ]joGGXjoGG[joGG[joGG@joGG[joGG[joGGCjoGG\joGG\joGG&k5PDQjoGGVjoGFjjpV4O
+k5XTDs5s@Dk5U"pJ`_OGqr[nYJ,~>
+JaVdjrrD$G!!)uc!!)uc!!)3M"9@iimK!4R"p")Z!:K7TmHt,XmJuYTmf!3`me-V`mJuYT!<2Bd
+!:fIW!<2Bd!<2Bd!;#U`!:K7Tmd:&TrU'XcrU'XckO/$Dna6AWrpKdd"RZ9XmJu87"p")Z!:K7T
+dI%ABmd:)C!:BjTmJm7KmJm7cmJm7cmJm70mK<OX!:Bj[mK!:^mK!9qmK!=UrW)ud!!*#drrDTW
+!!)uc!!)uc!!%T<JaSonrr@Q~>
+Ja2LbrrD$C!!)u_!!)u_!!)3I"9@]el2^eJ"p!rR!:&hLmHOiTl2^)LlM^d\lLk2\l2^)L!<26`
+!:f=S!<26`!<26`!;#I\!:&hLlKS?LrTX@_rTX@_kN_a@n`g)Srp'L`"R6!Pl2]i/"p!rR!:&hL
+dHV)>lKSB7!9sRLl2UhGl2Uh_l2Uh_l2Uh,l3%+P!9sRWl2UhZl2Ugml2^nMrW)u`!!*#`rrDTS
+!!)u_!!)u_!!%T8Ja/Wfrr@Q~>
+J`c4ZrrD$?!<<#[!<<#[!<;6E"TRWak5YDB#63iJs5rJDmH+TPk5XTDk5PCXk4\fXk5XTDs8M-\
+s7,4Os8M-\s8M-\s7>@Xs5rJDk2u^DrT4+[rT4+[kN;L<n`BiOroX7\"QoaHk5XH'#63iJs5rJD
+dH1i:k2u^+s5s@Dk5YJCjoGG[joGG[joGG(jok_Hs5s@SjoGGVjoGFijoPMErr<#\!<<&\s8VWO
+!<<#[!<<#[!<7W4J``?^rr@Q~>
+JaVdjrrD!F!!*#d!!*#d!!)-KrW)ob!!*#d!!*#d!!)ESrW!,i!:BjT!2Ju]!<2Bh!:BjT!<2Bd
+!:fIW!<)<c!<)<c!;#U]!:BjT!8$Z<!9ihR!:BjT!9!8J!:BjT!71'>!:K7T!:BjT!!)TX!!)uc
+!!*#drrE&d!!)uc!!(%,"p")Z!:K7Tp?hq\q!J.^[I4"orpBadrpKddnEp8VrpBadrpBadJaS*W
+QgXkRJ,~>
+Ja2LbrrD!B!!*#`!!*#`!!)-GrW)o^!!*#`!!*#`!!)EOrW!,e!9sRL!2JiY!<26d!9sRL!<26`
+!:f=S!<)0_!<)0_!;#IY!9sRL!8$N8!9i\N!9sRL!9!,F!9sRL!70p:!:&hL!9sRL!!)TT!!)u_
+!!*#`rrE&`!!)u_!!(%("p!rR!:&hLp?DVXq!%hZ[Hd_krosI`rp'L`nEKuRrosI`rosI`Ja.gO
+Qg4SNJ,~>
+J`c4ZrrD!>!<<&\!<<&\!<;0Crr;rZ!<<&\!<<&\!<;HKrr3/as5s@Ds.e`Us8M-`s5s@Ds8M-\
+s7,4Os8D'[s8D'[s7>@Us5s@Ds4?E4s6/SJs5s@Ds5<#Bs5s@Ds3Kg6s5rJDs5s@Ds8VZP!<<#[
+!<<&\s8W)\!<<#[!<:($#63iJs5rJDp>uATpuVSV[H@JgroO4\roX7\nE'`NroO4\roO4\J`_OG
+Qfe;JJ,~>
+JaVdjrrCsE"p")Z!:K7TqsFFarU'XcrU'Xcq<mqV$17f]mJuYTmd:)Gme-Y\mJm6`mK<OX!:Bjd
+mem.cmJm7<mf!4<mK<OX!:BjNmf!4Cmf!42mK<OXmJu\S!:]CV!<2Bd!<2Ed!<2Bd!<2Bd!64F,
+!<2Bd!<2Bd!;Gm]s7l!^s1.Rk!<;He!:B1Y!:K7Tmd:(+mXaelmf*9;~>
+Ja2LbrrCsA"p!rR!:&hLqs".]rTX@_rTX@_q<IYR$0hNUl2^)LlKSB?lLk5Xl2Ug\l3%+P!9sR`
+lMU__l2Uh8lM^e8l3%+P!9sRJlM^e?lM^e.l3%+Pl2^,K!:]7R!<26`!<29`!<26`!<26`!64:(
+!<26`!<26`!;GaY!;PgZ!4hCg!<;<a!:B%U!:&hLlKSA#l@J5dlMgj7~>
+J`c4ZrrCs=#63iJs5rJDqrRnYrT4+[rT4+[q<%DN$0M9Mk5XTDk2u^7k4\iTjoGFXjok_Hs5s@\
+k5G>[joGG4k5PD4jok_Hs5s@Fk5PD;k5PD*jok_Hk5XTCs7#.Ns8M-\s8M0\s8M-\s8M-\s2O1$
+s8M-\s8M-\s7bXUs7k^Vs1.:cs8V3]s6\qQs5rJDk2u\pk(2Z\k5PF3~>
+JaVdjrrCpD"9@iimK!(N!!*#d!!*#d!!)ZZrVuue!<2Bd!<2Bd!:B1U!:K:S!<;Ke!<2Bd!2o5f
+!:K7Tme-Y7me-Y9mKN[ZmJu\C!:B4J!9W_C!7:-7!:Kdcmd:Vdmd:)CmJu\C!:K7Tmd:)Ci;`$/
+!!)uc!!)uc!!)f^!<<#c!<<#c!<9Ipqu?ie!:BjcmJm7VmK<OX!:Bi<mXaekmf*9;~>
+Ja2LbrrCp@"9@]el2^YF!!*#`!!*#`!!)ZVrVuua!<26`!<26`!:B%Q!:&kK!<;?a!<26`!2o)b
+!:&hLlLk53lLk55l377Rl2^,7!:B(F!9WS?!7:!3!:'L_mck>`lKSB7l2^,7!:&hLlKSB7huN!+
+!!)u_!!)u_!!)fZ!!)u_!!)u_!!'Flqu?ia!9sR_l2UhRl3%+P!9sQ8l@J5clMgj7~>
+J`c4ZrrCp<"TRWak5Y8>!<<&\!<<&\!<;]Rrr3#]s8M-\s8M-\s6\qMs5rJCs8V6]s8M-\s/4u^
+s5rJDk4\i/k4\i1jp(kJk5XT+s6\tBs5rJ;s3Tm/s5s:[mcG)\k2u^+k5XT+s5rJDk2u^+i;`$'
+!<<#[!<<#[!<;iV!<<#[!<<#[!<9Ihr;Ql]s5s@[joGGNjok_Hs5s?4k(2Z[k5PF3~>
+JaVdjrrCmCrW)]\"p")Z!:K7To^3+fmJuYTmJu\C!:K7TlgFcQ#4;KZ!!)EerU'XcamK-/rU'Xc
+rU'Xcm-XiRrpBadrpBdemed(7mf!4>mJm7dmJm7dmJm7Pmf!4Cmf!47mZRV@mK!:^mK!9qmK3IW
+!:K^arpBadmdC&SJaS*WPj\POJ,~>
+Ja2LbrrCm?rW)]X"p!rR!:&hLo]chbl2^)Ll2^,7!:&hLlg"KM#3l3R!!)9arTX@_am&j+rTX@_
+rTX@_m-4QNrosI`rosLalMLY3lM^e:l2Uh`l2Uh`l2UhLlM^e?lM^e3lB2/<l2UhZl2Ugml2q%O
+!:'F]rosI`mcscOJa.gOPj88KJ,~>
+J`c4ZrrCm;rr;`T#63iJs5rJDo]?S^k5XTDk5XT+s5rJDlfS6I#3PsJs8V6]rT4+[alWU'rT4+[
+rT4+[m,e<JroO4\roO7]k5>8/k5PD6joGG\joGG\joGGHk5PD;k5PD/k*#c8joGGVjoGFijobYG
+s5s4YroO4\mcONKJ`_OGPihuGJ,~>
+JaVdjrrD$Gp&P'Z$39M^!:BjT!:K7Tp[/Fimd:)CmJuYTmJuYTlL+ZP"RZ9X!!'k'!!*#d!!*#d
+!!)BR!!)uc!!*#dp&Ne6"9@iimJu#0!!)uc!!)uc!!)BR"9@iimJu25"9@iimJu\CJcFd1r9aRb
+\*a:tmdBcKrpBadrU'XcrU'^emdBcKJaS*WR-stSJ,~>
+Ja2LbrrD$Cp&P'V$39AV!9sRL!:&hLpZ`.elKSB7l2^)Ll2^)LlK\BL"R6!P!!'k#!!*#`!!*#`
+!!)BN!!)u_!!*#`p&Ne2"9@]el2]T(!!)u_!!)u_!!)BN"9@]el2]c-"9@]el2^8;JH4^1r9=7^
+\*="plK\'CrosI`rTX@_rTXFalK\'CJa.gOR-O\OJ,~>
+J`c4ZrrD$?pAb*R$NK8Ns5s@Ds5rJDpZ;nak2u^+k5XTDk5XTDlK8-H"QoaHs8Tpt!<<&\!<<&\
+!<;EJ!<<#[!<<&\pA`h."TRWak5X2u!<<#[!<<#[!<;EJ"TRWak5XB%"TRWak5Xl3JcFd1r8n"Z
+\)mblk2uC;roO4\rT4+[rT41]k2uC;J`_OGR-+DKJ,~>
+JaVdjrrCmCrW)`]!W_ZVrW)ud!!)c]!!*#d!!*#d!<DQe!:&tR!:K:S!<;He!5\(-!:K7Tmd:)F
+mJm7cmJm7cmJm7cmK*CVmem.:mKEUYmJu\Chu<`F!;l0a!<)<c!<)<c!:fIY!:K9+s.TJ&mJm7d
+mJm7dmem+dmK!1Q!!*#d!!*#d!!)l`rW%N;JaScjrr@Q~>
+Ja2LbrrCm?rW)`Y!W_NNrW)u`!!)cY!!*#`!!*#`!<DEa!:&hN!:&kK!<;<a!5[q)!:&hLlKSB>
+l2Uh_l2Uh_l2Uh_l2gtNlMU_6l3.1Ql2^,7hZ*]B!;l$]!<)0_!<)0_!:f=U!:&j#!20D&l2Uh`
+l2Uh`lMU\`l2^bI!!*#`!!*#`!!)l\rW%N7Ja/Kbrr@Q~>
+J`c4ZrrCm;rr;cU!rqEFrr<#\!<;fU!<<&\!<<&\!WV<]s6A_Js5rJCs8V3]s2!h%s5rJDk2u^6
+joGG[joGG[joGG[joYSFk5G>2joteIk5XT+hu<`>s81pYs8D'[s8D'[s7,4Qs5rHps.TJ&joGG\
+joGG\k5G;\k5YAA!<<&\!<<&\!<;oXrr7Q3J``3Zrr@Q~>
+JaVdjrrCpD"9@iimK!+Op&OpV!!)uc!<DQ]!:T@L!5\(+!:BjT!:T=U!<2Bd!<2Bd!<)<c!<2Bh
+!:BjT!;5c2s+13Xs1.Ot!<)<g!:K7Tmem.^mKN[ZmJu\C!;c*d!:BjT!.jQhmZm5?!.Y~>
+Ja2LbrrCp@"9@]el2^\Gp&OpR!!)u_!<DEY!:T4H!5[q'!9sRL!:T1Q!<26`!<26`!<)0_!<26d
+!9sRL!;5W.!.b-X!4h@p!<)0c!:&hLlMU_Zl377Rl2^,7!;bs`!9sRL!.jEdlBUZ7!.Y~>
+J`c4ZrrCp<"TRWak5Y;?pAasN!<<#[!WV<Us6o+Ds2!h#s5s@Ds6o(Ms8M-\s8M-\s8D'[s8M-`
+s5s@Ds7PN*s+13Xs1.7ls8D'_s5rJDk5G>Vjp(kJk5XT+s8(j\s5s@Ds+0<`k*>*/!.Y~>
+JaVjl"T[rj!:BjcmJm7LmKN[ZmJuYT!<2Bd!<)?_!;Ps^!<)<c!<)<e!:K:S!9`eL!5.b!!:B1Y
+!:K7Tmd:)RmK*CVmXbChs.]P#mK!=Up&P'Z"9@iimK!+O"T[uY!:K:Ks+0Thm\'"J!.Y~>
+Ja2Rd"T[ff!9sR_l2UhHl377Rl2^)L!<26`!<)3[!;PgZ!<)0_!<)0a!:&kK!9`YH!5.Ur!:B%U
+!:&hLlKSBJl2gtNl@Aqd!29J#l2^nMp&P'V"9@]el2^\G"T[iQ!:&kC!.jEdlCdGB!.Y~>
+J`c:\"om]b!9X=[joGGDjp(kJk5XTDs8M-\s8D*Ws7k^Vs8D'[s8D']s5rJCs6&PDs1ILns6\qQ
+s5rJDk2u^BjoYSFk(3P`s.]P#joPMEpAb*R"TRWak5Y;?"om`Is5rJ;s+0<`k+Ll:!.Y~>
+JaVgkrVuue!<2Bd!9W\L!<2Bk!:K7T!:K7TrpBdemed(ZmJm7dmJm7dmKWa[mJuYTmJuM>"9@ii
+mJt>rJcC<$JcG?AZL.\mrpK[aq<n4^qX+=`rpBmhmdC)Tq<e7_JaS*WT^Mg[J,~>
+Ja2OcrVuua!<26`!9WPH!<26g!:&hL!:&hLrosLalMLYVl2Uh`l2Uh`l3@=Sl2^)Ll2^)6"9@]e
+l2\ojJH16$JH59AZK_Dirp'C]q<IqZqW\%\rosUdlKS?Lq<@q[Ja.gOT^)OWJ,~>
+J`c7["TJH%k5YGC!<;3D!<<&\#QNrKs8V6Ds8M-]s5s7ZpZ;JUroO4\roOIck2u^+s5s@Gjok_H
+s5s@&k(3P`s+14As0Cbes8M0Ys7tgVs8(jXs8M-`s5rJDs7tdWs+0<`k+Ll:!.Y~>
+JaVdjrr<2i!:K7Tk3`3LrU'XcrpKdd"7?0Wme-YVmLK<cmJu\C!:K7Tmd:)CmJutKJcC<$JcD_L
+ZgJ"tmJu\C!:KdcrpKI[s6]jerU'ghmdC,C!;c*`s+0Thm\'"J!.Y~>
+Ja2Lbrr<2e!:&hLk3;pHrTX@_rp'L`"6omOlLk5Rl43m[l2^,7!:&hLlKSB7l2^PCJH16$JH2YL
+Zg%_pl2^,7!:'L_rp'1Ws69RarTXOdlKSB7!;bs\!.jEdlCdGB!.Y~>
+J`c4Z#6+\cs5rJDk2l[DrT4+[roX7\"6TXGk4\iNjq%LSk5XT+s5rJDk2u^+k5Y/;JcC<$JcD_L
+ZfVJlk5XT+s5s:[roWqSs5j=]rT4:`k2u^+s8(jXs+0<`k+Ll:!.Y~>
+JaVjlJcC<$JcC<$aT&L4rW!)h!:K7TqX4=_oBlVYq!J.^JaS*WT^Mg[J,~>
+Ja2RdJH16$JH16$a8iI0rW!)d!:&hLqWe%[oBH;Uq!%hZJa.gOT^)OWJ,~>
+J`c:\JcC<$JcC<$aT&L,rr3,`s5rJDqW@eWoB$&QpuVSVJ`_OGT]Z7SJ,~>
+JaVjlJcC<$JcC<$aT&L4quH`a!!)rb"9@iimK!4R!!)uc!!*#d!WN/qmK!9<mXaf!mf*9;~>
+Ja2RdJH16$JH16$a8iI0quH`]!!)r^"9@]el2^eJ!!)u_!!*#`rrDl[!!%T8Ja/onrr@Q~>
+J`c:\JcC<$JcC<$aT&L,r;ZcY!<;uZ"TRWak5YDB!<<#[!<<&\s8VoW!<7W4J``Wfrr@Q~>
+JaVjlJcC<$JcC<$\,XD7p&G-]!<2Bj!:K7Tmd:)RmJm7dmJm7dmK!:cmK!:cmK!9<mXaf!mf*9;~>
+Ja2RdJH16$JH16$[fFA3p&G-Y!<26f!:&hLlKSBJl2Uh`l2Uh`l2Uh_l2Uh_l2Ug8l@J5nlMgj7~>
+J`c:\JcC<$JcC<$\,XD/pAY0Us8M-bs5rJDk2u^BjoGG\joGG\joGG[joGG[joGF4k(2Zfk5PF3~>
+JaVmmJcC<$JcD#8s6^'kmd:)CmK!7SRfCn*rW)c^!!*#d!!*#d!!)uc#6=2[!:K7Ts7l!^s+0Th
+m\'"J!.Y~>
+Ja2UeJH16$JH1r8s69dglKSB7l2^hKRK1k&rW)cZ!!*#`!!*#`!!)u_#6=&S!:&hL!;PgZ!.jEd
+lCdGB!.Y~>
+J`c=]JcC<$JcD#8s5jOck2u^+k5YGCRfCn"rr;fV!<<&\!<<&\!<<#[#QNrKs5rJDs7k^Vs+0<`
+k+Ll:!.Y~>
+JaVmmJcC<$JcE^ho`4LL"9@iimJuhG!!*#d!!*#d!!)`\"p")Z!:K7To'WUZipHpLmJuYTqsFFa
+rU'XcrU'XcrU'jimJuYTmf3(M!<7W<JaT3!rr@Q~>
+Ja2UeJH16$JH34\nEL,Vl2^)Lo'-2TrosI`rosI`p?Dh^lKSB7l2^D?X8q8F"9@]el2^_H!!)u_
+!!)u_!!)u_"p!ogl2^)Lq!%hZJa.gOT^)OWJ,~>
+J`c=]JcC<$JcE:\nE'lRk5XTDo&]rProO4\roO4\p>uSZk2u^+k5Y#7XT.;B"TRWak5Y>@!<<#[
+!<<#[!<<#[#63ick5XTDpuVSVJ`_OGT]Z7SJ,~>
+JaVmmJcC<$JcFX-kjJEMrpKaclgF`Po'QJXrU'XcrU'Xcp?i%`mJuYTh<qKHo^2n`md:)CmJuVA
+rW)ud!<;i^!<7W<JaT3!rr@Q~>
+Ja2UeJH16$JH4R-kj&-Irp'I_lg"HLo'-2TrTX@_rTX@_p?Db\l2^)Lh<M0Do]cV\lKSB7l2^29
+rW)u`!!)fZ!!%T8Ja/onrr@Q~>
+J`c=]JcC<$JcFX-kiVmEroX4[lfS3Ho&]rPrT4+[rT4+[p>uMXk5XTDh<(p@o]?AXk2u^+k5Xf1
+rr<#\!<;iV!<7W4J``Wfrr@Q~>
+JaVmmJcC<$jSoJQ!:K7Tmd:)Pm`,8.!:BikmKrs^!:BjT!:BjT!:]FM!8m5D!7:06rrDJRs7u]r
+rrDl_!<7W<JaT3!rr@Q~>
+Ja2UeJH16$j8]GM!:&hLlKSBHlGW`(l2\'R$39>kl2^)Ll2^)LnET]Ihs11@d-CW2!:#REq<@q[
+Ja.gOT^)OWJ,~>
+J`c=]JcC<$jSoJIs5rJDk2u^@k/I?$k5V[J$NK8gk5XTDk5XTDnE0HEhraq<d,tB.!9T=Aq;q\W
+J`_OGT]Z7SJ,~>
+JaVmmJcCQ+s6]jei9gRFrpBadrpBadq!J7bmJuYTrpBadrpBadrpBadmI'rRrpKacq<n4^YjMo"
+md:)CmJu\C!:K7TmI'rRhsU1<eF*A:!:GR@JaS*WT^Mg[J,~>
+Ja2UeJH1K+s69Rai9C:BrosI`rosI`q!%t^l2^)LrosI`rosI`rosI`mHXZNrp'I_q<IqZYj)Vs
+lKSB7l2^,7!:&hLmHXZNhs0n8eE[&6!:#7<Ja.gOT^)OWJ,~>
+J`c=]JcCQ+s5j=]i8t%>roO4\roO4\puV_Zk5XTDroO4\roO4\roO4\mH4EJroX4[q<%\VYiZAo
+k2u^+k5XT+s5rJDmH4EJhraY4eE6f2!9T"8J`_OGT]Z7SJ,~>
+JaVmmJcD5>bO,?1rU'XcrU'XcqX+Ofmd:)CmK!7S"p")Z!:K7TnF#rL!U]seme-XgmJm7dmKN[Z
+!:BjT!<2Bd!:T=Y!:BjT!8R#A!7:06rrDJ@s+0Thm\'"J!.Y~>
+Ja2UeJH2/>bN]'-rTX@_rTX@_qW\7blKSB7l2^hK"p!rR!:&hLnETZH!U9[alLk4cl2Uh`l377R
+!9sRL!<26`!:T1U!9sRL!8Ql=!7:$2!!);<!.jEdlCdGB!.Y~>
+J`c=]JcD5>bN8g)rT4+[rT4+[qW8"^k2u^+k5YGC#63iJs5rJDnE0ED!TsF]k4\h_joGG\jp(kJ
+s5s@Ds8M-\s6o(Qs5s@Ds4lc9s3Tp.rrD28s+0<`k+Ll:!.Y~>
+JaVmmJcEmmrU'XcnEpDZmJuYTVX=EarpBadrpBadrpBmhmJuYTlgF`P$LRlomJuYT!:K7TrpKac
+ZL.\mrU0[crpKddrU'Xcna6S]md:)CmJu,3"9@iimJtZ&s8N)eL&Z_lJaT3!rr@Q~>
+Ja2UeJH3gmrTX@_nEL,Vl2^)LVWn-]rosI`rosI`rosUdl2^)Llg"HL$L.Tkl2^)L!:&hLrp'I_
+ZK_DirTaC_rp'L`rTX@_n`g;YlKSB7l2]]+"9@]el2]5srr<&aK`H\hJa/onrr@Q~>
+J`c=]JcEmmrT4+[nE'lRk5XTDVWImYroO4\roO4\roO@`k5XTDlfS3H$KhBgk5XTDs5rJDroX4[
+ZK;/erT=.[roX7\rT4+[n`C&Uk2u^+k5X<#"TRWak5Wiks8N)]L&Z_dJ``Wfrr@Q~>
+JaVmmQ2eqn!!*#d!!*#d!!)uc!!*#d!!*#d!!)HTrW&h`!!)uc!!)uc!!*#drW)9P%05ermJu\C
+!!)EemJm7dmK<OX!:BiNmJm7dmJm7dmJm7FmKN[ZmJu\C!7L<8rrDJ@s+0Thm\'"J!.Y~>
+Ja2UePlSnj!!*#`!!*#`!!)u_!!*#`!!*#`!!)HPrW&h\!!)u_!!)u_!!*#`rW)9L%05Ynl2^,7
+!!)9al2Uh`l3%+P!9sQJl2Uh`l2Uh`l2UhBl377Rl2^,7!7L04!!);<!.jEdlCdGB!.Y~>
+J`c=]Q2eqf!<<&\!<<&\!<<#[!<<&\!<<&\!<;KLrr8kX!<<#[!<<#[!<<&\rr;<H%KGSjk5XT+
+s8V6]k5YJ\jok_Hs5s?FjoGG\joGG\joGG>jp(kJk5XT+s3g'0rrD28s+0<`k+Ll:!.Y~>
+JaVmms8W&u!U]semf3=EmKN[ZmJu\C!:&tP!<2Ed!<;Hg!:BimmKN[ZmJu\C!;l0g!:K7Tmd:)F
+me-XRme-YMmM>lkmJm7T!:K7TmJuYT!:K7Tmd:)CmJrO?!!)uc!!)uc!!)$H!!*#d!!*#d!!(L9
+s8N)eL&Z_lJaT3!rr@Q~>
+Ja2Uequ?c_!<29`!8m&G!:&hLlKSB7l2Uh`lMgkal2gtN!4(ko!:&hLlKSBHl377Rl2^,7!:f@J
+!2/WN!:]7i!:&hL!9sRLl2^)Ll2UhLl2^,7!:&hLQ0J>LrTX@_rTX@_ip$LDrosI`rosI`e*?r5
+!:#7<Ja.gOT^)OWJ,~>
+J`c=]rr;uu!TsF]k5YJ=jp(kJk5XT+s6A_Hs8M0\s8V3_s5s?ejp(kJk5XT+s81p_s5rJDk2u^6
+k4\hJk4\iEjqn'[k5YJDs5rJDk5XTDs5rJDk2u^+k5U_/!<<#[!<<#[!<;'@!<<&\!<<&\!<:O1
+s8N)]L&Z_dJ``Wfrr@Q~>
+JaVmms8N5i!!)EerpKgdi9gRFrpBadrpBadm-Y&XmJu\C!!*#d!!'7k"9@iimK!(N"9@iimJuVA
+rW&>RrW)HU%05ha!:BjT!:K7T!:K:S!<2Bd!<2Bd!<2Bd!1<0S!<)<c!<)<c!9*>G!<)<c!<)<c
+!7^Fgs+0Thm\'"J!.Y~>
+Ja2Uerr<2e!!)9arp'L`i9C:BrosI`rosI`m-4cTl2^,7!!*#`!!'7g"9@]el2^YF"9@]el2^29
+rW&>NrW)HQ%05\Y!9sRL!:&hL!:&kK!<26`!<26`!<26`!1<$O!<)0_!<)0_!9*2C!<)0_!<)0_
+!7^:c!.jEdlCdGB!.Y~>
+J`c=]s8N5a!!)0]roX7\i8t%>roO4\roO4\m,eNPk5XT+s8W)\!<9:c"TRWak5Y8>"TRWak5Xf1
+rr8AJrr;KM%KGSQs5s@Ds5rJDs5rJCs8M-\s8M-\s8M-\s-VpKs8D'[s8D'[s5E)?s8D'[s8D'[
+s4$1_s+0<`k+Ll:!.Y~>
+JaVmmmf2M=!!)uc!!)uc!!)<P"p")Z!:K7TY3u8hp[8"\m-XuVmJuYTRdL:YmJuYTnF$;Vs6]sh
+mJu\J!<2Bd!<)<c!1<0S!<2Bd!<2Bd!9NVK!<)<c!<)<c!71'5s7l#@s+0Thm\'"J!.Y~>
+Ja2UemJuJ9!!)u_!!)u_!!)<L"p!rR!:&hLY3PudpZh_Xm-4]Rl2^)LRd("Ul2^)LnEU#Rs69[d
+l2^,B!<26`!<)0_!1<$O!<26`!<26`!9NJG!<)0_!<)0_!70p1!;Pi<!.jEdlCdGB!.Y~>
+J`c=]mf2M5!<<#[!<<#[!<;?H#63iJs5rJDY3,``pZDJTm,eHNk5XTDRcXbQk5XTDnE0cNs5jF`
+k5XT:s8M-\s8D'[s-VpKs8M-\s8M-\s5iACs8D'[s8D'[s3Kg-s7k`8s+0<`k+Ll:!.Y~>
+JaVdjrrE&d!<;i^!<:%+"9@iimJsN[p&P-\p&OXN"p")Z!:K7T\F'=srU'XcrU'XcnEpJ\md:)C
+mJubE"p")Z!:K7TrU0Ua!U]sbmJm7cmJm7cmJm6XmKN[ZmJu\C!<)<c!<)<c!<)?c!<)?c!<2Ed
+!"SDsmJm7T!!)EemJu\C!<)<c!7pQ<s7l!^s6f<Js+0Thm\'"J!.Y~>
+Ja2LbrrE&`!!)fZ!!("'"9@]el2\*Sp&P-Xp&OXJ"p!rR!:&hL\EX%orTX@_rTX@_nEL2XlKSB7
+l2^>="p!rR!:&hLrTa=]!U9[^l2Uh_l2Uh_l2UgTl377Rl2^,7!<)0_!<)0_!<)3_!<)3_!<29`
+!"S8ol2UhL!!)9al2^,7!<)0_!7pE8!;PgZ!:K-F!.jEdlCdGB!.Y~>
+J`c4ZrrE&\!<;iV!<:%#"TRWak5V^KpAb0TpAa[F#63iJs5rJD\E3ekrT4+[rT4+[nE'rTk2u^+
+k5Xr5#63iJs5rJDrT=(Y!TsFZjoGG[joGG[joGFPjp(kJk5XT+s8D'[s8D'[s8D*[s8D*[s8M0\
+rsn2kk5YJDs8V6]k5XT+s8D'[s46<4s7k^Vs6f$Bs+0<`k+Ll:!.Y~>
+JaVdjrrE&d!<;i^!<:"*rW'%frW)c^!<DQd!<)<c!;,[Z!<2Bd!<2Bd!7^E:!<)<c!<)<c!:]CV
+!<2Bd!<2Bd!:]CV!<2Bd!<2Bd!:]C\!:BjT!:BjdmK<OX!:Bj_mJm7dmJm7dmJm6smf*:dmd'oR
+meHk_mKEUY!!)HTrW)ud%fl"t!:BjT!:BjT!:BjTmf!1imJm7TmK!7S!!*#d#lsAnmd:)C!:K:S
+!<;Kd!<2Ed!<2Ed!<)<c!<)<c!;c-Ws5NIJs+0Thm\'"J!.Y~>
+Ja2LbrrE&`!!)fZ!!'t&rW'%brW)cZ!<DE`!<)0_!;,OV!<26`!<26`!7^96!<)0_!<)0_!:]7R
+!<26`!<26`!:]7R!<26`!<26`!:]7X!9sRL!9sR`l3%+P!9sR[l2Uh`l2Uh`l2UgolMgk`lKeKN
+lM1G[l3.1Q!!)<LrW)u`%fkkp!9sRL!9sRL!9sRLlM^bel2UhLl2^hK!!*#`#ls5jlKSB7!:&kK
+!<;?`!<29`!<29`!<)0_!<)0_!;c!S!93:F!.jEdlCdGB!.Y~>
+J`c4ZrrE&\!<;iV!<:""rr9(^rr;fV!WV<\s8D'[s7GFRs8M-\s8M-\s4$02s8D'[s8D'[s7#.N
+s8M-\s8M-\s7#.Ns8M-\s8M-\s7#.Ts5s@Ds5s@\jok_Hs5s@WjoGG\joGG\joGFkk5YJ\k3W*J
+k5#&WjoteIs8V6Drr<#\&-(els5s@Ds5s@Ds5s@Dk5PAak5YJDk5YGC!<<&\$30/fk2u^+s5rJC
+s8V6\s8M0\s8M0\s8D'[s8D'[s8(mOs5N1Bs+0<`k+Ll:!.Y~>
+JaVdjrrE&d!<;i^!<:..p&MAc"9@iimK!(N"9@iimK!7S!!)ZZ!!)uc!!)uc!!(O:!!*#d!!*#d
+!!)HT"p")Z!:K7TnEp8VrU'XcrU'XcnF$8UrpC$lmJm7T!!)Eeq<eFemd:)CmJuVA!!)uc!!)uc
+!!)HT!!)uc"9@iimdC&SrpKacs6]mfmf!4dmdL2Vmf!1dmeQnhmJm7T!!)EemeQndmJm7Tmem.c
+med%bmed%bmeQn`mf!4dmf*7emeZtdmJm7TrW)rc!s%cW!<2Bd!<2Bd!57g7s+0Thm\'"J!.Y~>
+Ja2LbrrE&`!!)fZ!!(+*p&MA_"9@]el2^YF"9@]el2^hK!!)ZV!!)u_!!)u_!!(O6!!*#`!!*#`
+!!)HP"p!rR!:&hLnEKuRrTX@_rTX@_nETuQrosahl2UhL!!)9aq<A.alKSB7l2^29!!)u_!!)u_
+!!)HP!!)u_"9@]elK\?Krp'I_s69UblM^e`lL4cRlM^b`lM:Jdl2UhL!!)9alM:J`l2UhLlMU__
+lMLV^lMLV^lM:J\lM^e`lMghalMCP`l2UhLrW)r_!s%WO!<26`!<26`!57[3!.jEdlCdGB!.Y~>
+J`c4ZrrE&\!<;iV!<:.&pA_D["TRWak5Y8>"TRWak5YGC!<;]R!<<#[!<<#[!<:R2!<<&\!<<&\
+!<;KL#63iJs5rJDnE'`NrT4+[rT4+[nE0`MroOLdk5YJDs8V6]q;qn]k2u^+k5Xf1!<<#[!<<#[
+!<;KL!<<#["TRWak2u[CroX4[s5j@^k5PD\k4&BNk5PA\k5,)`k5YJDs8V6]k5,)\k5YJDk5G>[
+k5>5Zk5>5Zk5,)Xk5PD\k5YG]k55/\k5YJDrr;u["97NGs8M-\s8M-\s1RR/s+0<`k+Ll:!.Y~>
+JaVdjrrE&d!<;i^!<:"*rW'+h"p")Z!:K7TqsFglmJm7T!!)Eemd:)RmJm7(mKN[ZmJu\C!;#XY
+!<2Ec!!)Hd!"&&nmJuYT!:BjTrW)ud"p"&k!:BjTr;Zicr;[#h!:Bgemem+cme$PbmJuYTmd:&T
+rpKddrpKac!q$$grpKdds6fmerpKddrpKddrpKdds6]jerpBadm-XiRrpC3qmd:&Tmd:)CmJm7T
+mf!1fmJu\Q!!)H1!!)H[!!)HI!!)Hc!!M]imd:(LmK<OX!:Bj_mcFJ"mXaf!mf*9;~>
+Ja2LbrrE&`!!)fZ!!'t&rW'+d"p!rR!:&hLqs"Ohl2UhL!!)9alKSBJl2Uh$l377Rl2^,7!;#LU
+!<29_!!)<`!"%ojl2^)L!9sRLrW)u`"p!og!9sRLr;Zi_r;[#d!9sOalMU\_lLb,^l2^)LlKS?L
+rp'L`rp'I_!pTacrp'L`s6BUarp'L`rp'L`rp'L`s69RarosI`m-4QNrospmlKS?LlKSB7l2UhL
+lM^bbl2^,I!!)<-!!)<W!!)<E!!)<_!!MQelKSADl3%+P!9sR[lK&"sl@J5nlMgj7~>
+J`c4ZrrE&\!<;iV!<:""rr9.`#63iJs5rJDqrS:dk5YJDs8V6]k2u^BjoGFujp(kJk5XT+s7>CQ
+s8M0[rrD3\rs@ifk5XTDs5s@Drr<#\#63ics5s@DrVll[rVm&`s5s@]k5G;[k4S`Zk5XTDk2u^D
+roX7\roX4[!p9O_roX7\s5s@]roX7\roX7\roX7\s5j=]roO4\m,e<JroO[ik2u^Dk2u^+k5YJD
+k5PA^k5XTArrD3)rrD3SrrD3ArrD3[rrhKak2u]<jok_Hs5s@Wk2lVok(2Zfk5PF3~>
+JaVdjrrE&d!<<#c!<<#c!<:%+"9@iimK!4R!!)uc!!)uc!!)f^!!)uc!!)uc!!(L9!!*#d!!*#d
+!!)uc!!*#d"9@iimK!7S!!*#d!!'h&!<DQe!<;Ke!<2Ed!!M]imJu\N!!)Hc!!)Hd!<;Ke!<;Ke
+!!)Hd!!qummJuYTmJu\J!!)Hd!!)Hd!!)Hd!<2E`!!;QgmeZtameZtbmK!7S!!*#drrE&d#QX8m
+mJuYTmdC&Ss6^$jmd:)C!<)<p!:BjTmJuYTmJm7T!:Kdc!:I2o!:J26!:Kdc!:KdcrpBadVsaNa
+mI'KDJaS*WT^Mg[J,~>
+Ja2LbrrE&`!!)u_!!)u_!!("'"9@]el2^eJ!!)u_!!)u_!!)fZ!!)u_!!)u_!!(L5!!*#`!!*#`
+!!)u_!!*#`"9@]el2^hK!!*#`!!'h"!<DEa!<;?a!<29`!!MQel2^,F!!)<_!!)<`!<;?a!<;?a
+!!)<`!!qiil2^)Ll2^,B!!)<`!!)<`!!)<`!<29\!!;EclMCP]lMCP^l2^hK!!*#`rrE&`#QX,i
+l2^)LlK\?Ks69aflKSB7!<)0l!9sRLl2^)Ll2UhL!:'L_!:$ok!:%o2!:'L_!:'L_rosI`Vs=6]
+mHX0@Ja.gOT^)OWJ,~>
+J`c4ZrrE&\!<<#[!<<#[!<:%#"TRWak5YDB!<<#[!<<#[!<;iV!<<#[!<<#[!<:O1!<<&\!<<&\
+!<<#[!<<&\"TRWak5YGC!<<&\!<9js!WV<]s8V6]s8M0\rrhKak5XT>rrD3[rrD3\s8V6]s8V6]
+rrD3\rs7cek5XTDk5XT:rrD3\rrD3\rrD3\s8M0XrrV?_k55/Yk55/Zk5YGC!<<&\s8W)\#lj&e
+k5XTDk2u[Cs5jLbk2u^+s8D'hs5s@Dk5XTDk5YJDs5s:[!9UZg!9VZ.!9X7[!9X7[roO4\Vrn!Y
+mH3p<J`_OGT]Z7SJ,~>
+JaVdjrrE&dpA`V0!!)uc!!)uc#lsD]!:K7Tmd:)RmJm7dmJm7dmJm7\mJm7dmJm7dmJm79mJm7c
+mJm7cmK3IWmK!4Rr;[)j!:K7Tmd:)-mJm7cmJm7cmJm7Xmem.bmJm7dmJm7dmJm7dmK!=Uli7%R
+r;Zicp&G*\aoDP3!!)Hb!!)H\!!)HU!!)Hd!!)GT!!)HS!!)Hc!!)H^!!2KfWp]Q\rU'XcrU'Xc
+JaS*WM=1BDJ,~>
+Ja2LbrrE&`p&NS,!!)u_!!)u_#ls8U!:&hLlKSBJl2Uh`l2Uh`l2UhXl2Uh`l2Uh`l2Uh5l2Uh_
+l2Uh_l2q%Ol2^eJr;[)f!:&hLlKSB%l2Uh_l2Uh_l2UhTlMU_^l2Uh`l2Uh`l2Uh`l2^nMli7%N
+r;Zi_p&G*XaoDP/!!)<^!!)<X!!)<Q!!)<`!!);P!!)<O!!)<_!!)<Z!!2?bWp99XrTX@_rTX@_
+Ja.gOM<b*@J,~>
+J`c4ZrrE&\pA`V(!<<#[!<<#[$30/Ms5rJDk2u^BjoGG\joGG\joGGTjoGG\joGG\joGG1joGG[
+joGG[jobYGk5YDBrVm,bs5rJDk2u]rjoGG[joGG[joGGPk5G>ZjoGG\joGG\joGG\joPMEm/I(J
+rVll[pAY-Tb5VS+s8V6ZrrD3TrrD3MrrD3\rrD2LrrD3KrrD3[rrD3Xs8N'"k5VIDpAb*R!<<#[
+!<7W4J`_gOrr@Q~>
+JaVdjrrE&d!<;i^!<:L8!!*#d!!*#d!s%cW!<2Bd!<2Bd!<)<i!:K7Tmd:)ImKN[ZmJu\C!7:-6
+!<)<c!<)?c!!)H[!!)Hc!!)Hb!"82pmJm7T!:K7TmK!4R!!)f^$io\qmd:)C!!)EemK!7SrrE#c
+"p")Z!:BjTh>dQDoDemZU]:D_p&G*\o)JdYUAt;^g&Ru;rW)ob!!*#d!!*#d!!%T<JaS?^rr@Q~>
+Ja2LbrrE&`!!)fZ!!(I4!!*#`!!*#`!s%WO!<26`!<26`!<)0e!:&hLlKSBAl377Rl2^,7!7:!2
+!<)0_!<)3_!!)<W!!)<_!!)<^!"8&ll2UhL!:&hLl2^eJ!!)fZ$ioPmlKSB7!!)9al2^hKrrE#_
+"p!rR!9sRLh>dQ@oDemVU]:D[p&G*Xo)JdUUAt;Zg&Ru7rW)o^!!*#`!!*#`!!%T8Ja/'Vrr@Q~>
+J`c4ZrrE&\!<;iV!<:L0!<<&\!<<&\"97NGs8M-\s8M-\s8D'as5rJDk2u^9jp(kJk5XT+s3Tm.
+s8D'[s8D*[rrD3SrrD3[rrD3ZrsRuhk5YJDs5rJDk5YDB!<;iV%0,Jik2u^+s8V6]k5YGCs8W&[
+#63iJs5s@DhZ!T<o`"pRV#LGWpAY-ToD\gQU]1>Vh#@BTs/"lWs8D'[s8M-\s8M-\s+0<`k(r1"
+!.Y~>
+JaVdjrrE&d!<;i^!<;<O$io\qmd:)C!:K7TmJutK$39M^!:Bgemd:&TrpKddrpC0pmJu\C!:BjT
+!:K7TqsFFarU0[c"7?0W!;l0a!<)<c!<)<c!;c*`!<)<c!<)<i!:BjT!:K:S!<;Kd!<;Kd!!DWh
+mdC&S"7?-hmeZtamed%fmJuYTmf!1dmf!1dmeHk_mf*:dmf!4cmf!1dmdgDYmcFKLmXYB;!!DWh
+!:K^a!:GC<oDes\!:KdcW9scgmJuYTrU'jimd:)CmJqh+JaS<]rr@Q~>
+Ja2LbrrE&`!!)fZ!!)9K$ioPmlKSB7!:&hLl2^PC$39AV!9sOalKS?Lrp'L`rosmll2^,7!9sRL
+!:&hLqs".]rTaC_"6omO!;l$]!<)0_!<)0_!;bs\!<)0_!<)0e!9sRL!:&kK!<;?`!<;?`!!DKd
+lK\?K"6ojdlMCP]lMLVbl2^)LlM^b`lM^b`lM1G[lMgk`lM^e_lM^b`lLOuUlK/'Hl@As7!!DKd
+!:'F]!:#+8oDesX!:'L_W9OKcl2^)LrTXRelKSB7l2ZD#Ja/$Urr@Q~>
+J`c4ZrrE&\!<;iV!<;<G%0,Jik2u^+s5rJDk5Y/;$NK8Ns5s@]k2u^DroX7\roOXhk5XT+s5s@D
+s5rJDqrRnYrT=.["6TXGs81pYs8D'[s8D'[s8(jXs8D'[s8D'as5s@Ds5rJCs8V6\s8V6\rr_E`
+k2u[C"6TX`k55/Yk5>5^k5XTDk5PA\k5PA\k5#&Wk5YJ\k5PD[k5PA\k4ATQk2u[Dk(3R3rr_E`
+s5s4Y!9Sk4o`#$Us5s@\!3##_s5s@Ds8D'as5rJDk2u\pk(2ZMk5PF3~>
+JaVdjrrE&d!<;i^!<;QVrrE&dr;Zicqu?`bqu?`br;[/l!!)EemJuYTmf!4dmL'$_!:BjTmJuYT
+mdBoO"RZ9XmK!4RrrE&d!<DQe!;Z$_!<2Bd!<2Bd!;Ps^!<2Bd!<2Bd!<2Bp!:BjT!:BjT!:BjT
+mf!1dmf!1hmJuYTmed%bmb@dBmbn-GmXYB5!!)H^!!)HU!!)G<!;?Hnmem-cmKN[ZmJu\C!<)<g
+!:BjT!.jQhmY:00!.Y~>
+Ja2LbrrE&`!!)fZ!!)NRrrE&`r;Zi_qu?`^qu?`^r;[/h!!)9al2^)LlM^e`l3dUW!9sRLl2^)L
+lK\3G"R6!Pl2^eJrrE&`!<DEa!;Ym[!<26`!<26`!;PgZ!<26`!<26`!<26l!9sRL!9sRL!9sRL
+lM^b`lM^bdl2^)LlMLV^lJ)@>lJV^Cl@As1!!)<Z!!)<Q!!);8!;?HnlMU^_l377Rl2^,7!<)0c
+!9sRL!.jEdlA"U(!.Y~>
+J`c4ZrrE&\!<;iV!<;QNs8W)\rVll[r;QcZr;QcZrVm2ds8V6]k5XTDk5PD\jpV4Os5s@Dk5XTD
+k2uO?"QoaHk5YDBs8W)\!WV<]s7tdWs8M-\s8M-\s7k^Vs8M-\s8M-\s8M-hs5s@Ds5s@Ds5s@D
+k5PA\k5PA`k5XTDk5>5Zk1ot:k2H=?k(3R-rrD3VrrD3MrrD24s7cNnk5>:[jp(kJk5XT+s8D'_
+s5s@Ds+0<`k(`$u!.Y~>
+JaVdjrrE&dpAaULrrE)err<&eo`,![rVurdrVuue!<2Ec!<;Ke!"82pmJm7T!!)HT!:KL[!:Kgd
+!q$'Vo`,-_!!)HTU]:Sd!!)Eemc"3HmYLoDmXYB-!!)H=!35Ge!<2Bd!<2Bd!<)?b!.jQhmY1*/
+!.Y~>
+Ja2LbrrE&`p&ORHrrE)arr<&ao`,!WrVur`rVuua!<29_!<;?a!"8&ll2UhL!!)<L!:'4W!:'O`
+!pTdNo`,-[!!)<LU]:S`!!)9alJ_dDlA5K@l@As)!!)<9!35;a!<26`!<26`!<)3^!.jEdl@nO'
+!.Y~>
+J`c4ZrrE&\pAaUDs8W,]s8N)]p&>$Srr2u\rr3#]s8M0[s8V6]rsRuhk5YJDs8V6Ds5s"S!9X:\
+!p9OFp&>0Ws8V6DV#LV\s8V6]k2QC@k)'*<k(3R%rrD35s/P2]s8M-\s8M-\s8D*Zs+0<`k(Vst
+!.Y~>
+JaVdjrrE&d!<<#c!<<#c!<;TW!W_ZVp](<^ci=(6p&G*\q#CE_nGiRWrVurdL]@GCJH2;B!:KCX
+!q$'Vnc/[Xo)JdYrVurdo)JdYrW)rcrrB4i$NTSpmd:)C!:K7Tme-X3mXae_mf*9;~>
+Ja2LbrrE&`!!)u_!!)u_!!)QS!W_NNp](<Zci=(2p&G*Xq#CE[nGiRSrVur`L]@G?JH2;B!:'+T
+!pTdNnc/[To)JdUrVur`o)JdUrW)r_rrB4e$NTGllKSB7!:&hLlLk4/l@J5WlMgj7~>
+J`c4ZrrE&\!<<#[!<<#[!<;TO!rqEFq#:?Vd/O+.pAY-Tq>UHWnc&UOrr2u\M#RJ;JcDAB!9WkP
+!p9OFo)A^PoD\gQrr2u\oD\gQrr;u[rrB4a$ifAhk2u^+s5rJDk4\h+k(2ZOk5PF3~>
+JaVso!!)ucrrE&d!<;i^!<;QV!W_ZVqZ$Wa]`8'#QiI-SJH16$qZ$Wamf3@UmJm@W!!)HH!!)Hd
+!<2Ed!3Y_i!<2Bd!<2Bd!;l3`!.jQhmY1*/!.Y~>
+Ja2[g!<<#_rrE&`!!)fZ!!)NR!W_NNqZ$W]]`8&tQiI-OJH16$qZ$W]mf3@QmJm@S!!)<D!!)<`
+!<29`!3YSe!<26`!<26`!;l'\!.jEdl@nO'!.Y~>
+J`cC_!!)u[rrE&\!<;iV!<;QN!rqEFqu6ZY^&J)pR/[0KJcC<$qu6ZYn,ECMmf*COs8V6Krr<&n
+rrD3\s8M0\!3YGas8M-\s8M-\s81sXs+0<`k(Vst!.Y~>
+JaVpn!!*#drrE)e!<E/pmK!:UmK*CVm^)romcFNCs+(0h!!)HJ!!)HV!!)HE!!)H<!!)HU!!;Qg
+mf!1dme-Y\mf!1dmdC,UmcOTMmJm7dmf*:(mJm7dmf*:dmf*:dmJm7cmf*:emK3IWmK!.P"9@ii
+mJqh+JaS9\rr@Q~>
+Ja2Xf!<<&`rrE)a!WN/pl2UhQl2gtNlEgNkl@Ar-!!)<F!!)<R!!)<A!!)<8!!)<Q!!;EclM^b`
+lLk5XlM^b`lL+]QlK80Il2Uh`lMgk$l2Uh`lMgk`lMgk`l2Uh_lMgkal2q%Ol2^_H"9@]el2ZD#
+Ja/!Trr@Q~>
+J`c@^!!*#\rrE)]!<E/pjoGGMjoYSFk-Y-gk(3Q)rrD3BrrD3NrrD3=rrD34rrD3MrrV?_k5PA\
+k4\iTk5PA\k3r<Mk55/Y!:KmejoGG\k5PFujoGG\k5YJ\k5YJ\joGG[k5YJ]jobYGk5Y>@"TRWa
+k5U"pJ`_^Lrr@Q~>
+JaVmm#QX;\!!)Eemf3(M!<;QVPQ1^`p](<oNW9(IfDkp>])Vj!n,NRY!!)HJ!!)HW!!)H9!!)Hc
+!!)Ha!!)Hc!<;Ke!!)Hd!!)HR!!)Hc!!)Hd!!)Hd!<2Bf!:K:S!7UB9!!)HO!<;Ke!<2Bn!:K7T
+mJuYTmd:)SmK*CVmem.cmf*:dmf*:dmJm6<mXaejmf*9;~>
+Ja2Ue#lj2T!!)<al2^VE!!)NRJH1u9!:&2:!:%/r!:'%R"6ojdlJqpFlL=iSlI,_5lMU\_lMCP]
+lMU__lMghalM^b`lKeKNlMU\_lM^b`lM^e_l2gtNlM^e4lMghalKJ<KlMgk`l3[OVl2^)Ll2^,7
+!<26b!:&kJ!<;?a!<29`!<26`!.jEdlBLT6!.Y~>
+J`c=]#QX#L!!)-]k5Y5=!<;QNJcD&9!9Vr6!9Uon!9WeN"6TX`k2cOBk4/HOk0s>1k5G;[k55/Y
+k5G>[k5YG]k5PA\k4/HO!<)otk5G;[k5PA\k5PD[joYSFk5GA0k5YG]k3;pGk5YJ\jpM.Nk5XTD
+k5XT+s8M-^s5rJBs8V6]s8M0\s8M-\s+0<`k*5$.!.Y~>
+JaVso"9@lX!:Kgd%.4,qmJuYTmd:)C!<;HSQN.$cp](<oRK*?Uh>dZG!!)HL!!)H^!!)H\!!)Hc
+!!)HB!!)Hd!<;K\!!)Hd!!DWh!:K7T!:KCX!:Kab!:K^a!:Kgds6^$jmJu\C!<)<c!6jm.!<)<e
+!:K:S!<;Kd!<;Kd!<2Bf!:K:S!8?l"!!)Hb!!)Hc!!)Hc!!Vcjmd:&TrpBdemf!1dmeZtamf!4d
+mJm6<mXaelmf*9;~>
+Ja2[g"TRcPs6BR`%-dfml2^)LlKSB7!!)EOJH2MH!:&D@"6ojdlK/'HlM(>ZlLk2XlMU\_lJ)@>
+lM^e`lLk2XlM^bcl2UhLmJm7Pnc/[Tqu?`^qZ$W]rW)u`"T[fflKSBJl2Uh.lMCS[l2gtNlM^e`
+lM^e`lM^e_l2gtNlM^e;lJV^ClMLV^lMU\_lMU\dl2^,7!!*#`!<DEa!!)<]!!)<`!<;<a!.jEd
+lB^`8!.Y~>
+J`cC_'EI:X!9O7]s5s@]k5XTDk2u^+s8VKKJcDSH!9W/<"6TX`k2u[Dk4nrVk4\fTk5G;[k1ot:
+k5PD\k4\fTk5PA_k5YJDmf*:Lo)A^Pr;QcZqu6ZYrr<#\"om`bk2u^BjoGG*jokbb!<3'!rT41]
+k2u[Cs5s=\s5s=\roO:^k2uXCg?.Ao!9X4Z!9X7[!9X7["m5jIk5YJ\joPMErr2u\qu6ZYrr<#\
+!<7W4J``9\rr@Q~>
+JaVpn!<DQd!!;Qg!;?H_mZRVNs7cQos60L`maM4:maD.9me6\]mf!1gmJm7Tn,NIVqu?`bqZ$Wa
+rVurdhuEcFmf3@UpAbBb!:Bgemf!4dmd^>Xmf!4dmf!4dmf!4cmJm6ZmeQqFmf!4Tm^N8smK<OX
+!:K:M!!Vcj!:K7TJaS*WQ1"YPJ,~>
+Ja2Xf#lj/irrE)a!<;`mn`kZ*n,NIRe,TL6df9C5pAb3YrW!&c!!)<R!!)<^!!)<]!!)<`!!)<B
+!!)<Q!!)<Y!!VWfl2UhLrW)u`nc/[TrW)u`rW)u`rW)r_!!&YVq>fXBrW)EP\,cQo"9@]elK\-E
+"mQ'flKSA#l@J5clMgj7~>
+J`c@^#QX#e!<3&]rrDcmn`GE&nG`LNeGfO2e,KF1p\t6Urr3)_s8V6NrrD3ZrrD3YrrD3\rrD3>
+rrD3MrrD3UrrqQbk5YJDrr<#\o)A^Prr<#\rr<#\rr;u[!<8\Rr;cisjlZOBn)h.[s5jIak5XT+
+q#:N[s8V6Ds+0<`k*>*/!.Y~>
+JaWI(!!)TXp&G$l!U]sRm_Af&med%bmbRpDs7cQos0r%/mca]OmeZtamc+9Imem+cmeHh_me-V\
+mem.cmf!1dmd:&VmJu\R!!)H_!!)Hc!!)Hc!!)Hd!<;Kd!<;Hl!:BjTmJuYTrU'XcrU'XcO6uuJ
+q!J._mdgGBmf!1dm]$6emf!4dmf!1dmdpMZmK*CV!.jQhm[<MC!.Y~>
+Ja30u!!)TTo)JgV!:/pc!!)<^!!);A!!)<K!!)<]!!)<E!!)<_!!)<[!!)<X!!)<_!<;?`!!)<P
+!!;EclMU\_lM1D[lMU\_lMU\_lM^e`lM^e`l3@=S!:&hLl2^eJ!!)u_!!&)F!<;iZ!WVHV!9i_I
+!!);a!!)<`!<;?`!!)<V!<;<c!9sQ8l@J5glMgj7~>
+J`cmm!!)TPoD\jRs6Jg_rrD3ZrrD2=rrD3GrrD3YrrD3ArrD3[rrD3WrrD3TrrD3[s8V6\rrD3L
+rrV?_k5G;[k5##Wk5G;[k5G;[k5PD\k5PD\jp1qKs5rJDk5YDB!<<#[!<8,B!!)fV!<D9]!;?HV
+k5G>\k,SF]k5PD\k5PA\k4J]RjoYSFs+0<`k*bB3!.Y~>
+JaWL)!W_WgoBuYYq#LHp!W_WglgFcQ!:K[`!:J26!:J88!<;ut!<;ut!<:XN!:Kdc!:KU^!:Kgd
+"7?-hmca]OmdpJZmf!1dmem+imJuYTmd:(+mZ-]8!;c-\!<)?b!9<LF!!)H_!!)HZ!!)Hd!.jQh
+m[3GB!.Y~>
+Ja34!!W_KcoBQ>U!ri9#q#CH\!:/qM!!)<\!!)<2!!);T!!)<_!!)<Z!!)<`!!DKd!:&eK!:'1V
+!:'O`!:'L_#3l3R!:&hLJa/9\!<;o\!<;rsrTa@^j6ENB!:'@[!:'1V!:'O`Ja.gOR-O\OJ,~>
+J`cpn!W_?_oB-)Q!W`6#q>UKXs6JhIrrD3XrrD3.rrD2PrrD3[rrD3VrrD3\rr_E`s5rSG!9WqR
+!9X:\!9X7[#3PsJs5rJDJ``!T!!)lXqZ-TWrr;$@!!&tt!9X+W!9WqR!9X:\J`_OGR-+DKJ,~>
+JaWO*!!*#d!!)ZZs8Vlps8W*!lgFcQs6dGu"7?-hmeHh_md'oRs7cQos763jm_]#)mf!4dmf!4c
+mJm6<mXafqmJm7cme["^mK<OX!:BjLme6[H!.jQhm[*AA!.Y~>
+Ja37"!!*#`!!)ZVo)S+ArrE)a\c;it!!)<[!!)<5!!)<%!!)<`!<;?`!<26`!.jEdlL='=s8D3`
+!<;utr9=Cbl2^)Lk3@j)Ja.gOQg4SNJ,~>
+J`cso!!*#\!!)ZRrr2rup]'RAs8W,]])Mlps8V6WrrD31rrD3!rrD3\s8V6\s8M-\s+0<`k4%L5
+!<)'W!;ts^s5s@Ds5rI%s+0<`k*P61!.Y~>
+JaWO*!!*#d!!)ZZs8N)eq>gQqqZ-*Q#lsD]!!)HT!!)Hd!!)Hd!!)Hd!!)H>!!)HY!!M]i!:K:S
+!!)Hc!!)HV!!*&o!!*&S!!)Hc!!;Qgmem.cmf!4dmf!1omJu\C!:BjTmJuYTJaS*Wh!P1Cmed(]
+mKN[ZmJu\C!:0(O!!*&o!!*%c!.jQhm[!;@!.Y~>
+Ja37"!!*#`!!)ZVrr<&anc8.D#ls8U!!)<L!!)<`!!)<`!!)<`!!)<:!!)<U!!MQe!:&kK!!)<_
+!!)<"!!)<_!!;EclMU__lM^e`lM^bkl2^,7!9sRLl2^)LJa.gOh!,+Dl2Uha!!)l\"p!rR!:&hL
+lfs9+Ja.gOQKnJMJ,~>
+J`cso!!*#\!!)ZRs8N/_rrD]kn)arVk2u^Dk2u^Dk5PA\k5PA\k5PA\k1K\6k4ATUk5YJDk5PA\
+k5G;[k.pusk5G;]k5XTBs8V6\s8V6\rsRuhk2u^+s5rJDk5U"pJ`bbM!<D9[!;bg^s5rJDk2u^0
+k(s%gk(2Z\k5PF3~>
+JaWO*!!*#d!!)][!W`9#q#LHprrDER!W_ZVrW)udr;Zicr;ZiceGoU;qZ$WarW)udrVurdr;Zic
+rVurdrVurdq>gQ`rrE&d!!*#d!WN/umJm7dmK*=fJaS*WQgX_Nq<e4_rpBadrpBadmdC)T!:Kgd
+!<;fo!<8DdJaS*WQ1"YPJ,~>
+Ja37"!!*#`!!)]W!<;Wjm-4WPlK\?Ks6BO_!:'L_!:&)7!:'F]!:'O`s6BR`!:'L_!:'O`!:'O`
+!:'C\s6BUarosI`rp'L`rTX@_rp'L`Ja.gOQg4SN"9/B$!;Ym[!<26`!<26`!:K.P!!);A!.jEd
+lBUZ7!.Y~>
+J`cso!!*#\!!)]S!!)Wjm,eBLk2u[Cs5s:[!9X7[!9Vi3!9X1Y!9X:\s5s=\!9X7[!9X:\!9X:\
+!9X.Xs5s@]roO4\roX7\rT4+[roX7\J`_OGQfe/Fq;q\WroO4\roO4\mcOQL!9T1=J`_OGQ0/)H
+J,~>
+JaWO*!!*#d!!)`\!s%chs8E#us8E#urrN2g!.jS<mK!:^mK!9<mXaenme["ZmJm7cmJm7cmJm7Y
+mem+cmed%bs7cQos-*M7mXaeomf*9;~>
+Ja37"!!*#`!!)`X!WVHW!!2?bJa3:#!!)fZ!!%T8Ja/Wfqu?`sq!%hZrTX@_rTX@_oBQ8S!:#4;
+Ja.gORHjePJ,~>
+J`cso!!*#\!!)`T!<D9SrrM9^J`d!p!<;iV!<7W4J``?^qZ-ER!<<#[!<<#[!<;ZQrVll[K`?Vc
+J``B_rr@Q~>
+JaWO*!!*#d!!)ZZs8N)eq>gQqrr<)f!.jP<me6[3mXaeqmeZtdmJuYTj6lmH!:KU^!<;fo!<8>b
+JaS*WQgXkRJ,~>
+Ja37"!!*#`!!)ZVrr<&ap&G-Y!.jD8lLk4/l@J5ilMCP`lMp/Lj6HUD!:#.9Ja.gOQg4SNJ,~>
+J`cso!!*#\!!)ZRs8N,^!;HKok5U"p!9X"TJ`_OGS*'SJ"6KUG!9<5@rrD25s+0<`k*P61!.Y~>
+JaWL)!W_Wgo^2e]s8VN`!<<'%!:BjT!.jQhmXaehmed(amJm7dmJm7Lmd^>Xs8;ots8;ots2"a9
+mahGimXaelmf*9;~>
+Ja34!!W_Kco]cPY!!)<Y!!DKdl2ZD#Ja.gOP3VrFrosL`rosL`k3AlF!:&/9Ja.gOQKnJMJ,~>
+J`cpn!W_?_o]?;Ws8V6]!;ZWsk5XTDJ`_OGJ``-XquH`Y!!*#\!!)0DW;ck[fDgEaJ``9\rr@Q~>
+JaWI(!!)ZZ!s%chs7u^$mf3:emd:)C!.jQhmXaelmed(_mJm7bmJm7Qmem+cmdgDYs7cQos3^lJ
+mK!.PrrE)eec5^<r;_E:JaSlmrr@Q~>
+Ja30u!!)ZV!WVH[!!)<`!<;<c!9sQ8l@J5OlB^`5!;u*^s8;-^s6JtK!!);p!!2?bqs+1]s6A/8
+!:'L_Ja.gOQg4SNJ,~>
+J`cmm!!)ZR!<D9]rr<&srrD3\s8V3_s5s?4k(2ZGk*G0-!;tsZ!;tsZ!:/eGrrD2lrrM9^qr[qY
+s5qo4!9X7[J`_OGQfe;JJ,~>
+JaVmms8N)eq>gQq!U]r=mXaeWmZd/;!;l0a!;c*`!:fLA!!*&o!!*&O!;,^Z!<2Ed!<;Kc!!)HZ
+!!)H_!!)Hc!!)Hc!!)Hb!!2KfJaS*WR-stSJ,~>
+Ja2Uerr<&ap](?[!.jEdl@J5blMLYZl2^k\l2^kSlEpWalMgk`lMgkalMU\_lLY&VlM1D[lMU\_
+lMU\_lMLV_l2ZD#Ja/Wfrr@Q~>
+J`c=]s8N/_rrDoq!TsE5k(2ZGk*5$+!;kmY!;bgX!:f3Zs7GIRs8M0\s8V6[rrD3RrrD3WrrD3[
+rrD3[rrD3ZrrM9^J`_OGR-+DKJ,~>
+JaVmmp&>!lJaS*WJaSilquHQ\!!)f^!!)WYkPtV_p](<om/Z&3!!)uc!!*#drrE&drW)udrVurd
+r;ZicrW)udrW)udrVurdrVurdr;Zug!!)EeJaS*WRI:(TJ,~>
+Ja2UeoDjI-Ja.gOQKnAJq<@t[q!%kZoBOEths(1ArTX@_rp'L`rp'I_s6BR`!:'L_!:'O`s6BR`
+s6BR`!:'O`!:'L_"R5sel2ZD#Ja/Zgrr@Q~>
+J`c=]o`'L)J`_OGQKJ)Fq;qYWpuVPVoB+0phrXq=rT4+[roX7\roX4[s5s=\!9X7[!9X:\s5s=\
+s5s=\!9X:\!9X7["Qoaak5U"pJ``B_rr@Q~>
+JaVdjrr@W<JaS*WORE#HiU6[F!:K(O!<;fo!<;rsX6orfrU'XcrU'XcrU'XcJaS*WQgXkRJ,~>
+Ja2Lbrr@W8Ja.gOOQu`DiTgCB!:&5;X6KZbrTX@_rTX@_rTX@_Ja.gOQg4SNJ,~>
+J`c4Zrr@W4J`_OGOQQH@iTC.>!9Vu7X6'E^rT4+[rT4+[rT4+[J`_OGQfe;JJ,~>
+JaVdjrr@W<JaS*WPOA>KiU6[F!:JtLpAb'kJaS*WJaTc1rr@Q~>
+Ja2Lbrr@W8Ja.gOPNr&GiTgCB!:&/9Ja.gOJa0K)rr@Q~>
+J`c4Zrr@W4J`_OGPNMcCiTC.>!9Vr6!!%T4J`_OGYibrcJ,~>
+JaVdjrr@W<JaS*WQ1"PMiU5G#!:KdcrpKacJaS*WJaTf2rr@Q~>
+Ja2Lbrr@W8Ja.gOQ0S8IiTf.t!:'L_rp'I_Ja.gOJa0N*rr@Q~>
+J`c4Zrr@W4J`_OGQ0.uEiTAnp!9X7[roX1[J`_OGJ`a6"rr@Q~>
+JaVdjrr@W<JaS*WR-skPiU6[F!:J\D!q$$gq<n4^JaS*WJaTi3rr@Q~>
+Ja2Lbrr@W8Ja.gOR-OSLiTgCB!:&D@!pTacq<IqZJa.gOJa0Q+rr@Q~>
+J`c4Zrr@W4J`_OGR-+;HiTC.>!9W/<!p9O_q<%YVJ`_OGJ`a9#rr@Q~>
+JaVdjrr@W<JaS*WWpTierU'XcrU'Xcr9jI_ipPP$!:Kdcp?qq\JaS*WJaTi3rr@Q~>
+Ja2Lbrr@W8Ja.gOWp0QarTX@_rTX@_r9F1[ip,7u!:'L_p?MYXJa.gOJa0Q+rr@Q~>
+J`c4Zrr@W4J`_OGWoa<]rT4+[rT4+[r9!nWio]"q!9X7[p?)ATJ`_OGJ`a9#rr@Q~>
+JaVdjrr@W<JaS*WWU9`drpBadrpBadrpK[ai9o7una?DWJaS*WJaTl4rr@Q~>
+Ja2Lbrr@W8Ja.gOWTjH`rosI`rosI`rp'C]i9Jtqn`p,SJa.gOJa0T,rr@Q~>
+J`c4Zrr@W4J`_OGWTF3\roO4\roO4\roX+Yi9&_mn`KiOJ`_OGJ`a<$rr@Q~>
+JaVdjrr@W<JaS*WW9sljmd:)CmJu\P!9*AF!!)HF!!)Hd!:K:T!.jQhmXaf5mf*9;~>
+Ja2Lbrr@W8Ja.gOW9OTflKSB7l2^,H!9*5B!!)<B!!)<`!:K.P!.jEdl@J6-lMgj7~>
+J`c4Zrr@W4J`_OGW9+?bk2u^+k5XT@!9*)>rrD3>rrD3\s6f%L!.j9`k(2[%k5PF3~>
+JaVdjrr@W<JaS*WVsXWemJu\P!93GF!!)HG!!)Hc!:0(P!.jQhmXaf6mf*9;~>
+Ja2Lbrr@W8Ja.gOVs4?al2^,H!93;B!!)<C!!)<_!:/qL!.jEdl@J6.lMgj7~>
+J`c4Zrr@W4J`_OGVre-^k5XTDquGa=rVll[iVro?rVu3GrW%N3J`_OG[H@JhJ,~>
+JaVdjrr@W<JaS*WVXF9\ipPJ"k3i3KJaS*WJaTu7rr@Q~>
+Ja2Lbrr@W8Ja.gOVX"!Xip,1sk3DpGJa.gOJa0]/rr@Q~>
+J`c4Zrr@W4J`_OGVWRmXr;bj>g&L3srW%N3J`_OG[c[SiJ,~>
+JaVdjrr@W<JaS*WWp]Q\k3h")!q$$giU6[FJaS*WJaU#8rr@Q~>
+Ja2Lbrr@W8Ja.gOWp99Xk3C_%!pTaciTgCBJa.gOJa0`0rr@Q~>
+J`c4Zrr@W4J`_OGWoj$Tk2tJ!!p9O_iTC+>J`_OGJ`aH(rr@Q~>
+JaVdjrr@W<JaS*WWp]]`jmLn(!:KgdhX:@CJaS*WJaU&9rr@Q~>
+Ja2Lbrr@W8Ja.gOWp9E\jm(V$!:'O`hWk(?Ja.gOJa0c1rr@Q~>
+J`c4Zrr@W4J`_OGWoj6[rr;*Bh#@B:rr:j;rW%N3J`_OG\E<ekJ,~>
+JaVdjrr@W<JaS*W\*a4rq!RtY!:KgdkjI+(g@"q?JaS*WJaU):rr@Q~>
+Ja2Lbrr@W8Ja.gO\*<tnq!%kZqZ$W]rW)0If`9akrW%N7Ja.gO\a'1pJ,~>
+J`c4Zrr@W4J`_OG\)mYjpu_GR"TRWa!<;9Fg&KdgrW%N3J`_OG\`WnlJ,~>
+JaVdjrr@W<JaS*W[dF+qqsO=]"7?0Wmem.Pmf!1dmbe'Fmf!4<mf!3;mXaeWm^hid!.Y~>
+Ja2Lbrr@W8Ja.gO[d!kmqs"1^s8;p"l2^,7r;c3LrVur`huEcBrW(R8rW%N7Ja.gO]'B:qJ,~>
+J`c4Zrr@W4J`_OG[cRPiqr[bU#Nl'Kk5PD]s6SnIrrD3>rrD3\s4?E4!.j9`k(2[+k5PF3~>
+JaVdjrr@W<JaS*W[I+"prpK[arpBadrpK[ana?>U!:JVBe*d28JaS*WJaU/<rr@Q~>
+Ja2Lbrr@W8Ja.gO[H[blrp'L`!ri6#rosI`rp'C]n`p&Q!:&>>e*?o4Ja.gOJa0l4rr@Q~>
+J`c4Zrr@W4J`_OG[H7GhroX+YroO4\roO4\rVurun`KfM!9W):e)pW0J`_OGJ`aT,rr@Q~>
+JaVdjrr@W<JaS*W[-mekrU'XcrU'ghmJm7T!;,^2!7:05!.jQhmXaf=mf*9;~>
+Ja2Lbrr@W8Ja.gO[-@YkrW!!!!<)0_!<)0d!9sOal2^JAf)X1_rW%N7Ja.gO]^#LsJ,~>
+J`c4Zrr@W4J`_OG[-%5crT4+[rT4:`jo>DDs7GI*s3Tp-!.j9`k(2[-k5PF3~>
+JaVdjrr@W<JaS*W[dO"mk3gq'!q$$gbjPK2JaS*WJaU2=rr@Q~>
+Ja2Lbrr@W8Ja.gO[d*hl!ri9#k3CY#!pTacbj,3.Ja.gOJa0o5rr@Q~>
+J`c4Zrr@W4J`_OG[c[Gek2tCt!p9O_bi\p*J`_OGJ`aW-rr@Q~>
+JaVdjrr@W<JaS*W\aK=p!U]sOmb.X@mf!4.mf*9<mXaeWm_/&g!.Y~>
+Ja2Lbrr@W8Ja.gO\a'%l!UB^KlIl4<lM^e*lMgj8l@J5OlFlK_!.Y~>
+J`c4Zrr@W4J`_OG\`Wbh!TjCGk1]h8k5PD&k5PF4k(2ZGk.TpW!.Y~>
+JaVdjrr@W<JaS*W]C,RsrpBgfmJuS@rr<&eg&T+[rr@W<JaS*W^@)"$J,~>
+Ja2Lbrr@W8Ja.gO]B]:orosRblMp28rr<&ag&T+Wrr@W8Ja.gO^?Y^uJ,~>
+J`c4Zrr@W4J`_OG]B9"kroO7^joF`0s8N)]gAf.Srr@W4J`_OG^?5FqJ,~>
+JaVdjrr@W<JaS*W^@(jurU'XcrpBadnF$5T!:JSA_X@C'JaS*WJaU;@rr@Q~>
+Ja2Lbrr@W8Ja.gO^?YRqrTXC_rosL`nETrP!:&;=_Wq+#Ja.gOJa1#8rr@Q~>
+J`c4Zrr@W4J`_OG^?5:mrT4([roO1\nE0]L!9W&9_WLgtJ`_OGJ`a`0rr@Q~>
+JaVdjrr@W<JaS*W_!_+#qsFFar9aObo^:60_=%4$JaS*WJaU>Arr@Q~>
+Ja2Lbrr@W8Ja.gO_!:gtqs"1]r9=:^o]js,_<UpuJa.gOJa1&9rr@Q~>
+J`c4Zrr@W4J`_OG^ukOpqrRkYr8mtZo]F^(_<1XqJ`_OGJ`ac1rr@Q~>
+JaVdjrr@W<JaS*W_s[C%qX+=`qX+=`p[6W5^[CmtJaS*WJaUABrr@Q~>
+Ja2Lbrr@W8Ja.gO_s7+!qW\(\qW\(\pZg?1^ZtUpJa.gOJa1):rr@Q~>
+J`c4Zrr@W4J`_OG_rggrqW7bXqW7bXpZC*-^ZP=lJ`_OGJ`af2rr@Q~>
+JaVdjrr@W<JaS*W`U<X(q!J+^q!J+^qsN2=!:Kgd^[D""rU0XbJaS*WJaUDCrr@Q~>
+Ja2Lbrr@W8Ja.gO`Tm@$q!%kZq!%kZqs)o9!:'O`^Zt^srTa@^Ja.gOJa1,;rr@Q~>
+J`c4Zrr@W4J`_OG`TI'upuVPVpuVPVqrZZ5!9X:\^ZPForT=(ZJ`_OGJ`ai3rr@Q~>
+JaVdjrr@W<JaS*WaR8p*kjJEM!:J_E!:Kgd^@(n!qX4=_JaS*WJaUGDrr@Q~>
+Ja2Lbrr@W8Ja.gOaQiX&kj&-I!:&GA!:'O`^?YUrqWe%[Ja.gOJa1/<rr@Q~>
+J`c4Zrr@W4J`_OGaQE@"kiVmE!9W2=!9X:\^?5=nqW@bWJ`_OGJ`al4rr@Q~>
+JaVdjrr@W<JaS*Wb3o0-kO-t&]C,Xup[8"\JaS*WJaUJErr@Q~>
+Ja2Lbrr@W8Ja.gOb3Jm)kN^\"]B]@qpZh_XJa.gOJa12=rr@Q~>
+J`c4Zrr@W4J`_OGb3&U%kN:Fs]B9(mpZDGTJ`_OGJ`ao5rr@Q~>
+JaVdjrr@W<JaS*Wc0kH/l0eKM!:JVB^$Yk#n*^/TJaS*WJaUMFrr@Q~>
+Ja2Lbrr@W8Ja.gOc0G0+l0A3I!:&>>^$5Rtn*9lPJa.gOJa15>rr@Q~>
+J`c4Zrr@W4J`_OGc0"m'l/qsE!9W):^#f:pn)jTLJ`_OGJ`ar6rr@Q~>
+JaVdjrr@W<JaS*WcgL]2l0d+&VsaNaJaS*WJaUPGrr@Q~>
+Ja2Lbrr@W8Ja.gOcg(E.l0?h"Vs=6]Ja.gOJa18?rr@Q~>
+J`c4Zrr@W4J`_OGcfY-*l/pRsVrmsYJ`_OGJ`au7rr@Q~>
+JaVdjrr@W<JaS*WddHu4lL+WO!:J_E!:KdcU[J-^JaS*WJaUPGrr@Q~>
+Ja2Lbrr@W8Ja.gOdd$]0lK\?K!:&GA!:'L_U[%jZJa.gOJa18?rr@Q~>
+J`c4Zrr@W4J`_OGdcUE,lK8*G!9W2=!9X7[UZVRVJ`_OGJ`au7rr@Q~>
+JaVdjrr@W<JaS*WeF*57lL+WO!:J\D!q$$g]']Ouk3i6LJaS*WJaUSHrr@Q~>
+Ja2Lbrr@W8Ja.gOeEZr3lK\?K!:&D@!pTac]'97qk3DsHJa.gOJa1;@rr@Q~>
+J`c4Zrr@W4J`_OGeE6Z/lK8*G!9W/<!p9O_]&itmk2u[DJ`_OGJ`b#8rr@Q~>
+JaVdjrr@W<JaS*WfC&M9lL*7(S*p:VJaS*WJaUVIrr@Q~>
+Ja2Lbrr@W8Ja.gOfBW55lKZt$S*L"RJa.gOJa1>Arr@Q~>
+J`c4Zrr@W4J`_OGfB2r1lK6^uS*'_NJ`_OGJ`b&9rr@Q~>
+JaVdjrr@W<JaS*Wg$\b<m-`C(R-sqRJaS*WJaUYJrr@Q~>
+Ja2Lbrr@W8Ja.gOg$8J8m-<+$R-OYNJa.gOJa1ABrr@Q~>
+J`c4Zrr@W4J`_OGg#i24m,ljuR-+AJJ`_OGJ`b):rr@Q~>
+JaVdjrr@W<JaS*Wh!Y%>m-`F)\aBFth<t7BJaS*WJaU\Krr@Q~>
+Ja2Lbrr@W8Ja.gOh!4b:m-<.%\`s.ph<Ot>Ja.gOJa1DCrr@Q~>
+J`c4Zrr@W4J`_OGgueJ6m,ln!\`Nklh<+\:J`_OGJ`b,;rr@Q~>
+JaVdjrr@W<JaS*WhX::Am-`R-!:KdcOm`2KJaS*WJaU_Lrr@Q~>
+Ja2Lbrr@W8Ja.gOhWk"=m-<:)!:'L_Om;oGJa.gOJa1GDrr@Q~>
+J`c4Zrr@W4J`_OGhWF_9m,m%%!9X7[OllWCJ`_OGJ`b/<rr@Q~>
+JaVdjrr@W<JaS*WiU6RCmI&O*]'fRueaED:JaS*WJaUbMrr@Q~>
+Ja2Lbrr@W8Ja.gOiTg:?mHW7&]'B:qea!,6Ja.gOJa1JErr@Q~>
+J`c4Zrr@W4J`_OGiTC";mH3""]&s"me`Qi2J`_OGJ`b2=rr@Q~>
+JaVdjrr@W<JaS*Wj6lgFm-alR!:JYC!:KgdM=1?CJaS*WJaUeNrr@Q~>
+Ja2Lbrr@W8Ja.gOj6HOBm-=TN!:&A?!:'O`M<b'?Ja.gOJa1MFrr@Q~>
+J`c4Zrr@W4J`_OGj6$7>m,n?J!9W,;!9X:\M<=d;J`_OGJ`b5>rr@Q~>
+JaVdjrr@W<JaS*Wk3i*HmdC#R!:JP@L$np?JaS*WJaUhOrr@Q~>
+Ja2Lbrr@W8Ja.gOk3DgDmcs`N!:&8<L$JX;Ja.gOJa1PGrr@Q~>
+J`c4Zrr@W4J`_OGk2uO@mcOKJ!9W#8L$&@7J`_OGJ`b8?rr@Q~>
+JaVdjrr@W<JaS*WkjJ?KmdAd/!:Kdcm-XiRcL(Z4bO5?0JaS*WJaUkPrr@Q~>
+Ja2Lbrr@W8Ja.gOkj&'GmcrL+!:'L_m-4QNcKYB0bNf',Ja.gOJa1SHrr@Q~>
+J`c4Zrr@W4J`_OGkiVdCmcN7'!9X7[m,e9JcK5*,bNAd(J`_OGJ`b;@rr@Q~>
+JaVdjrr@W<JaS*WlgFWMmdAg0!:KgdJaWI(rr@W<JaS*WcgLf5J,~>
+Ja2Lbrr@W8Ja.gOlg"?ImcrO,!:'O`Ja30urr@W8Ja.gOcg(N1J,~>
+J`c4Zrr@W4J`_OGlfS'EmcN:(!9X:\J`cmmrr@W4J`_OGcfY6-J,~>
+JaVdjrr@W<JaS*WmI'lPmdA[,JaW=$rr@W<JaS*Wd-go6J,~>
+Ja2Lbrr@W8Ja.gOmHXTLmcrC(Ja3$qrr@W8Ja.gOd-CW2J,~>
+J`c4Zrr@W4J`_OGmH4<HmcN.$J`cairr@W4J`_OGd,t?.J,~>
+JaVdjrr@W<JaS*WnF$/RnF$5T!:J\D!:KgdJaW4!rr@W<JaS*WdI.#7J,~>
+Ja2Lbrr@W8Ja.gOnETlNnETrP!:&D@!:'O`Ja2pnrr@W8Ja.gOdH^`3J,~>
+J`c4Zrr@W4J`_OGnE0TJnE0]L!9W/<!9X:\J`cXfrr@W4J`_OGdH:H/J,~>
+JaVdjrr@W<JaS*Wo'ZDUn*\a,JaW'rrr@W<JaS*WddI,8J,~>
+Ja2Lbrr@W8Ja.gOo'6,Qn*8I(Ja2djrr@W8Ja.gOdd$i4J,~>
+J`c4Zrr@W4J`_OGo&fiMn)i4$J`cLbrr@W4J`_OGdcUQ0J,~>
+JaVdjrr@W<JaS*Wp$V\WnF"m.fBrV=i9gRF]'fOtJaS*WJaV"Trr@Q~>
+Ja2Lbrr@W8Ja.gOp$2DSnESU*fBN>9i9C:B]'B7pJa.gOJa1_Lrr@Q~>
+J`c4Zrr@W4J`_OGp#c,OnE/@&fB*&5i8t">]&rtlJ`_OGJ`bGDrr@Q~>
+JaVdjrr@W<JaS*Wp[7qZnF$8U!:JP@JaVgkrW%N;JaS*WeF*>:J,~>
+Ja2Lbrr@W8Ja.gOpZhYVnETuQ!:&8<Ja2OcrW%N7Ja.gOeE[&6J,~>
+J`c4Zrr@W4J`_OGpZDARnE0`M!9W#8J`c7[rW%N3J`_OGeE6c2J,~>
+JaVdjrr@W<JaS*WqX4.Zo'ZMX!:J_E!:KdcJaV[grW%N;JaS*WeaEG;J,~>
+Ja2Lbrr@W8Ja.gOqWdkVo'65T!:&GA!:'L_Ja2C_rW%N7Ja.gOea!/7J,~>
+J`c4Zrr@W4J`_OGqW@SRo&fuP!9W2=!9X7[J`c+WrW%N3J`_OGe`Ql3J,~>
+JaVdjrr@W<JaS*Wr9jI_rpKacp[7t[!:J_E!q$$gJaVLbrW%N;JaS*Wf'`P<J,~>
+Ja2Lbrr@W8Ja.gOr9F1[rp'I_pZh\W!:&GA!pTacJa24ZrW%N7Ja.gOf'<88J,~>
+J`c4Zrr@W4J`_OGr9!nWroX1[pZDGS!9W2=!p9O_J`bqRrW%N3J`_OGf&lu4J,~>
+JaVdjrr@W<JaS*Ws6fdbqX4=_qsN#8JaVC_rW%N;JaS*WfC&Y=J,~>
+Ja2Lbrr@W8Ja.gOs6BL^qWe%[qs)`4Ja2+WrW%N7Ja.gOfBWA9J,~>
+J`c4Zrr@W4J`_OGs5s4ZqW@bWqrZK0J`bhOrW%N3J`_OGfB3)5J,~>
+JaVdjrr@W<JaS*WquHKZ!!)rbf)WeXrrDWX!!&tcrW%N;JaS*Wf^Ab>J,~>
+Ja2Lbrr@W8Ja.gOquHKV!!)r^f)WeTrrDWT!!&t_rW%N7Ja.gOf]rJ:J,~>
+J`c4Zrr@W4J`_OGquHKR!!)rZfDihPrrDWP!!&t[rW%N3J`_OGf]N26J,~>
+JaVdjrr@W<JaS3ZquH?V!<DQ>!.jRhmf!3;mXaeWmb.%.!.Y~>
+Ja2Lbrr@W8Ja.pRquH?R!<DE:!.jFdlM^d7l@J5OlIkJ&!.Y~>
+J`c4Zrr@W4J`_XJquH?N!<D96s+0=`k5G@3k(2ZGk1Sns!.Y~>
+JaVdjrr@W<JaS9\quH?Vr;ZichZ*ZEr;_E:e*d59JaS*WJaV4Zrr@Q~>
+Ja2Lbrr@W8Ja/!TquH?Rr;Zi_hZ*ZAr;_E6e*?r5Ja.gOJa1qRrr@Q~>
+J`c4Zrr@W4J`_^LquH?NrVll[hu<]=rVqH2e)pZ1J`_OGJ`bYJrr@Q~>
+JaVdjrr@W<JaSB_quH<Uf)W)D!!&YZrr@W<JaS*Wg@"t@J,~>
+Ja2Lbrr@W8Ja/*WquH<Qf)W)@!!&YVrr@W8Ja.gOg?S\<J,~>
+J`c4Zrr@W4J`_gOquH<MfDi,<!!&YRrr@W4J`_OGg?/D8J,~>
+JaVdjrr@W<JaSKbqZ-6Uf)UBib3o90JaS*WJaV:\rr@Q~>
+Ja2Lbrr@W8Ja/3ZqZ-6Qf)UBeb3K!,Ja.gOJa2"Trr@Q~>
+J`c4Zrr@W4J`_pRqZ-6MfDgEab3&^(J`_OGJ`b_Lrr@Q~>
+JaVdjrr@W<JaSQdquH?VrVurdhZ*ZEr;a1lrrAGSrW%N;JaS*Wh!Y1BJ,~>
+Ja2Lbrr@W8Ja/9\quH?RrVur`hZ*ZAr;a1hrrAGOrW%N7Ja.gOh!4n>J,~>
+J`c4Zrr@W4J``!TquH?Nrr2u\hu<]=rVs4drrAGKrW%N3J`_OGgueV:J,~>
+JaVdjrr@W<JaSZgqZ-6Urr<&ehZ*ZErW%N;_s[L(JaS*WJaV@^rr@Q~>
+Ja2Lbrr@W8Ja/B_qZ-6Qrr<&ahZ*ZArW%N7_s74$Ja.gOJa2(Vrr@Q~>
+J`c4Zrr@W4J``*WqZ-6Ms8N)]hu<]=rr7Q3_rgpuJ`_OGJ`beNrr@Q~>
+JaVdjrr@W<JaS`iquHBWr;ZichZ*`G!!%T<^[D($JaS*WJaVC_rr@Q~>
+Ja2Lbrr@W8Ja/HaquHBSr;Zi_hZ*`C!!%T8^ZtduJa.gOJa2+Wrr@Q~>
+J`c4Zrr@W4J``0YquHBOrVll[hu<c?s8RZ4^ZPLqJ`_OGJ`bhOrr@Q~>
+JaVdjrr@W<JaSilqZ-<Wec;rB!!&&IrW%N;JaS*WhsULEJ,~>
+Ja2Lbrr@W8Ja/QdqZ-<Sec;r>!!&&ErW%N7Ja.gOhs14AJ,~>
+J`c4Zrr@W4J``9\qZ-<Of)Mu:!!&&ArW%N3J`_OGhraq=J,~>
+JaVdjrr@W<JaSonquHBWf)UBi\F0=rJaS*WJaVIarr@Q~>
+Ja2Lbrr@W8Ja/WfquHBSf)UBe\Ea%nJa.gOJa21Yrr@Q~>
+J`c4Zrr@W4J``?^quHBOfDgEa\E<bjJ`_OGJ`bnQrr@Q~>
+JaVdjrr@W<JaT#qqZ-<Wf)W)D!!)KU!!&DSrW%N;JaS*WiU6^GJ,~>
+Ja2Lbrr@W8Ja/`iqZ-<Sf)W)@!!)KQ!!&DOrW%N7Ja.gOiTgFCJ,~>
+J`c4Zrr@W4J``HaqZ-<OfDi,<!!)KM!!&DKrW%N3J`_OGiTC.?J,~>
+JaVdjrr@W<JaUDC!!)uc!!)uc!!)3MquHEXrVurdhZ*ZEr;a%h!!%]?rW%N;JaS*WipQgHJ,~>
+Ja2Lbrr@W8Ja1,;!!)u_!!)u_!!)3IquHETrVur`hZ*ZAr;a%d!!%];rW%N7Ja.gOip-ODJ,~>
+J`c4Zrr@W4J`ai3!<<#[!<<#[!<;6EquHEPrr2u\hu<]=rVs(`!!%]7rW%N3J`_OGio^7@J,~>
+JaVdjrr@W<JaUAB!!*#d!!*#d!!)9OqZ-<Wrr<&egAlfmXR?&fJaS*WJaVRdrr@Q~>
+Ja2Lbrr@W8Ja1):!!*#`!!*#`!!)9KqZ-<Srr<&agAlfiXQocbJa.gOJa2:\rr@Q~>
+J`c4Zrr@W4J`af2!<<&\!<<&\!<;<GqZ-<Os8N)]g])ieXQKK^J`_OGJ`c"Trr@Q~>
+JaVdjrr@W<JaU>A"p")Z!:K7TlL+QMp$VeZ!:JVBYO;DjJaWI(rr@W<JaS*Wj6lpIJ,~>
+Ja2Lbrr@W8Ja1&9"p!rR!:&hLlK\9Ip$2MV!:&>>YNl,fJa30urr@W8Ja.gOj6HXEJ,~>
+J`c4Zrr@W4J`ac1#63iJs5rJDlK8!Ep#c8R!9W):YNGibJ`cmmrr@W4J`_OGj6$@AJ,~>
+JaVdjrr@W<JaU;@"9@iimJuVAqZ-BYr;ZichuEcFr;_E:V=+?`JaS*WJaVUerr@Q~>
+Ja2Lbrr@W8Ja1#8"9@]el2^29qZ-BUr;Zi_huEcBr;_E6V<\'\Ja.gOJa2=]rr@Q~>
+J`c4Zrr@W4J`a`0"TRWak5Xf1qZ-BQrVll[i;Wf>rVqH2V<7dXJ`_OGJ`c%Urr@Q~>
+JaVdjrr@W<qsFFarU'XcrU'XcJaUkPrW)?RquHHYg].?BrW%N;U[J$[JaS*WJaVXfrr@Q~>
+Ja2Lbrr@W8qs".]rTX@_rTX@_Ja1SHrW)?NquHHUg].?>rW%N7U[%aWJa.gOJa2@^rr@Q~>
+J`c4Zrr@W4qrRnYrT4+[rT4+[J`b;@rr;BJquHHQh#@B:rr7Q3UZVISJ`_OGJ`c(Vrr@Q~>
+JaVdjrr@W<qX+=`rpBadrpBadJaUtSp&OaQqZ-BYgAh<C!!'+g!!%T<q!RqXJaS*WJaV[grr@Q~>
+Ja2Lbrr@W8qW\%\rosI`rosI`Ja1\Kp&OaMqZ-BUgAh<?!!'+c!!%T8q!.YTJa.gOJa2C_rr@Q~>
+J`c4Zrr@W4qW7eXroO4\roO4\J`bDCpAadIqZ-BQg]%?;s8T1_!!%T4pu_APJ`_OGJ`c+Wrr@Q~>
+JaVdjrr@W<q<eFemd:)CmJqh+c0kQ2o'ZDUp[8"\!:JSAJaT<$quH]`rW%N;JaS*WkO/?MJ,~>
+Ja2Lbrr@W8q<A.alKSB7l2ZD#c0G9.o'6,QpZh_X!:&;=Ja0#qquH]\rW%N7Ja.gOkN`'IJ,~>
+J`c4Zrr@W4q;qn]k2u^+k5U"pc0#$*o&fiMpZDJT!9W&9J```iquH]XrW%N3J`_OGkN;dEJ,~>
+JaVdjrr@W<q!J7bmJuYTJaUeN"9@iimJutKqZ-BYfDr)B!!%T<p?qhYqX4=_JaS*WJaVairr@Q~>
+Ja2Lbrr@W8q!%t^l2^)LJa1MF"9@]el2^PCqZ-BUfDr)>!!%T8p?MPUqWe%[Ja.gOJa2Iarr@Q~>
+J`c4Zrr@W4puV_Zk5XTDJ`b5>"TRWak5Y/;qZ-BQf`/,:!!%T4p?)8QqW@bWJ`_OGJ`c1Yrr@Q~>
+JaVdjrr@W<p[8"\JaUeN"p")Z!:K7Tq<n.\p[6Z6JaT/urW)]\rW%N;JaS*Wl0eQOJ,~>
+Ja2Lbrr@W8pZh_XJa1MF"p!rR!:&hLq<IkXpZgB2Ja/lmrW)]XrW%N7Ja.gOl0A9KJ,~>
+J`c4Zrr@W4pZDJTJ`b5>#63iJs5rJDq<%STpZC-.J``TerW)]TrW%N3J`_OGl/r!GJ,~>
+JaVdjrr@W<qsO.XJaUtS!!*#d!!*#d!!)ucqZ-EZrVurdhuEcFr;_E:U@&!]n*^/TJaS*WJaVgk
+rr@Q~>
+Ja2Lbrr@W8qs*kTJa1\K!!*#`!!*#`!!)u_qZ-EVrVur`huEcBr;_E6U?V^Yn*9lPJa.gOJa2Oc
+rr@Q~>
+J`c4Zrr@W4qr[VPJ`bDC!<<&\!<<&\!<<#[qZ-ERrr2u\i;Wf>rVqH2U?2FUn)jTLJ`_OGJ`c7[
+rr@Q~>
+JaVdjrr@W<p[8"\JaUkP!!)uc!!)uc!<DQc!;Q!]!!)HF!!)Hd!3>Mf!.jRsmf!3;mXaeWmd'<@
+!.Y~>
+Ja2Lbrr@W8pZh_XJa1SH!!)u_!!)u_!<DE_!;PjY!!)<B!!)<`!3>Ab!.jFolM^d7l@J5OlKda8
+!.Y~>
+J`c4Zrr@W4pZDJTJ`b;@!<<#[!<<#[!WV<[!;P^UrrD3>rrD3\s/Y8^!.j:kk5G@3k(2ZGk3M10
+!.Y~>
+JaVdjrr@W<q!J7bmJuYTJaUSHqZ-H[gAh<C!!(jC!!%T<X7#reJaS*WJaVmmrr@Q~>
+Ja2Lbrr@W8q!%t^l2^)LJa1;@qZ-HWgAh<?!!(j?!!%T8X6TZaJa.gOJa2Uerr@Q~>
+J`c4Zrr@W4puV_Zk5XTDJ`b#8qZ-HSg]%?;s8Up;!!%T4X60B]J`_OGJ`c=]rr@Q~>
+JaVdjrr@W<q<eFemd:)CmJqh+b3o0-q<lu;!:KgdJaT/u!!)0LrW%N;JaS*WmI'uSJ,~>
+Ja2Lbrr@W8q<A.alKSB7l2ZD#b3Jm)q<H]7!:'O`Ja/lm!!)0HrW%N7Ja.gOmHX]OJ,~>
+J`c4Zrr@W4q;qn]k2u^+k5U"pb3&U%q<$H3!9X:\J``Te!!)0DrW%N3J`_OGmH4EKJ,~>
+JaVdjrr@W<qX+=`rpBadrpBadJaV7[!!)f^!<DQb!;Z'_!!)HA!.jQhmf2_T!.jQhmXafnmf*9;~>
+Ja2Lbrr@W8qW\%\rosI`rosI`Ja1tS!<;iZ!WVH^!;Yp[!!)<=!.jEdlMp/L!.jEdl@J6flMgj7~>
+J`c4Zrr@W4qW7eXroO4\roO4\J`b\K!!)fV!<D9Z!;YdWrrD39s+0<`k5XTD!.j9`k(2[^k5PF3~>
+JaVdjrr@W<qsFFarU'XcrU'XcJaV7[!!)l`qZ-H[rVurdg]2onJaWF'rr@W<JaS*WmdC)TJ,~>
+Ja2Lbrr@W8qs".]rTX@_rTX@_Ja1tS!<;o\!<;rsq<IqZ!:&>>Ja.gOqs+1]Ja.gOJa2[grr@Q~>
+J`c4Zrr@W4qrRnYrT4+[rT4+[J`b\K!!)lXqZ-HSrr2u\h#DrfJ`cjlrr@W4J`_OGmcONLJ,~>
+JaVdjrr@W<JaUVI!!)ucqZ-N]r;ZichuEcFr;`nd!!'Uu!!'_#!!(gBrr@W<JaS*Wn*^2UJ,~>
+Ja2Lbrr@W8Ja1>A!<<#_!<E/u!;l'[!!)<B!!)<_!3>Ab!4qFq!57Xt!8Ql>!.jEdl@J6hlMgj7~>
+J`c4Zrr@W4J`b&9!!)u[qZ-NUrVll[i;Wf>rVrq\!!'Um!!'^p!!(g:rr@W4J`_OGn)jWMJ,~>
+JaVdjrr@W<JaUSH!<DQc!;c-9!6X^0!.jR>mf!3;mXaeWmdTZE!.Y~>
+Ja2Lbrr@W8Ja1;@#63rg!<3$!qWc]5b3As,Ja0?%rW%N7Ja.gOnEU#RJ,~>
+J`c4Zrr@W4J`b#8!<D9[!;bj1s2sI(!.j:6k5G@3k(2ZGk4%O5!.Y~>
+JaVdjrr@W<JaUVIqZ-N]f)UBiTC2^ZeaED:JaS*WJaW'rrr@Q~>
+Ja2Lbrr@W8Ja1>Arr<0$!<3&rlIQ#elC[AA!7gB6!.jEdl@J6jlMgj7~>
+J`c4Zrr@W4J`b&9qZ-NUfDgEaTB?.Re`Qi2J`_OGJ`cLbrr@Q~>
+JaVdjrr@W<JaU\Kq#LE^gAh6Ar;`hb!!%T<a6rp,JaS*WJaW*srr@Q~>
+Ja2Lbrr@W8Ja1DCqu?fu!!*#`gAh6=r;`h^!!%T8a6NX(Ja.gOJa2gkrr@Q~>
+J`c4Zrr@W4J`b,;q#LEVg]%99rVrkZ!!%T4a6*@$J`_OGJ`cOcrr@Q~>
+JaVdjrr@W<JaW=$!!)uc!!)uc!!)!GqZ$]c!:Kab!:J_E!:KgdJaS*Wl0eNNJaS*WJaW-trr@Q~>
+Ja2Lbrr@W8Ja3$q!!)u_!!)u_!!)!CqZ$``s6BX_!!)<A!!)<`!.jEdlKRU5!.jEdl@J6llMgj7~>
+J`c4Zrr@W4J`cai!<<#[!<<#[!<;$?qZ$][!9X7\s8N)]hu<]=rr7Q3J`c4ZrW%N3J`_OGoB-&Q
+J,~>
+JaVdjrr@W<JaW:#!!*#d!!*#d!!)$HquH`a!<DQ>!3,Ad!3#;c!71'5!6ag0!.jQhmXafumf*9;~>
+Ja2Lbrr@W8Ja3!p!!*#`!!*#`!!)$DquH`]!WVH:!3,5`!3#/_!70p1!6a[,!.jEdl@J6mlMgj7~>
+J`c4Zrr@W4J`c^h!<<&\!<<&\!<;'@quH`Y!<D9\rr<&Ss/G,\!3##[!70d-!6aO(!.j9`k(2[e
+k5PF3~>
+JaVdjrr@W<JaW7""p")Z!:K7TjR2mFrU/5:\aKItJaTW-rW%N;JaS*Wp$Vh[J,~>
+Ja2Lbrr@W8Ja2so"p!rR!:&hLjQcUBrT_r6\a'1pJa0?%rW%N7Ja.gOp$2PWJ,~>
+J`c4Zrr@W4J`c[g#63iJs5rJDjQ?=>rT;]2\`WnlJ`a&rrW%N3J`_OGp#c8SJ,~>
+JaVdjrr@W<JaW4!"9@iimJuA:quHZ_g].?Br;_E:JaVC_rW%N;JaS*Wp?qq\J,~>
+Ja2Lbrr@W8Ja2pn"9@]el2]r2quHZ[g].?>r;_E6Ja2+WrW%N7Ja.gOp?MYXJ,~>
+J`c4Zrr@W4J`cXf"TRWak5XQ*quHZWh#@B:rVqH2J`bhOrW%N3J`_OGp?)ATJ,~>
+JaVdjrr@W<JaW0urW)-LqZ-T_gAh<C!!&na!!%T<[I4"oJaS*WJaW:#rr@Q~>
+Ja2Lbrr@W8Ja2mmrW)-HqZ-T[gAh<?!!&n]!!%T8[Hd_kJa.gOJa3!prr@Q~>
+J`c4Zrr@W4J`cUerr;0DqZ-TWg]%?;s8StY!!%T4[H@GgJ`_OGJ`c^hrr@Q~>
+JaVdjrr@W<JaW=$p&OLJquH`ar;ZichZ*ZErW%N;JaV+Wrr@W<JaS*Wp[8%]J,~>
+Ja2Lbrr@W8Ja3$qp&OLFquH`]r;Zi_hZ*ZArW%N7Ja1hOrr@W8Ja.gOpZhbYJ,~>
+J`c4Zrr@W4J`caipAaOBquH`YrVll[hu<]=rr7Q3J`bPGrr@W4J`_OGpZDJUJ,~>
+JaVdjrr@W<JaW0urW)<QqZ-W`f)Vc;!!&ARrrD$G!!'Rtrr@W<JaS*Wq!S.^J,~>
+Ja2Lbrr@W8Ja2mmrW)<MqZ-W\f)Vc7!!&ANrrD$C!!'Rprr@W8Ja.gOq!.kZJ,~>
+J`c4Zrr@W4J`cUerr;?IqZ-WXfDhf3!!&AJrrD$?!!'Rlrr@W4J`_OGpu_SVJ,~>
+JaVdjrr@W<JaW4!"9@iimJu_DquH`af)VZ8!!%T<X7#ufJaS*WJaW@%rr@Q~>
+Ja2Lbrr@W8Ja2pn"9@]el2^;<quH`]f)VZ4!!%T8X6T]bJa.gOJa3'rrr@Q~>
+J`c4Zrr@W4J`cXf"TRWak5Xo4quH`YfDh]0!!%T4X60E^J`_OGJ`cdjrr@Q~>
+JaVdjrr@W<JaW7""p")Z!:K7ToBsm(JaS*WbjPH1JaS*WJaWC&rr@Q~>
+Ja2Lbrr@W8Ja2so"p!rR!:&hLoBOU$Ja.gObj,0-Ja.gOJa3*srr@Q~>
+J`c4Zrr@W4J`c[g#63iJs5rJDoB,oMeGk*^J`b2=rW%N3J`_OGqW@eXJ,~>
+JaVdjrr@W<JaW:#!!*#d!!*#d!!)`\q#CE_h#IHCr;`b`rr@W<V!e3^JaS*WJaWF'rr@Q~>
+Ja2Lbrr@W8Ja3!p!!*#`!!*#`!!)`Xq#CE[h#IH?r;`b\rr@W8V!@pZJa.gOJa3-trr@Q~>
+J`c4Zrr@W4J`c^h!<<&\!<<&\!<;cTquH`r!9W,;!9X7[Vrn!ZJ``cjrW%N3J`_OGqr[nYJ,~>
+JaVdjrr@W<JaW=$!!)uc!!)uc!!)l`q#CE_g].ED!!%T<JaUGDrW%N;JaS*Wr9jRbJ,~>
+Ja2Lbrr@W8Ja3$q!!)u_!!)u_!!)l\q#CE[g].E@!!%T8Ja1/<rW%N7Ja.gOr9F:^J,~>
+J`c4Zrr@W4J`cai!<<#[!<<#[!<;oXquH`r!9W):!p9O_J`_OG_rgpuJ`_OGJ`cmmrr@Q~>
+JaVdjrr@W<p$VPRJaWR+ciAXbWpTieo'QJXW:'WbJaS*WJaWL)rr@Q~>
+Ja2Lbrr@W8p$25NJa3:#ciAX^Wp0Qao'-2TW9X?^Ja.gOJa34!rr@Q~>
+J`c4Zrr@W4p#buJJ`d!pr;b@IJ``up!!)TP!!&t[rW%N3J`_OGrT=+[J,~>
+JaVdjrr@W<p$Mh[q!J.^K'rO:!:JD<V!\3_nEp8VJaTW-rW%N;JaS*WrpKddJ,~>
+Ja2Lbrr@W8p$)MWq!%hZK'N76!:&,8V!7p[nEKuRJa0?%rW%N7Ja.gOrp'L`J,~>
+J`c4Zrr@W4p#Z8SpuVSVK')t2!9Vl4UuhXWnE']NJ`a&rrW%N3J`_OGroX4\J,~>
+JaVdjrr@W<p$Mh[q!J.^K^SX9!:JP@qsFFaJaS*W^[D($JaS*WJaWR+rr@Q~>
+Ja2Lbrr@W8p$)MWq!%hZK^/@5!:&8<qs".]Ja.gO^ZtduJa.gOJa3:#rr@Q~>
+J`c4Zrr@W4p#Z8SpuVSVK]`14rr2u\gAh'4!!%T4J`a`0rW%N3J`_OGs5s=]J,~>
+JaVdjrr@W<p$Mh[q!J.^L[Os<!:J\D!:KdcVX=EaJaW0u!!&YZrW%N;JaS*W!q$$gJ,~>
+Ja2Lbrr@W8p$)MWq!%hZL[+[8!:&D@!:'L_VWn-]Ja2mm!!&YVrW%N7Ja.gO!pTacJ,~>
+J`c4Zrr@W4p#Z8SpuVSVLZ\L7rr2u\hZ!T<rVrbW!!%T4o]?,RTB?+QJ`_OGJ`[$r!!%N~>
+JaVdjrr@W<p$Mh[q!J.^Q0nVPq!J._meQn`mb.YlmXaf1mf!3;mXaeWmf*9;~>
+Ja2Lbrr@W8p$)MWq!%hZQ0JALq!%n[lM:J\lIl5hl@J6)lM^d7l@J5OlMgj7~>
+J`c4Zrr@W4p#Z8SpuVSVQ0&&HpuVSWk5>;ZrrD38s+0<`k-4"I!.j9`k(2[p!.Y~>
+JaVdjrr@W<p$Mh[rU'[crU'[cPjSMOqX41[!:JP@JaSon!W_WgR-stSJaS*WJaWO<J,~>
+Ja2Lbrr@W8p$)MWrTX@_rTX@_Pj/8KqW\(\qZ$W]g&Q]hR-F_Ql2[4:rr@W8Ja.gOrr@Q~>
+J`c4Zrr@W4p#Z8SrT4+[rT4+[Pi_rGqW@\Us8N)]gAc`dR-"GMjoCe2rr@W4J`_OGrr@Q~>
+JaVdjrr@W<p$Mh[q!J.^PO8DNrU/8;!:KdcU[A*^JaW-t!!&ARrr@W<JaS-Xrr@Q~>
+Ja2Lbrr@W8p$)MWq!%hZPNi/JrTXC`s4IAPlMU^Xl2Ug8lLX9@!13!N!.jEdl@S=$!.Y~>
+J`c4Zrr@W4p#Z8SpuVSVPNDiFrT=%Yg]%99rVrYT!!%T4oB$#QQfe;JJ`_OGK'*(5J,~>
+JaVdjrr@W<p$Mh[q!J.^P4$`ukO&<MJaS*W^[D+%JaS*WKC8a>J,~>
+Ja2Lbrr@W8p$)MWq!%hZP3N&IdfARr!!%T8Ja1#8rr@W8Ja.mQrr@Q~>
+J`c4Zrr@W4p#Z8SpuVSVP32`Dec4gp!!%T4J`a`0rr@W4J`_UIrr@Q~>
+JaVdjrr@W<p$Mh[q!J.^Pj[3)!:KgdJaS`i!!&&IrW%N;JaS3Zrr@Q~>
+Ja2Lbrr@W8p$)MWq!%hZPj6p%!:'O`Ja/Ha!!&&ErW%N7Ja.pRrr@Q~>
+J`c4Zrr@W4p#Z8SpuVSVPihrFh#@B:rr7Q3PNDiFNop<@J`_OGK]`:7J,~>
+JaVdjrr@W<p$Mh[q!J.^QL<<(JaS*WS*p7UJaS*WL$ns@J,~>
+Ja2Lbrr@W8p$)MWq!%hZQKm$$Ja.gOS*KtQJa.gOL$J[<J,~>
+J`c4Zrr@W4p#Z8SpuVSVQKJ2If`-NbJ``HarW%N3J`_[Krr@Q~>
+JaVdjrr@W<p$VPRcgCc5rU'XcrU'Xcf'_&gJaSfk!!%`@rW%N;JaS9\rr@Q~>
+Ja2Lbrr@W8p$25NcftK1rTX@_rTX@_f':ccJa/Nc!!%`<rW%N7Ja/!Trr@Q~>
+J`c4Zrr@W4p#buJcfP6-rT4+[rT4+[f&lu4fDgEaQ0&&HL$&@7J`_OGL?AL9J,~>
+JaVdjrr@W<\*a4rrpBadrpBadfC%;l!q$$gTC)[ZJaW4!!!)HT!!&DSrW%N;JaS<]rr@Q~>
+Ja2Lbrr@W8\*<qnrosI`rosI`fBV#h!pTacTBZCVJa2pn!!)HP!!&DOrW%N7Ja/$Urr@Q~>
+J`c4Zrr@W4\)m\jroO4\roO4\fB3)5s8N'!hZ!Z>s8S_R!!%T4p#Z5SmcFKLR-+AJJ`_OGLZ\U:
+J,~>
+JaVdjrr@W<[dF>"md:)CmJtr.f`2$?rW(F8!!%T<JaU>ArW%N;JaS?^rr@Q~>
+Ja2Lbrr@W8[d"%slKSB7l2]N&f`2$;rW(F4!!%T8Ja1&9rW%N7Ja/'Vrr@Q~>
+J`c4Zrr@W4[cReok2u^+k5X,s!!)ut!!(pV!9X:\e)gW1J`_OG^ukUrJ`_OGM!"^;J,~>
+JaVdjrr@W<[I+.tmJuYTg@!Yp!:KgdJaScjrr@W<r9jOaJaS*WM=1BDJ,~>
+Ja2Lbrr@W8[H[kpl2^)Lg?RAl!:'O`Ja/Kbrr@W8r9F7]Ja.gOM<b*@J,~>
+J`c4Zrr@W4[H7Vlk5XTDg?.,h!9X:\J``3Zrr@W4r9!tYJ`_OGM<=g<J,~>
+JaVdjrr@W<[-mnnh!Wkr!:KgdJaS*WM=1?CJaS*WMXLKEJ,~>
+Ja2Lbrr@W8[-IVjh!3Sn!:'O`Ja.gOM<b'?Ja.gOMX(3AJ,~>
+J`c4Zrr@W4[-%Afgu\S:g]%99rr7Q3J`_gOrW%N3J`_jPrr@Q~>
+JaVdjrr@W<\F0%jipPCuJaS*WM=16@JaS*WMXLKEJ,~>
+Ja2Lbrr@W8\E`bfip,+qJa.gOM<as<Ja.gOMX(3AJ,~>
+J`c4Zrr@W4\E<Mbio^7?!!(dRJ`_OGM<=[8J`_OGMWXp=J,~>
+JaVdjrr@W<[-mnniU5D"!:KdcT^Dd[JaW4!!!(jC!!&YZqZ-Zarr@W<JaSHarr@Q~>
+Ja2Lbrr@W8[-IVjiTf+s!:'L_T]uLWJa2pn!!(j?!!&YVqZ-Z]rr@W8Ja/0Yrr@Q~>
+J`c4Zrr@W4[-%AfiTC.>!!(mU!9X7[T]Q4SJ`cXf!!(j;!!&YRqZ-ZYrr@W4J`_mQrr@Q~>
+JaVdjrr@W<[I+.tmJuYTjR1V"_<q:'QL4_QJaU#8qZ-N]rr@W<JaSKbrr@Q~>
+Ja2Lbrr@W8[H[kpl2^)LjQb=s_<M"#QKeGMJa0`0qZ-NYrr@W8Ja/3Zrr@Q~>
+J`c4Zrr@W4[H7Vlk5XTDjQ?LB!!(aQ_<(^tQKA/IJ`aH(qZ-NUrr@W4J`_pRrr@Q~>
+JaVdjrr@W<[dF>"md:)CmJuM>f)UBiP3r;MJaW7"rW)]\rr@W<JaSNcrr@Q~>
+Ja2Lbrr@W8[d"%slKSB7l2^)6f)UBeP3N#IJa2sorW)]Xrr@W8Ja/6[rr@Q~>
+J`c4Zrr@W4[cReok2u^+k5X].fDgEaP3)`EJ`c[grW)]Trr@W4J`_sSrr@Q~>
+JaVdjrr@W<d-^l6rU'XcrU'XcoBlSYrpBadrpBadmI&O*SF-@WJaS*Wh<t7BJaS*WNpcoIJ,~>
+Ja2Lbrr@W8d-:T2rTX@_rTX@_oBH;UrosI`rosI`mHW7&SE^(SJa.gOh<Ot>Ja.gONp?WEJ,~>
+J`c4Zrr@W4d,k?.rT4+[rT4+[oB$&QroO4\roO4\mH3""SE9eOJ`_OGh<+\:J`_OGNop?AJ,~>
+JaVdjrr@W<cgCc5rpBadrpBadoBlSYrU'XcrU'XcnF#'3!:KdcJaS*WL@,$An*^/TJaS*WO7*#J
+J,~>
+Ja2Lbrr@W8cftK1rosI`rosI`oBH;UrTX@_rTX@_nESd/!:'L_Ja.gOL?\a=n*9lPJa.gOO6Z`F
+J,~>
+J`c4Zrr@W4cfP6-roO4\roO4\oB$&QrT4+[rT4+[nE0cN!!(pV!9X7[J`_OGL?8I9n)jTLJ`_OG
+O66HBJ,~>
+JaVdjrr@W<cL(l:md:)CmJtr.gAh<C!!&PW!!%T<p$Me[bO,?1R-sqRJaS*WORE,KJ,~>
+Ja2Lbrr@W8cKYT6lKSB7l2]N&gAh<?!!&PS!!%T8p$)MWbN]'-R-OYNJa.gOOQuiGJ,~>
+J`c4Zrr@W4cK5?2k2u^+k5X,srr2ruhu<c?s8SVO!!%T4p#Z5SbN8d)R-+AJJ`_OGOQQQCJ,~>
+JaVdjrr@W<c0b]7mJuYTh!W_nXmQ/hQL4_QJaTW-rW%N;JaSZgrr@Q~>
+Ja2Lbrr@W8c0>E3l2^)Lh!3GjXm,ldQKeGMJa0?%rW%N7Ja/B_rr@Q~>
+J`c4Zrr@W4c/o0/k5XTDgueS8!!(dRXl]T`QKA/IJ`a&rrW%N3J``*Wrr@Q~>
+JaVdjrr@W<bjPH1hX:@C!:JP@WpTieJaS*Wg[5%Ak3i3KJaS*WP4&>MJ,~>
+Ja2Lbrr@W8bj,0-hWk(?!:&8<Wp0QaJa.gOgZeb=k3DpGJa.gOP3W&IJ,~>
+J`c4Zrr@W4bi\p)hWFh;!9W#8Woa9]J`_OGgZAJ9k2uXCJ`_OGP32cEJ,~>
+JaVdjrr@W<iU-[GrU'XcrU'XcqsO.Xk3i0J!:J\D!:KgdS*p:VJaS*WbO5?0JaS*WPOAGNJ,~>
+Ja2Lbrr@W8iT^CCrTX@_rTX@_qs*kTk3DmF!:&D@!:'O`S*L"RJa.gObNf',Ja.gOPNr/JJ,~>
+J`c4Zrr@W4iT:.?rT4+[rT4+[qr[VPk2uXB!9W/<!9X:\S*'_NJ`_OGbNAd(J`_OGPNMlFJ,~>
+JaVdjrr@W<i9gRFrpBadrpBadp?qn[jmN*J!:JYC!:KgdJaS*WJaVF`rW%N;JaScjrr@Q~>
+Ja2Lbrr@W8i9C:BrosI`rosI`p?MVWjm)gF!:&A?!:'O`Ja.gOJa2.XrW%N7Ja/Kbrr@Q~>
+J`c4Zrr@W4i8t%>roO4\roO4\p?)ASjlZRB!9W,;!9X:\J`_OGJ`bkPrW%N3J``3Zrr@Q~>
+JaVdjrr@W<hsL[Kmd:)CmJutK"9@iimJuM>rVurdh#IHCrW%N;NpZlI\aBFt^?tt$h!Y1BJaS*W
+Pj\POJ,~>
+Ja2Lbrr@W8hs(CGlKSB7l2^PC"9@]el2^)6rVur`h#IH?rW%N7Np6TE\`s.p^?P[uh!4n>Ja.gO
+Pj88KJ,~>
+J`c4Zrr@W4hrY.Ck2u^+k5Y/;"TRWak5X].rr2u\h>[K;rr7Q3Nog<A\`Nkl^?,CqgueV:J`_OG
+PihuGJ,~>
+JaVdjrr@W<hX1LHmJuYTp?i+bmd:)CmJuYBeGu!)!!&DSrr@W<XR?)gJaS*WQ1"YPJ,~>
+Ja2Lbrr@W8hWb4Dl2^)Lp?Dh^lKSB7l2^5:eGu!%!!&DOrr@W8XQofcJa.gOQ0SALJ,~>
+J`c4Zrr@W4hW=t@k5XTDp>uSZk2u^+k5Xi2ec2$!!!&DKrr@W4XQKN_J`_OGQ0/)HJ,~>
+JaVdjrr@W<h<t7Bp?hn\rpBadrpBadp[/"]r9i#6R-jqSJaS*WmdC)TeF*>:JaS*WQL=bQJ,~>
+Ja2Lbrr@W8h<Ot>p?DVXrosI`rosI`pZ_bYr9D`2R-FYOJa.gOmcsfPeE[&6Ja.gOQKnJMJ,~>
+J`c4Zrr@W4h<+_:p>uATroO4\roO4\pZ;GUr8uK.R-"AKJ`_OGmcONLeE6c2J`_OGQKJ2IJ,~>
+JaVdjrr@W<mdC)TrpKddrpKdd!:KO\qsFFarU'XcrU'Xcp[/(_mdAd/!:KdcRdL.UJaW0u!!%T<
+a6rp,JaS*WQgXkRJ,~>
+Ja2Lbrr@W8mcsfPrp'L`rp'L`!:'7Xqs".]rTX@_rTX@_pZ_h[lK[('!:'L_Rd'kQJa2mm!!%T8
+a6NX(Ja.gOQg4SNJ,~>
+J`c4Zrr@W4mcOQLroX7\roX7\!9X"TqrRnYrT4+[rT4+[pZ;MWk2tCt!9X7[RcXSMJ`cUe!!%T4
+a6*@$J`_OGQfe;JJ,~>
+JaVdjrr@W<mI'uSs6fmes6fmeqsOF`ipQdG!:JYC!q$$gJaS*WJaUbMrW&/M!<7W<L[P0BJ,~>
+Ja2Lbrr@W8mHX]Os6BUas6BUaqs+.\ip-LC!:&A?!pTacJa.gOJa1JErW&/I!!%T8L[+m>J,~>
+J`c4Zrr@W4mH4HKs5s@]s5s@]qr[nXio^7?!9W,;!p9O_J`_OGJ`b2=rW&/E!!%T4LZ\U:J,~>
+JaVdjrr@W<m-alR"mu?jmJm7amK<OX!:BjLmb%R?mf!3;mZ$W7!.jS2mJm71mf!3NmK!9<mYC61
+!.Y~>
+Ja2Lbrr@W8m-=TN"mQ'fl2Uh]l3%+P!9sRHlIc.;lM^d7lAb'/!.jG.l2Uh-lM^dJl2Ug8lA+[)
+!.Y~>
+J`c4Zrr@W4m,n?J"m5jbk5YJYjok_Hs5s@Dk1Tb7k5PC3k)JL'!.j;*jo>D)k5G@Fjo>C4k(i+!
+!.Y~>
+JaVdjrr@W<p?hn\rU'XcrU0L^qsFXgmd:)CmJuM>rr<&eh>dQDr;`2P!!%cA!!%T<XR?&fQ0nYP
+JaS<]rr@Q~>
+Ja2Lbrr@W8p?DVXrTX@_rTa4Zqs"@clKSB7l2^)6rr<&ah>dQ@r;`2L!!%c=!!%T8XQocbQ0J>L
+Ja/$Urr@Q~>
+J`c4Zrr@W4p>uATrT4+[rT<tVqrS+_k2u^+k5X].s8N)]hZ!T<rVr5H!!%c9!!%T4XQKK^Q0&&H
+J`_aMrr@Q~>
+JaVdjrr@W<q!S.^!q$'VrW)udrrE)er;c`_!!*#d!!*#d!!)HTr;ZichZ*ZErW)BS!!&ARrr@W<
+JaU>ArW&8P!<7W<L[P0BJ,~>
+Ja2Lbrr@W8q!.kZ!pTdNrW)u`rrE)ar;c`[!!*#`!!*#`!!)HPr;Zi_hZ*ZArW)BO!!&ANrr@W8
+Ja1&9rW&8L!!%T8L[+m>J,~>
+J`c4Zrr@W4pu_VV!p9OFrr<#\s8W,]rVucW!<<&\!<<&\!<;KLrVll[hu<]=rr;EK!!&AJrr@W4
+J`ac1rW&8H!!%T4LZ\U:J,~>
+JaVdjrr@W<qX+CbmdBEA!U]sdmJm7cmJm7Wmb@dBmem-:mYU?3!.jRGmf!3QmK!9<mYC61!.Y~>
+Ja2Lbrr@W8qW\+^lK[^9!U9[`l2Uh_l2UhSlJ)@>lMU^6lA=d+!.jFClM^dMl2Ug8lA+[)!.Y~>
+J`c4Zrr@W4qW7kZk2u%1!TsF\joGG[joGGOk1ot:k5G=2k)&4#!.j:?k5G@Ijo>C4k(i+!!.Y~>
+JaVdjrr@W<q<eCdmd:&Tmed(`mem.Gmf*7embe'Fmf!3;mXaeWm^MW`!1iQOs+0Tsmf*9;~>
+Ja2Lbrr@W8q<A+`lKS?LlMLY\lMU_ClMghalJMXBlM^d7l@J5OlF6'X!1iEK!.jEolMgj7~>
+J`c4Zrr@W4q;qk\k2u^Dk5>8Xk5G>?k5YG]k2?7>k5PC3k(2ZGk-sLP!1i9G!.j9kk5PF3~>
+JaVdjrr@W<q!J1`mdBrPrU0O_kO/<L!:JYCJaSB_!!%T<p$Me[\aKFsRI1(TJaS<]rr@Q~>
+Ja2Lbrr@W8q!%n\lK\6HrTa7[kN`$H!:&A?Ja/*W!!%T8p$)MW\a'.oRHabPJa/$Urr@Q~>
+J`c4Zrr@W4puVYXk2uR@rT="WkN;dD!9W,;J`_gO!!%T4p#Z5S\`WkkRH=JLJ`_aMrr@Q~>
+JaVdjrr@W<p[7YR"mu?jmJm7VmJm7cmf!1dmb@f,mJm6<me-#J!13*R!13-R!1E6Ts+0Tnmf*9;~>
+Ja2Lbrr@W8pZhAN"mQ'fl2UhRl2^k_lM^b`lJ)B(l2Ug8lLjHB!12sN!13!N!1E*P!.jEjlMgj7~>
+J`c4Zrr@W4pZD,J"m5jbk5YJNjo>D[k5PA\k1p!$jo>C4k4Rm:!12gJ!12jJ!1DsL!.j9fk5PF3~>
+JaVdjrr@W<q!RbSs6fmes6fmenEp;Wmb%SkmdKQD!1*$Q!.jR=mf*9UmK!9<mYC61!.Y~>
+Ja2Lbrr@W8q!.JOs6BUas6BUanEL&SlIc/glL4!<!1)mM!.jF9lMgjQl2Ug8lA+[)!.Y~>
+J`c4Zrr@W4pu_5Ks5s@]s5s@]nE'`Ok1Tcck3qF4!1)aI!.j:5k5PFMjo>C4k(i+!!.Y~>
+JaVdjrr@W<qX3qTrpKddrpKddoBlVZmbRpDmf!3;mYL<2!.jR5mf*9VmK!9<mYC61!.Y~>
+Ja2Lbrr@W8qWdYPrp'L`rp'L`oBH>VlJ;L@lM^d7lA4a*!.jF1lMgjRl2Ug8lA+[)!.Y~>
+J`c4Zrr@W4qW@DLroX7\roX7\oB$)Rk2-+<k5PC3k(r1"!.j:-k5PFNjo>C4k(i+!!.Y~>
+JaVdjrr@W<p?qbW!U]sTmK!=UfDpKjJaS*WV=+<_SF-CWJaS<]rr@Q~>
+Ja2Lbrr@W8p?MJS!U9[Pl2^nMfDpKfJa.gOV<\$[SE^(SJa/$Urr@Q~>
+J`c4Zrr@W4p?)5O!TsFLjoPMEf`-NbJ`_OGV<7aWSE9eOJ`_aMrr@Q~>
+JaVdjrr@W<p[8"\!:Kab!U]sXmb.X@mem-:mXaeWmelJQ!3#>b!.jQhm\9.L!.Y~>
+Ja2Lbrr@W8pZh_X!:'I^!U9[TlIl4<lMU^6l@J5OlMToI!3#2^!.jEdlD!SD!.Y~>
+J`c4Zrr@W4pZDJT!9X4Z!TsFPk1]h8k5G=2k(2ZGk5=?A!3#&Z!.j9`k+_#<!.Y~>
+JaVdjrr@W<qsFLcmdC#R!:Kgd"RZ6imJuqJf`2*A!!&2M!!%T<p$Me[K^Jg?R-sqRJaS*WU[J-^
+J,~>
+Ja2Lbrr@W8qs"4_lK\<J!:'O`"R5sel2^MBf`2*=!!&2I!!%T8p$)MWK^&O;R-OYNJa.gOU[%jZ
+J,~>
+J`c4Zrr@W4qrRt[k2uXB!9X:\"Qoaak5Y,:g&D-9s8S8E!!%T4p#Z5SK]W77R-+AJJ`_OGUZVRV
+J,~>
+JaVdjrr@W<qX44\!:Kgds6fmep[6Q3JaV=]!!&>Q!!%T<XR?&fJaS*WV!e6_J,~>
+Ja2Lbrr@W8qWdqX!:'O`s6BUapZg9/Ja2%U!!&>M!!%T8XQocbJa.gOV!@s[J,~>
+J`c4Zrr@W4qW@\T!9X:\s5s@]pZC$+J`bbM!!&>I!!%T4XQKK^J`_OGUuq[WJ,~>
+JaVdjrr@W<qX4@`s6fme"RZ9XmJuqJ!<DQD!!)Hd!6+@+!.jRVmJm6<me#oI!2&]Y!.jQhm\T@O
+!.Y~>
+Ja2Lbrr@W8qWe(\s6BUa"R6!Pl2^MB!<DE@!!)<`!6+4'!.jFRl2Ug8lLa?A!2&QU!.jEdlD<eG
+!.Y~>
+J`c4Zrr@W4qW@hXs5s@]"QoaHk5Y,:!WV<<rrD3\s2F+#!.j:Njo>C4k4Id9!2&EQ!.j9`k,%5?
+!.Y~>
+JaVdjrr@W<q!J7bmJuYTp$VbY!:J\D!q$$gOR<)KJaS*WK^Sg>JaS*WVXFHaJ,~>
+Ja2Lbrr@W8q!%t^l2^)Lp$2JU!:&D@!pTacOQlfGJa.gOK^/O:Ja.gOVX"0]J,~>
+J`c4Zrr@W4puV_Zk5XTDp#c5Q!9W/<!p9O_OQHNCJ`_OGK]`76J`_OGVWRmYJ,~>
+JaVdjrr@W<p[8"\p[6]7!:KgdJaS*WJaWF'!!&>QrW%N;JaTH(rr@Q~>
+Ja2Lbrr@W8pZh_XpZgE3!:'O`Ja.gOJa3-t!!&>MrW%N7Ja0/urr@Q~>
+J`c4Zrr@W4pZDJTpZC0/!9X:\J`_OGJ`cjl!!&>IrW%N3J``lmrr@Q~>
+JaVdjrr@W<qsO.XrU/5:P3r;MJaW4!!!%T<oBuVYR-sqRJaS*WW:'ZcJ,~>
+Ja2Lbrr@W8qs*kTrT_r6P3N#IJa2pn!!%T8oBQ>UR-OYNJa.gOW9XB_J,~>
+J`c4Zrr@W4qr[VPrT;]2P3)`EJ`cXf!!%T4oB-&QR-+AJJ`_OGW94*[J,~>
+JaVdjrr@W<p[8"\r9i)8JaS*WhsLIEJaTT,rr@W<JaTK)rr@Q~>
+Ja2Lbrr@W8pZh_Xr9=:^ec:9dJa2.X!!%T8X6T]bJa.gOW9XB_J,~>
+J`c4Zrr@W4pZDJTr8mtZf)L<`J`bkP!!%T4X60E^J`_OGW94*[J,~>
+JaVdjrr@W<q!J:cmJuYTmaqL>mf!3nmJm6<mXafImJm6Hmf*9<mXaf*mf*9;~>
+Ja2Lbrr@W8q!&"_l2^)LlMU\_s4mYTlM^djl2Ug8l@J6Al2UgDlMgj8l@J6"lMgj7~>
+J`c4Zrr@W4puVb[k5XTDk5G;[!8[YTk5PCfjo>C4k(2[9jo>C@k5PF4k(2Zok5PF3~>
+JaVdjrr@W<q<eCdmd:)CmaqL?mJrF<rr@W<JaS*Wo'ZMXJaS*WWp]leJ,~>
+Ja2Lbrr@W8q<A+`lKSB7lIZ(;l2["4rr@W8Ja.gOo'65TJa.gOWp9TaJ,~>
+J`c4Zrr@W4q;qk\k2u^+k1K\7k5UV,rr@W4J`_OGo&frPJ`_OGWoj<]J,~>
+JaVdjrr@W<qX+=`rpKac!:JVBJaS*WJaW@%!!%`@rW%N;JaTT,rr@Q~>
+Ja2Lbrr@W8qW\%\rp'I_!:&>>Ja.gOJa3'r!!%`<rW%N7Ja0<$rr@Q~>
+J`c4Zrr@W4qW7eXroX4[!9W):J`_OGJ`cdj!!%`8rW%N3J`a#qrr@Q~>
+JaVdjrr@W<qsFIbmb%SkmXjj,!.jS2mJm7TmJm6Smf!3;mXaf-mf*9;~>
+Ja2Lbrr@W8qs"1^lIc/gl@S:$!.jG.l2UhPl2UgOlM^d7l@J6%lMgj7~>
+J`c4Zrr@W4qrRqZk1Tcck(;^q!.j;*jo>DLjo>CKk5G@3k(2Zrk5PF3~>
+JaVdjrr@W<r9aXemJu\7!!)Hc!0$=G!.jRQmJm6<m]>jU!.jQhm]GpW!.Y~>
+Ja2Lbrr@W8r9=Cal2^,/!!)<_!0$1C!.jFMl2Ug8lE':M!.jEdlE0@O!.Y~>
+J`c4Zrr@W4r8n(]k5XT'rrD3[s,?(?!.j:Ijo>C4k,d_E!.j9`k,meG!.Y~>
+JaVdjrr@W<rU'ghmJuYTmc4?KmJrgGrrADR!!%T<`pWj,JaWI(rW%N;JaT]/rr@Q~>
+Ja2Lbrr@W8rTXRdlMp,LlJqpGl2[C?rrADN!!%T8`p3R(Ja30urW%N7Ja0E'rr@Q~>
+J`c4Zrr@W4rT47`joFQDk2cOCk5V"7rrADJ!!%T4`od:$J`cmmrW%N3J`a,trr@Q~>
+JaVdjrr@W<r9a^gmJuYTmc4A.mJm6<mXaeWmbmO4!.jQhm]Z'Y!.Y~>
+Ja2Lbrr@W8r9=IclMp,LlJqr*l2Ug8l@J5OlJUt,!.jEdlEBLQ!.Y~>
+J`c4Zrr@W4r8n._joFQDk2cQ&jo>C4k(2ZGk2>D$!.j9`k-*qI!.Y~>
+JaVdjrr@W<qsOF`!:JtLJaS*WJaS*Wm-a]MJaS*WYjVMkJ,~>
+Ja2Lbrr@W8qs+1]!WVHI!.jEdl@J5OlKmg4!.jEdlEKRR!.Y~>
+J`c4Zrr@W4qr[qY!<D9Es+0<`k(2ZGk3V7,!.j9`k-4"J!.Y~>
+JaVdjrr@W<qX3JGJaS*W!!%T<p$Me[h!P.BT^M[Ws6fjdJaS*WZ0qVlJ,~>
+Ja2Lbrr@W8qWd2CJa.gO!!%T8p$)MWh!+k>T^)CSs6BR`Ja.gOZ0M>hJ,~>
+J`c4Zrr@W4qW?r?J`_OG!!%T4p#Z5Sgu\S:T]Z+Os5s:\J`_OGZ0)&dJ,~>
+JaVdjrr@W<qX3PIN:$ZGJaTZ.!!&AR!!&e^qZ-N]rW%N;JaTi3rr@Q~>
+Ja2Lbrr@W8qWdDI!<<#uN9UBCJa0B&!!&AN!!&eZqZ-NYrW%N7Ja0Q+rr@Q~>
+J`c4Zrr@W4qW@/E!!*#uN91*?J`a)s!!&AJ!!&eVqZ-NUrW%N3J`a9#rr@Q~>
+JaVdjrr@W<rU/kLN:$ZGQL4_QJaV1Y!!%T<p?qn[p[8%]JaS*WZL7_mJ,~>
+Ja2Lbrr@W8rT`SHN9UBCQKeGMJa1nQ!!%T8p?MVWpZhbYJa.gOZKhGiJ,~>
+J`c4Zrr@W4rT="XmJi.-!!&>I!!%T4f]E/6J`c[grW)]Trr@W4J`a9#rr@Q~>
+JaVdjrr@W<s6fdb!q$'VoDes\!!)][!!%T<N:$ZGJaS*Wh!Y1BJaS*WZgRhnJ,~>
+Ja2Lbrr@W8s6BL^!p]gNoDesX!!)]W!!%T8N9UBCJa.gOh!4n>Ja.gOZg.PjJ,~>
+J`c4Zrr@W4s5s4Z!p0LFo`#!Ts8VcS!!%T4N91*?J`_OGgueV:J`_OGZf_8fJ,~>
+JaVdjrr@Z=qZ$Wao)JdYrW%N;JaS*WJaVgk!!)HTrr@W<JaTo5rr@Q~>
+Ja2Lbrr@Z9qZ$W]o)JdUrW%N7Ja.gOJa2Oc!!)HPrr@W8Ja0W-rr@Q~>
+J`c4Zrr@Z5qZ$WYoD\gQrr7Q3J`_OGJ`c7[!!)HLrr@W4J`a?%rr@Q~>
+JaVdjrr@`?quH]`!<DQ_!!)Hd!.jQhmJm6<me,uJ!.jRsmf!3;mXaf6mf*9;~>
+Ja2Lbrr@`;quH]\!WVH[!!)<`!.jEdl2Ug8lLjEB!.jFolM^d7l@J6.lMgj7~>
+J`c4Zrr@`7quH]X!<D9WrrD3\s+0<`jo>C4k4Rj:!.j:kk5G@3k(2[&k5PF3~>
+JaVdjrr@iBqZ-Q^!s%`hmeQnamJr15!!%T<JaS*W`pWg+JaS*W[dO.qJ,~>
+Ja2Lbrr@i>qZ-QZ"97WdlMCP_s69TBl2Ug8l@J5OlGi,g!.jEdlF-!X!.Y~>
+J`c4Zrr@i:qZ-QV!s%K`k55/[!9X<>jo>C4k(2ZGk/QQ_!.j9`k-jFP!.Y~>
+JaVdjrr@oDquHT]!!*#drr<5j!!)Ee!.jS7mJm6Rmf*9<mXaf]mJm7Lmf!3;mXaf8mf*9;~>
+Ja2Lbrr@o@quHTY!<<&`rr<5f!!)9a!.jG3l2UgNlMgj8l@J6Ul2UhHlM^d7l@J60lMgj7~>
+J`c4Zrr@o<quHTU!!*#\s8N8bs8V6]s+0>/jo>CJk5PF4k(2[Mjo>DDk5G@3k(2[(k5PF3~>
+JaVdjrrA#GqZ-<WrrE)errE)errD6M!!%T<TC2^ZJaS*WbO5?0JaS*W\F0@sJ,~>
+Ja2LbrrA#CqZ-<SrrE)arrE)arrD6I!!%T8TBcFVJa.gObNf',Ja.gO\Ea(oJ,~>
+J`c4ZrrA#?qZ-<Os8W,]s8W,]s8V9E!!%T4TB?.RJ`_OGbNAd(J`_OG\E<ekJ,~>
+JaVdjrrA)IquH?VrrE&drrE&drr@W<JaS*WJaW'r!!(jCrW%N;JaU):rr@Q~>
+Ja2LbrrA)EquH?RrrE&`rrE&`rr@W8Ja.gOJa2dj!!(j?rW%N7Ja0f2rr@Q~>
+J`c4ZrrA)AquH?Ns8W)\s8W)\s8RZ4J`_OGJ`cLb!!(j;rW%N3J`aN*rr@Q~>
+JaVdjrrA2LqZ)38JaS*WipHdHJaUkPrW%N;JaU,;rr@Q~>
+Ja2LbrrA2HqZ)34Ja.gOip$LDJa1SHrW%N7Ja0i3rr@Q~>
+J`c4ZrrA2DqZ)30J`_OGioU4@J`b;@rW%N3J`aQ+rr@Q~>
+JaVdjrrA8NquD<9q<e4_JaW4!!!%T<XR6&gQgXhQJaS*W]C,\!J,~>
+Ja2LbrrA8JquD<5q<@q[Ja2pn!!%T8XQfccQg4PMJa.gO]B]CrJ,~>
+J`c4ZrrA8FquD<1q;qYWJ`cXf!!%T4XQBK_Qfe8IJ`_OG]B9+nJ,~>
+JaVdjrrAAQqZ)38JaVjl!!&>Q!!%T<g$Sh?eF*>:JaS*W]C,\!J,~>
+Ja2LbrrAAMqZ)34Ja2Rd!!&>M!!%T8g$/P;eE[&6Ja.gO]B]CrJ,~>
+J`c4ZrrAAIqZ)30J`c:\!!&>I!!%T4g#`87eE6c2J`_OG]B9+nJ,~>
+JaVdjrrAGSquD<9JaVso!!%T<o^2\ZJaUPGrr@W<JaU2=rr@Q~>
+Ja2LbrrAGOquD<5Ja2[g!!%T8o]cDVJa18?rr@W8Ja0o5rr@Q~>
+J`c4ZrrAGKquD<1J`cC_!!%T4o]?,RJ`au7rr@W4J`aW-rr@Q~>
+JaVdjrrAPVqZ)38q!J+^JaS*WJaTT,rr@W<JaU5>rr@Q~>
+Ja2LbrrAPRqZ)34q!%hZJa.gOJa0<$rr@W8Ja0r6rr@Q~>
+J`c4ZrrAPNqZ)30puVPVJ`_OGJ`a#qrr@W4J`aZ.rr@Q~>
+JaVdjrrAVXquD<9JaS*WipHdHJaW4!!!(10rr@W<JaU8?rr@Q~>
+Ja2LbrrAVTquD<5Ja.gOip$LDJa2pn!!(1,rr@W8Ja0u7rr@Q~>
+J`c4ZrrAVPquD<1J`_OGioU4@J`cXf!!(1(rr@W4J`a]/rr@Q~>
+JaVdjrrA_[qZ)38qX+=`JaW4!!!%T<RdL.UR-sqRJaS*W^[D+%J,~>
+Ja2LbrrA_WqZ)34qW\%\Ja2pn!!%T8Rd'kQR-OYNJa.gO^Zth!J,~>
+J`c4ZrrA_SqZ)30qW7bXJ`cXf!!%T4RcXSMR-+AJJ`_OG^ZPOrJ,~>
+JaVdjrrAe]quD<9JaV4Z!!&>Q!!%T<lg=`Q_s[L(JaS*W_!_4&J,~>
+Ja2LbrrAeYquD<5Ja1qR!!&>M!!%T8lfnHM_s74$Ja.gO_!:q"J,~>
+J`c4ZrrAeUquD<1J`bYJ!!&>I!!%T4lfJ0I_rgpuJ`_OG^ukXsJ,~>
+JaVdjrrAn`qZ)38JaV.X!!%uG!!%T<[I4"oJaS*W_=%='J,~>
+Ja2LbrrAn\qZ)34Ja1kP!!%uC!!%T8[Hd_kJa.gO_<V%#J,~>
+J`c4ZrrAnXqZ)30J`bSH!!%u?!!%T4[H@GgJ`_OG_<1atJ,~>
+JaVdjrrAtbquEhd!!(@5rr@W<JaS*WRdU.TJaS*W_X@F(J,~>
+Ja2LbrrAt^quEh`!!(@1rr@W8Ja.gORd0kPJa.gO_Wq.$J,~>
+J`c4ZrrAtZquEh\!!(@-rr@W4J`_OGRcaSLJ`_OG_WLjuJ,~>
+JaVdjrrB(eqZ)38JaS*Wj6cmIJaW4!!!'RtrW%N;JaUGDrr@Q~>
+Ja2LbrrB(aqZ)34Ja.gOj6?UEJa2pn!!'RprW%N7Ja1/<rr@Q~>
+J`c4ZrrB(]qZ)30J`_OGj5p=AJ`cXf!!'RlrW%N3J`al4rr@Q~>
+JaVdjrrB.gquD<9qX+=`JaW4!!!%T<p$Me[Q0nVPR-sqRJaS*W`:!X*J,~>
+Ja2LbrrB.cquD<5qW\%\Ja2pn!!%T8p$)MWQ0J>LR-OYNJa.gO`9R@&J,~>
+J`c4ZrrB._quD<1qW7bXJ`cXf!!%T4p#Z5SQ0&&HR-+AJJ`_OG`9.("J,~>
+JaVdjrrB7jqZ)38q!J+^JaS*WkO/?MJaWL)!!':lrW%N;JaUMFrr@Q~>
+Ja2LbrrB7fqZ)34q!%hZJa.gOkN`'IJa34!!!':hrW%N7Ja15>rr@Q~>
+J`c4ZrrB7bqZ)30puVPVJ`_OGkN;dEJ`cpn!!':drW%N3J`ar6rr@Q~>
+JaVdjrrB=lquD<9Z0hSlJaTl4rr@W<U[J-^JaS*W`U<a+J,~>
+Ja2LbrrB=hquD<5Z0D;hJa0T,rr@W8U[%jZJa.gO`TmI'J,~>
+J`c4ZrrB=dquD<1Z/u#dJ`a<$rr@W4UZVRVJ`_OG`TI1#J,~>
+JaVdjrrBFoqZ*,R!!)!G!!%T<JaS*WL[P0BJaS*W`pWj,J,~>
+Ja2LbrrBFkqZ*,N!!)!C!!%T8Ja.gOL[+m>Ja.gO`p3R(J,~>
+J`c4ZrrBFgqZ*,J!!)!?!!%T4J`_OGLZ\U:J`_OG`od:$J,~>
+JaVdjrrBLqqZ)38JaS*WJaV.X!!&qbrr@W<JaUSHrr@Q~>
+Ja2LbrrBLmqZ)34Ja.gOJa1kP!!&q^rr@W8Ja1;@rr@Q~>
+J`c4ZrrBLiqZ)30J`_OGJ`bSH!!&qZrr@W4J`b#8rr@Q~>
+JaVdjrrBUtqZ$]c!!%T<JaW'r!!%T<p$Me[JaSrorr@W<JaUVIrr@Q~>
+Ja2LbrrBUpqZ$]_!!%T8Ja2dj!!%T8p$)MWJa/Zgrr@W8Ja1>Arr@Q~>
+J`c4ZrrBUlqZ$][!!%T4J`cLb!!%T4p#Z5SJ``B_rr@W4J`b&9rr@Q~>
+JaVdjrrB\!quHZ_rr@W<s6]jeJaS*Wea<D;NpZlIT^MdZJaS*WamT0/J,~>
+Ja2LbrrB[rquHZ[rr@W8s69RaJa.gOe`m,7Np6TET^)LVJa.gOam/m+J,~>
+J`c4ZrrB[nquHZWrr@W4s5j:]J`_OGe`Hi3Nog<AT]Z4RJ`_OGal`U'J,~>
+JaVdjrrBe$qZ-K\rW%N;WpTieQgOhRYjMJkJaSZgrW%N;JaU\Krr@Q~>
+Ja2LbrrBduqZ-KXrW%N7Wp0QaQg+PNYj)2gJa/B_rW%N7Ja1DCrr@Q~>
+J`c4ZrrBdqqZ-KTrW%N3Woa9]Qf\8JYiYocJ``*WrW%N3J`b,;rr@Q~>
+JaVdjrrBk&quHHY!W_WgR-stSoBlSYJaW0u!!%T<JaS3ZrW%N;JaU_Lrr@Q~>
+Ja2LbrrBk"quHHU!W_KcR-O\OoBH;UJa2mm!!%T8Ja.pRrW%N7Ja1GDrr@Q~>
+J`c4ZrrBjsquHHQ!W_?_R-+DKoB$#QJ`cUe!!%T4J`_XJrW%N3J`b/<rr@Q~>
+JaVdjrrBt)quD<9JaS*WJaV+W!!&>QrW%N;JaUbMrr@Q~>
+Ja2LbrrBt%quD<5Ja.gOJa1hO!!&>MrW%N7Ja1JErr@Q~>
+J`c4ZrrBt!quD<1J`_OGJ`bPG!!&>IrW%N3J`b2=rr@Q~>
+JaVdjrrC%+quD<9JaVso!!%T<p$Me[JaW*s!!&DSrW%N;JaUeNrr@Q~>
+Ja2LbrrC%'quD<5Ja2[g!!%T8p$)MWJa2gk!!&DOrW%N7Ja1MFrr@Q~>
+J`c4ZrrC%#quD<1J`cC_!!%T4p#Z5SJ`cOc!!&DKrW%N3J`b5>rr@Q~>
+JaVdjrrC..quD<9q!J+^JaS*W_sRL)QgOhRQgXhQJaS*WcL1]4J,~>
+Ja2LbrrC.*quD<5q!%hZJa.gO_s.4%Qg+PNQg4PMJa.gOcKbE0J,~>
+J`c4ZrrC.&quD<1puVPVJ`_OG_r^q!Qf\8JQfe8IJ`_OGcK>-,J,~>
+JaVdjrrC40quD<9O7*#JQgOhRQL4_QT^Dd[NUHcGJaS*WcgLf5J,~>
+Ja2LbrrC4,quD<5O6Z`FQg+PNQKeGMT]uLWNU$KCJa.gOcg(N1J,~>
+J`c4ZrrC4(quD<1O66HBQf\8JQKA/IT]Q4SNTU3?J`_OGcfY6-J,~>
+JaVdjrrC=3quD<9q!J+^JaW:#rr@W<JaS*Wo'ZMXJaS*WcgLf5J,~>
+Ja2LbrrC=/quD<5q!%hZJa3!prr@W8Ja.gOo'65TJa.gOcg(N1J,~>
+J`c4ZrrC=+quD<1puVPVJ`c^hrr@W4J`_OGo&frPJ`_OGcfY6-J,~>
+JaVdjrrCC5quD<9JaS*WJaV.X!!%]?rr@W<JaUnQrr@Q~>
+Ja2LbrrCC1quD<5Ja.gOJa1kP!!%];rr@W8Ja1VIrr@Q~>
+J`c4ZrrCC-quD<1J`_OGJ`bSH!!%]7rr@W4J`b>Arr@Q~>
+JaVdjrrCL8quD<9JaS*WiU-[GJaS*Wp?qq\JaS*WdI.#7J,~>
+Ja2LbrrCL4quD<5Ja.gOiT^CCJa.gOp?MYXJa.gOdH^`3J,~>
+J`c4ZrrCL0quD<1J`_OGiT:+?J`_OGp?)ATJ`_OGdH:H/J,~>
+JaVdjrrCR:quD<9q<e4_JaW4!!!%T<JaV"T!!&DSrW%N;JaUtSrr@Q~>
+Ja2LbrrCR6quD<5q<@q[Ja2pn!!%T8Ja1_L!!&DOrW%N7Ja1\Krr@Q~>
+J`c4ZrrCR2quD<1q;qYWJ`cXf!!%T4J`bGD!!&DKrW%N3J`bDCrr@Q~>
+JaVdjrrC[=quD<9JaWL)!!&>Q!!%T<`pNg,JaWI(rW%N;JaV"Trr@Q~>
+Ja2LbrrC[9quD<5Ja34!!!&>M!!%T8`p*O(Ja30urW%N7Ja1_Lrr@Q~>
+J`c4ZrrC[5quD<1J`cpn!!&>I!!%T4`o[7$J`cmmrW%N3J`bGDrr@Q~>
+JaVdjrrCd@qZ)38kO&<MM=(?DJaS*WJaVIarW%N;JaV%Urr@Q~>
+Ja2LbrrCd<qZ)34kNW$IM<Y'@Ja.gOJa21YrW%N7Ja1bMrr@Q~>
+J`c4ZrrCd8qZ)30kN2aEM<4d<J`_OGJ`bnQrW%N3J`bJErr@Q~>
+JaVdjrrCjBquG(2!!'%e!!%T<JaS*WipHdHJaW:#q>c*7JaV(Vrr@Q~>
+Ja2LbrrCj>quG(.!!'%a!!%T8Ja.gOip$LDJa3!pq>c*3Ja1eNrr@Q~>
+J`c4ZrrCj:quG(*!!'%]!!%T4J`_OGioU4@J`c^hq>c*/J`bMFrr@Q~>
+JaVdjrrCsEqZ)38JaS*WipHdHJaS*WmI'iOs6fjdJaS*Wf'`P<J,~>
+Ja2LbrrCsAqZ)34Ja.gOip$LDJa.gOmHXQKs6BR`Ja.gOf'<88J,~>
+J`c4ZrrCs=qZ)30J`_OGioU4@J`_OGmH49Gs5s:\J`_OGf&lu4J,~>
+JaVdjrrD$GquD<9q<e4_JaW4!!!%T<JaUAB!!&h_qZ-N]rW%N;JaV.Xrr@Q~>
+Ja2LbrrD$CquD<5q<@q[Ja2pn!!%T8Ja1):!!&h[qZ-NYrW%N7Ja1kPrr@Q~>
+J`c4ZrrD$?quD<1q;qYWJ`cXf!!%T4J`af2!!&hWqZ-NUrW%N3J`bSHrr@Q~>
+JaVdjrrD-JqZ)38JaVmm!!%T<X6orf_sRL)JaW:#rW)]\rW%N;JaV1Yrr@Q~>
+Ja2LbrrD-FqZ)34Ja2Ue!!%T8X6KZb_s.4%Ja3!prW)]XrW%N7Ja1nQrr@Q~>
+J`c4ZrrD-BqZ)30J`c=]!!%T4X6'B^_r^q!J`c^hrW)]TrW%N3J`bVIrr@Q~>
+JaVdjrrD3LquD<9JaVdj!!%T<q<e4_JaS*Wh!Y.AJaS*Wg$\k?J,~>
+Ja2LbrrD3HquD<5Ja2Lb!!%T8q<@q[Ja.gOh!4k=Ja.gOg$8S;J,~>
+J`c4ZrrD3DquD<1J`c4Z!!%T4q;qYWJ`_OGgueS9J`_OGg#i;7J,~>
+JaVdjrrD<OqZ+@u!!'_#rr@W<JaS*WJaV(V!!)HTrr@W<JaV4Zrr@Q~>
+Ja2LbrrD<KqZ+@q!!'^trr@W8Ja.gOJa1eN!!)HPrr@W8Ja1qRrr@Q~>
+J`c4ZrrD<GqZ+@m!!'^prr@W4J`_OGJ`bMF!!)HLrr@W4J`bYJrr@Q~>
+JaVdjrrDBQquD<9JaS*WipHdHJaW4!!!%T<i9pUFJaS*Wg@"t@J,~>
+Ja2LbrrDBMquD<5Ja.gOip$LDJa2pn!!%T8i9L=BJa.gOg?S\<J,~>
+J`c4ZrrDBIquD<1J`_OGioU4@J`cXf!!%T4i9(%>J`_OGg?/D8J,~>
+JaVdjrrDKTqZ)38qX+=`JaW4!!!%T<JaTc1!!&ARrr@W<JaV:\rr@Q~>
+Ja2LbrrDKPqZ)34qW\%\Ja2pn!!%T8Ja0K)!!&ANrr@W8Ja2"Trr@Q~>
+J`c4ZrrDKLqZ)30qW7bXJ`cXf!!%T4J`a3!!!&AJrr@W4J`b_Lrr@Q~>
+JaVdjrrDQVquD<9p[/"]JaS*WNpZlIea<D;JaW4!!!)0LrW%N;JaV=]rr@Q~>
+Ja2LbrrDQRquD<5pZ__YJa.gONp6TEe`m,7Ja2pn!!)0HrW%N7Ja2%Urr@Q~>
+J`c4ZrrDQNquD<1pZ;GUJ`_OGNog<Ae`Hi3J`cXf!!)0DrW%N3J`bbMrr@Q~>
+JaVdjrrDZYqZ)38JaV1Y!!&AR!!)c]rr@W<JaU_LrW%N;JaV@^rr@Q~>
+Ja2LbrrDZUqZ)34Ja1nQ!!&AN!!)cYrr@W8Ja1GDrW%N7Ja2(Vrr@Q~>
+J`c4ZrrDZQqZ)30J`bVI!!&AJ!!)cUrr@W4J`b/<rW%N3J`beNrr@Q~>
+JaVdjrrD`[quEhd!!(@5!!%T<JaS*WJaT`0rW%N;JaVC_rr@Q~>
+Ja2LbrrD`WquEh`!!(@1!!%T8Ja.gOJa0H(rW%N7Ja2+Wrr@Q~>
+J`c4ZrrD`SquEh\!!(@-!!%T4J`_OGJ`a/urW%N3J`bhOrr@Q~>
+JaVdjrrDi^qZ)38JaS*WJaV+W!!%T<p$Me[h!Y.AJaS*WhsULEJ,~>
+Ja2LbrrDiZqZ)34Ja.gOJa1hO!!%T8p$)MWh!4k=Ja.gOhs14AJ,~>
+J`c4ZrrDiVqZ)30J`_OGJ`bPG!!%T4p#Z5SgueS9J`_OGhraq=J,~>
+JaVdjrrDo`quD<9fBrV=rU'XcrU'XcU@&!]JaW4!!!%T<X6orfR-sqRJaS*Wi9pUFJ,~>
+Ja2LbrrDo\quD<5fBN>9rTX@_rTX@_U?V^YJa2pn!!%T8X6KZbR-OYNJa.gOi9L=BJ,~>
+J`c4ZrrDoXquD<1fB*)5rT4+[rT4+[U?2FUJ`cXf!!%T4X6'B^R-+AJJ`_OGi9(%>J,~>
+JaVdjrrE#cqZ)38q!J+^hX1@DrpBadrpBadJaS*WW9sWckO&<MJaW7"rrCR:rW%N;JaVLbrr@Q~>
+Ja2LbrrE#_qZ)34q!%hZhWb(@rosI`rosI`Ja.gOW9O?_kNW$IJa2sorrCR6rW%N7Ja24Zrr@Q~>
+J`c4ZrrE#[qZ)30puVPVhW=h<roO4\roO4\J`_OGW9+'[kN2aEJ`c[grrCR2rW%N3J`bqRrr@Q~>
+JaVdjrrE)equD<9d-_)<md:)CmJqh+s6]jeSaHIXqsFFaJaS*W^[D($JaS*WipQgHJ,~>
+Ja2LbrrE)aquD<5d-:f8lKSB7l2ZD#s69RaSa$1Tqs".]Ja.gO^ZtduJa.gOip-ODJ,~>
+J`c4ZrrE)]quD<1d,kQ4k2u^+k5U"ps5j:]S`TnPqrRkYJ`_OG^ZPLqJ`_OGio^7@J,~>
+JaVdjq>d&R!!(sF!!(R;"9@iimJuP?!!'_#!!%T<JaS*WX7#reJaS*Wj6lpIJ,~>
+Ja2Lbq>d&N!!(sB!!(R7"9@]el2^,7!!'^t!!%T8Ja.gOX6TZaJa.gOj6HXEJ,~>
+J`c4Zq>d&J!!(s>!!(R3"TRWak5X`/!!'^p!!%T4J`_OGX60B]J`_OGj6$@AJ,~>
+JaVairW%N;amT-.JaS*WOmW2LJaW4!!!(10rr@W<JaVRdrr@Q~>
+Ja2IarW%N7am/j*Ja.gOOm2oHJa2pn!!(1,rr@W8Ja2:\rr@Q~>
+J`c1YrW%N3al`U&J`_OGOlcWDJ`cXf!!(1(rr@W4J`c"Trr@Q~>
+JaVairW%N;c0k9*YO2AjJaW4!!!%T<RI1%TR-stSJaS*WjR3$JJ,~>
+Ja2IarW%N7c0G!&YNc)fJa2pn!!%T8RHabPR-O\OJa.gOjQcaFJ,~>
+J`c1YrW%N3c0"a"YN>fbJ`cXf!!%T4RH=JLR-+DKJ`_OGjQ?IBJ,~>
+JaV^hrW%N;rpBadcL1Z3JaS*WQgOhRJaTr6rr@W<JaVXfrr@Q~>
+Ja2F`rW%N7rosI`cKbB/Ja.gOQg+PNJa0Z.rr@W8Ja2@^rr@Q~>
+J`c.XrW%N3roO1\cK>-+J`_OGQf\8JJ`aB&rr@W4J`c(Vrr@Q~>
+JaV[grW%N;bjGT6mJuYTJaW@%!!&ARrr@W<JaU>ArW%N;JaV[grr@Q~>
+Ja2C_rW%N7bj#<2l2^)LJa3'r!!&ANrr@W8Ja1&9rW%N7Ja2C_rr@Q~>
+J`c+WrW%N3biT'.k5XTDJ`cdj!!&AJrr@W4J`ac1rW%N3J`c+Wrr@Q~>
+JaVXfrrAAQ!!'Rt"p")Z!:K7Tk3`3Ld-go6JaS*WJaSuprW%N;JaV^hrr@Q~>
+Ja2@^rrAAM!!'Rp"p!rR!:&hLk3;pHd-CW2Ja.gOJa/]hrW%N7Ja2F`rr@Q~>
+J`c(VrrAAI!!'Rl#63iJs5rJDk2lXDd,t?.J`_OGJ``E`rW%N3J`c.Xrr@Q~>
+JaVUerrADR!!'Uu!!*#d!!*#d!!%T<JaT6"!!%T<p$Me[\aKFsJaS*WkjJHNJ,~>
+Ja2=]rrADN!!'Uq!!*#`!!*#`!!%T8Ja/ro!!%T8p$)MW\a'.oJa.gOkj&0JJ,~>
+J`c%UrrADJ!!'Um!<<&\!<<&\!<7W4J``Zg!!%T4p#Z5S\`WkkJ`_OGkiVmFJ,~>
+JaVRdrr@W<dI$u7rU'XcrU'Xc]^>b"JaW4!!!%T<JaT,trW%N;JaVdjrr@Q~>
+Ja2:\rr@W8dHU]3rTX@_rTX@_]]oIsJa2pn!!%T8Ja/ilrW%N7Ja2Lbrr@Q~>
+J`c"Trr@W4dH1H/rT4+[rT4+[]]K1oJ`cXf!!%T4J``QdrW%N3J`c4Zrr@Q~>
+JaVOcrrA,J!!%T<p$Me[JaS*Wk3`3LJaTW-rW%N;JaVgkrr@Q~>
+Ja27[rrA,F!!%T8p$)MWJa.gOk3;pHJa0?%rW%N7Ja2Ocrr@Q~>
+J`btSrrA,B!!%T4p#Z5SJ`_OGk2lXDJ`a&rrW%N3J`c7[rr@Q~>
+JaW:#!!)ESrW%N;JaU8?!!&AR!!&VY!!)l`!!%T<X7#reJaS*WlgFcQJ,~>
+Ja3!p!!)EOrW%N7Ja0u7!!&AN!!&VU!!)l\!!%T8X6TZaJa.gOlg"KMJ,~>
+J`c^h!!)EKrW%N3J`a]/!!&AJ!!&VQ!!)lX!!%T4X60B]J`_OGlfS3IJ,~>
+JaW=$!W_WgmI'rRJaTW-rrD'H!!%T<JaS*WL[P-AJaS*Wm-alRJ,~>
+Ja3$q!W_KcmHXZNJa0?%rrD'D!!%T8Ja.gOL[+j=Ja.gOm-=TNJ,~>
+J`cai!W_?_mH4BJJ`a&rrrD'@!!%T4J`_OGLZ\R9J`_OGm,n<JJ,~>
+JaW@%!!*#d!!)ESrW&;Q!!%T<JaS*Wj6cmIJaW4!!!&qbrW%N;JaVpnrr@Q~>
+Ja3'r!!*#`!!)EOrW&;M!!%T8Ja.gOj6?UEJa2pn!!&q^rW%N7Ja2Xfrr@Q~>
+J`cdj!!*#\!!)EKrW&;I!!%T4J`_OGj5p=AJ`cXf!!&qZrW%N3J`c@^rr@Q~>
+JaW@%!!*#d!!)BRrW%N;JaS9\!!%T<JaSKbrr@W<JaVpnrr@Q~>
+Ja3'r!!*#`!!)BNrW%N7Ja/!T!!%T8Ja/3Zrr@W8Ja2Xfrr@Q~>
+J`cdj!!*#\!!)BJrW%N3J`_^L!!%T4J`_pRrr@W4J`c@^rr@Q~>
+JaW@%!!*#d!!)?QrW&Y[!!%T<p$Me[JaS*WJaVdj!!&ARrr@W<JaVsorr@Q~>
+Ja3'r!!*#`!!)?MrW&YW!!%T8p$)MWJa.gOJa2Lb!!&ANrr@W8Ja2[grr@Q~>
+J`cdj!!*#\!!)?IrW&YS!!%T4p#Z5SJ`_OGJ`c4Z!!&AJrr@W4J`cC_rr@Q~>
+JaW@%!!*#d!!)<PrW%N;JaS*We*[29YjMJkkjAENO6uuJT'lUYJaS*Wn*^2UJ,~>
+Ja3'r!!*#`!!)<LrW%N7Ja.gOe*6o5Yj)2gkir-JO6Q]FT'H=UJa.gOn*9oQJ,~>
+J`cdj!!*#\!!)<HrW%N3J`_OGe)gW1YiYockiMjFO6-EBT'$%QJ`_OGn)jWMJ,~>
+JaW@%!!*#d!!)9OrW%N;XR6&goBlSYJaW0u!!%T<JaS3ZrW%N;JaW$qrr@Q~>
+Ja3'r!!*#`!!)9KrW%N7XQfccoBH;UJa2mm!!%T8Ja.pRrW%N7Ja2airr@Q~>
+J`cdj!!*#\!!)9GrW%N3XQBK_oB$#QJ`cUe!!%T4J`_XJrW%N3J`cIarr@Q~>
+JaW=$!W_WgkO/?MWp]lenF$;VJaS*WJaW4!!!%T<p$Me[QL=_PJaS*Wna?DWJ,~>
+Ja3$q!W_KckN`'IWp9TanEU#RJa.gOJa2pn!!%T8p$)MWQKnGLJa.gOn`p,SJ,~>
+J`cai!W_?_kN;dEWoj<]nE0`NJ`_OGJ`cXf!!%T4p#Z5SQKJ/HJ`_OGn`KiOJ,~>
+JaW:#!!)-Krr@W<JaSlm!!%T<p$Me[JaS?^rW%N;JaW*srr@Q~>
+Ja3!p!!)-Grr@W8Ja/Te!!%T8p$)MWJa/'VrW%N7Ja2gkrr@Q~>
+J`c^h!!)-Crr@W4J``<]!!%T4p#Z5SJ`_dNrW%N3J`cOcrr@Q~>
+JaV4ZrrB@m!!%T<p$Me[JaS*WJaV.X!!&DSrW%N;JaW-trr@Q~>
+Ja1qRrrB@i!!%T8p$)MWJa.gOJa1kP!!&DOrW%N7Ja2jlrr@Q~>
+J`bYJrrB@e!!%T4p#Z5SJ`_OGJ`bSH!!&DKrW%N3J`cRdrr@Q~>
+JaV4ZrW%N;JaS*WP3r;Mf'WM<U$_m\NUHcGJaS*Wo^;_ZJ,~>
+Ja1qRrW%N7Ja.gOP3N#If'358U$;UXNU$KCJa.gOo]lGVJ,~>
+J`bYJrW%N3J`_OGP3)`Ef&cr4U#l=TNTU3?J`_OGo]H/RJ,~>
+JaV1YrW%N;X6orfQL4_QjR3$JJaS*WJaW*srW%N;JaW4!rr@Q~>
+Ja1nQrW%N7X6KZbQKeGMjQcaFJa.gOJa2gkrW%N7Ja2pnrr@Q~>
+J`bVIrW%N3X6'B^QKA/IjQ?IBJ`_OGJ`cOcrW%N3J`cXfrr@Q~>
+JaV.XrW'V!!!(jC!!&AR!!%T<JaS*WjR*!JK^Sg>JaS*Wp?qq\J,~>
+Ja1kPrW'Ur!!(j?!!&AN!!%T8Ja.gOjQZ^FK^/O:Ja.gOp?MYXJ,~>
+J`bSHrW'Un!!(j;!!&AJ!!%T4J`_OGjQ6FBK]`76J`_OGp?)ATJ,~>
+JaV+WrW%N;JaS*WSF-@WJaW4!!!%Z>rr@W<JaW7"rr@Q~>
+Ja1hOrW%N7Ja.gOSE^(SJa2pn!!%Z:rr@W8Ja2sorr@Q~>
+J`bPGrW%N3J`_OGSE9eOJ`cXf!!%Z6rr@W4J`c[grr@Q~>
+JaV(VrW%N;\*a4rJaW4!!!%T<JaV"TrrAGSrr@W<JaW:#rr@Q~>
+Ja1eNrW%N7\*<qnJa2pn!!%T8Ja1_LrrAGOrr@W8Ja3!prr@Q~>
+J`bMFrW%N3\)mYjJ`cXf!!%T4J`bGDrrAGKrr@W4J`c^hrr@Q~>
+JaV%UrW'q*!!%T<JaS*WiU-[G`U3^+ZgRhnJaWF'rr@W<JaW=$rr@Q~>
+Ja1bMrW'q&!!%T8Ja.gOiT^CC`TdF'Zg.PjJa3-trr@W8Ja3$qrr@Q~>
+J`bJErW'q"!!%T4J`_OGiT:+?`T@.#Zf_8fJ`cjlrr@W4J`cairr@Q~>
+JaV"TrW%N;JaU;@!!)`\!!%T<JaS*Wi9pREJaS*Wq<n7_J,~>
+Ja1_LrW%N7Ja1#8!!)`X!!%T8Ja.gOi9L:AJa.gOq<It[J,~>
+J`bGDrW%N3J`a`0!!)`T!!%T4J`_OGi9("=J`_OGq<%\WJ,~>
+JaUtSrW(73!!(41!!'(f!!)HT!!%T<JaS*WJaVjlq>c*7JaWC&rr@Q~>
+Ja1\KrW(7/!!(4-!!'(b!!)HP!!%T8Ja.gOJa2Rdq>c*3Ja3*srr@Q~>
+J`bDCrW(7+!!(4)!!'(^!!)HL!!%T4J`_OGJ`c:\q>c*/J`cgkrr@Q~>
+JaUqRrr@W<JaS*WXmQ/hJaW4!!!%T<qX44\s6fjdJaS*WqsOIaJ,~>
+Ja1YJrr@W8Ja.gOXm,ldJa2pn!!%T8qWdqXs6BR`Ja.gOqs+1]J,~>
+J`bABrr@W4J`_OGXl]T`J`cXf!!%T4qW@YTs5s:\J`_OGqr[nYJ,~>
+JaUnQrr@W<aR0$.JaW4!!!%T<JaUAB!!&h_qZ-N]rW%N;JaWI(rr@Q~>
+Ja1VIrr@W8aQ`a*Ja2pn!!%T8Ja1):!!&h[qZ-NYrW%N7Ja30urr@Q~>
+J`b>Arr@W4aQ<I&J`cXf!!%T4J`af2!!&hWqZ-NUrW%N3J`cmmrr@Q~>
+JaUkPrrCX<!!%T<JaS*WiU-[GZgIen`U3^+JaW7"rW)]\rW%N;JaWL)rr@Q~>
+Ja1SHrrCX8!!%T8Ja.gOiT^CCZg%Mj`TdF'Ja2sorW)]XrW%N7Ja34!rr@Q~>
+J`b;@rrCX4!!%T4J`_OGiT:+?ZfV5f`T@.#J`c[grW)]TrW%N3J`cpnrr@Q~>
+JaUkPrW%N;JaU;@rrADR!!%T<JaU;@rW%N;JaWO*rr@Q~>
+Ja1SHrW%N7Ja1#8rrADN!!%T8Ja1#8rW%N7Ja37"rr@Q~>
+J`b;@rW%N3J`a`0rrADJ!!%T4J`a`0rW%N3J`csorr@Q~>
+JaUhOrW%N;ddI,8h<k7CJaS*WJaS*WqX+=`mdC&SJaS*Ws6fmeJ,~>
+Ja1PGrW%N7dd$i4h<Ft?Ja.gOJa.gOqW\%\mcscOJa.gOs6BUaJ,~>
+J`b8?rW%N3dcUQ0h<"\;J`_OGJ`_OGqW7bXmcOKKJ`_OGs5s=]J,~>
+JaUeNrW%N;JaS*W^[;(%JaW4!!!%T<i9pREJaS*W!q$$gJ,~>
+Ja1MFrW%N7Ja.gO^Zke!Ja2pn!!%T8i9L:AJa.gO!pTacJ,~>
+J`b5>rW%N3J`_OG^ZGLrJ`cXf!!%T4i9("=J`_OG!p0I_J,~>
+JaUbMrW%N;g?nq@JaW4!!!%T<JaT`0!!&DSrr@W<JaNU-!!%N~>
+Ja1JErW%N7g?JY<Ja2pn!!%T8Ja0H(!!&DOrr@W8Ja*=%!!%N~>
+J`b2=rW%N3g?&A8J`cXf!!%T4J`a/u!!&DKrr@W4J`[$r!!%N~>
+JaU_LrW)0M!!%T<p$Me[JaS*Wmd:&TU$_m\QgOhR[-dnojmN-KJaS*Wrr@Q~>
+Ja1GDrW)0I!!%T8p$)MWJa.gOmcjcPU$;UXQg+PN[-@Vkjm)jGJa.gOrr@Q~>
+J`b/<rW)0E!!%T4p#Z5SJ`_OGmcFKLU#l=TQf\8J[,q>gjlZRCJ`_OGrr@Q~>
+JaU\KrW%N;JaU;@!!&>Q!!%T<JaU;@rr@W<K'rX=J,~>
+Ja1DCrW%N7Ja1#8!!&>M!!%T8Ja1#8rr@W8K'N@9J,~>
+J`b,;rW%N3J`a`0!!&>I!!%T4J`a`0rr@W4K'*(5J,~>
+JaUYJrW%N;jR*!Jb3f60JaS*WJaSKb!!(jCrW%N;KC8a>J,~>
+Ja1ABrW%N7jQZ^Fb3As,Ja.gOJa/3Z!!(j?rW%N7KBiI:J,~>
+J`b):rW%N3jQ6FBb2r[(J`_OGJ`_pR!!(j;rW%N3KBE16J,~>
+JaUVIrW)]\rrAk_!!%T<JaU/<!!%T<p$Me[JaUkPrW%N;K^Sj?J,~>
+Ja1>ArW)]XrrAk[!!%T8Ja0l4!!%T8p$)MWJa1SHrW%N7K^/R;J,~>
+J`b&9rW)]TrrAkW!!%T4J`aT,!!%T4p#Z5SJ`b;@rW%N3K]`:7J,~>
+JaUSHrrDl_quD<9JaVjl!!%T<JaS*W[-mnnJaS6[rr@Q~>
+Ja1;@rrDl[quD<5Ja2Rd!!%T8Ja.gO[-IVjJa.sSrr@Q~>
+J`b#8rrDlWquD<1J`c:\!!%T4J`_OG[-%>fJ`_[Krr@Q~>
+JaUPGrrDubquD<9p?hn\JaS*WJaSWf!!(%,!!(O:rW%N;L@5'AJ,~>
+Ja18?rrDu^quD<5p?DVXJa.gOJa/?^!!(%(!!(O6rW%N7L?ed=J,~>
+J`au7rrDuZquD<1p>u>TJ`_OGJ``'V!!(%$!!(O2rW%N3L?AL9J,~>
+JaUMFrrE)equD<9JaUMF!!&SX!!)rb!!%T<qsFFaJaUPGrW%N;L[P0BJ,~>
+Ja15>rrE)aquD<5Ja15>!!&ST!!)r^!!%T8qs".]Ja18?rW%N7L[+m>J,~>
+J`ar6rrE)]quD<1J`ar6!!&SP!!)rZ!!%T4qrRkYJ`au7rW%N3LZ\U:J,~>
+JaUMFq>c*7q<e4_\F'=s^?tt$g?nq@JaS*WJaV"TrW%N;M!k9CJ,~>
+Ja15>q>c*3q<@q[\EX%o^?P[ug?JY<Ja.gOJa1_LrW%N7M!G!?J,~>
+J`ar6q>c*/q;qYW\E3bk^?,Cqg?&A8J`_OGJ`bGDrW%N3M!"^;J,~>
+JaUJEr;`5Q!!%T<JaUeN!!%T<p$Me[JaW4!!!(10rW%N;M=1BDJ,~>
+Ja12=r;`5M!!%T8Ja1MF!!%T8p$)MWJa2pn!!(1,rW%N7M<b*@J,~>
+J`ao5r;`5I!!%T4J`b5>!!%T4p#Z5SJ`cXf!!(1(rW%N3M<=g<J,~>
+JaUGDrW%N;JaW$q!!%T<JaS*WU@/!\JaSE`rr@Q~>
+Ja1/<rW%N7Ja2ai!!%T8Ja.gOU?_^XJa/-Xrr@Q~>
+J`al4rW%N3J`cIa!!%T4J`_OGU?;FTJ`_jPrr@Q~>
+JaUDCrW%N;rpBadJaS*WJaS*Ws6]jefBrV=_X@F(JaSE`rr@Q~>
+Ja1,;rW%N7rosI`Ja.gOJa.gOs69RafBN>9_Wq.$Ja/-Xrr@Q~>
+J`ai3rW%N3roO1\J`_OGJ`_OGs5j:]fB*&5_WLjuJ`_jPrr@Q~>
+JaUABrW%N;JaS*Wlg=`QlL"WPQL4_Qq<e4_JaTo5rr@W<MsgTFJ,~>
+Ja1):rW%N7Ja.gOlfnHMlKS?LQKeGMq<@q[Ja0W-rr@W8MsC<BJ,~>
+J`af2rW%N3J`_OGlfJ0IlK/'HQKA/Iq;qYWJ`a?%rr@W4Mrt$>J,~>
+JaU>ArW%N;JaWC&rr@W<JaS*WRI:(TJaSKbrr@Q~>
+Ja1&9rW%N7Ja3*srr@W8Ja.gORHjePJa/3Zrr@Q~>
+J`ac1rW%N3J`cgkrr@W4J`_OGRHFMLJ`_pRrr@Q~>
+JaU;@rW&>Rrr@W<JaVF`!!%T<p$Me[JaW4!!!'RtrW%N;NUHfHJ,~>
+Ja1#8rW&>Nrr@W8Ja2.X!!%T8p$)MWJa2pn!!'RprW%N7NU$NDJ,~>
+J`a`0rW&>Jrr@W4J`bkP!!%T4p#Z5SJ`cXf!!'RlrW%N3NTU6@J,~>
+JaU8?rW%N;K'iU=JaW4!!!%T<p$Me[JaTT,rW%N;NpcoIJ,~>
+Ja0u7rW%N7K'E=9Ja2pn!!%T8p$)MWJa0<$rW%N7Np?WEJ,~>
+J`a]/rW%N3K'!%5J`cXf!!%T4p#Z5SJ`a#qrW%N3Nop?AJ,~>
+JaU5>rrA,J!!%T<p$Me[JaS*WJaWC&!!)9O!!':lrW%N;O7*#JJ,~>
+Ja0r6rrA,F!!%T8p$)MWJa.gOJa3*s!!)9K!!':hrW%N7O6Z`FJ,~>
+J`aZ.rrA,B!!%T4p#Z5SJ`_OGJ`cgk!!)9G!!':drW%N3O66HBJ,~>
+JaV%UquH0Qrr@W<JaS*Wr9aObJaW7"rrDl_!!%T<XR?&fJaSWfrr@Q~>
+Ja1bMquH0Mrr@W8Ja.gOr9=7^Ja2sorrDl[!!%T8XQocbJa/?^rr@Q~>
+J`bJEquH0Irr@W4J`_OGr8mtZJ`c[grrDlW!!%T4XQKK^J``'Vrr@Q~>
+JaV%U!!)9Orr@W<Ms^QF[dF+qQL4_QJaS*W^[D($JaSZgrr@Q~>
+Ja1bM!!)9Krr@W8Ms:9B[d!hmQKeGMJa.gO^ZtduJa/B_rr@Q~>
+J`bJE!!)9Grr@W4Mrk!>[cRPiQKA/IJ`_OG^ZPLqJ``*Wrr@Q~>
+JaV%U!!)9OrW&;Q!!&AR!!%T<JaS*W_<q:'VsaNaJaS]hrr@Q~>
+Ja1bM!!)9KrW&;M!!&AN!!%T8Ja.gO_<M"#Vs=6]Ja/E`rr@Q~>
+J`bJE!!)9GrW&;I!!&AJ!!%T4J`_OG_<(^tVrmsYJ``-Xrr@Q~>
+JaV%U!s%`h!:0(P!.jQhmY:-0!.jS2mJm6<m[<MB!.jR%mf*9;~>
+Ja1bM!s%Td!:/qL!.jEdlA"R(!.jG.l2Ug8lC$r:!.jF!lMgj7~>
+J`bJE!s%H`!:/eH!.j9`k(`!u!.j;*jo>C4k*bB2!.j9rk5PF3~>
+JaV%UrrE)e!!)?QrW&Y[!!%T<p$Me[JaS*WJaVai!!)oa!!&YZrW%N;Pj\POJ,~>
+Ja1bMrrE)a!!)?MrW&YW!!%T8p$)MWJa.gOJa2Ia!!)o]!!&YVrW%N7Pj88KJ,~>
+J`bJErrE)]!!)?IrW&YS!!%T4p#Z5SJ`_OGJ`c1Y!!)oY!!&YRrW%N3PihuGJ,~>
+JaUnQ!!)<PrW%N;JaSQd!!%T<p?hn\kO/?MJaTW-rr@W<Pj\POJ,~>
+Ja1VI!!)<LrW%N7Ja/9\!!%T8p?DVXkN`'IJa0?%rr@W8Pj88KJ,~>
+J`b>A!!)<HrW%N3J``!T!!%T4p>u>TkN;dEJ`a&rrr@W4PihuGJ,~>
+JaUnQ!!)9OrW%N;SaHIXV!\3_QL4_QJaS*W^[D+%JaSfkrr@Q~>
+Ja1VI!!)9KrW%N7Sa$1TV!7p[QKeGMJa.gO^Zth!Ja/Ncrr@Q~>
+J`b>A!!)9GrW%N3S`TnPUuhXWQKA/IJ`_OG^ZPOrJ``6[rr@Q~>
+JaV%U!!*#d!!)6NrW'"errDNU!!&AR!!%T<JaS*We*[29Q1"YPJaSilrr@Q~>
+Ja1bM!!*#`!!)6JrW'"arrDNQ!!&AN!!%T8Ja.gOe*6o5Q0SALJa/Qdrr@Q~>
+J`bJE!!*#\!!)6FrW'"]rrDNM!!&AJ!!%T4J`_OGe)gW1Q0/)HJ``9\rr@Q~>
+JaV"TrW)*KrW&>R!!%T<K'iU=JaW4!!!%T<M!k6BJaSlmrr@Q~>
+Ja1_LrW)*GrW&>N!!%T8K'E=9Ja2pn!!%T8M!Fs>Ja/Terr@Q~>
+J`bGDrW)*CrW&>J!!%T4K'!%5J`cXf!!%T4M!"[:J``<]rr@Q~>
+JaTo5rrB@m!!%T<p$Me[JaS*WJaS*WmI'rRJaSonrr@Q~>
+Ja0W-rrB@i!!%T8p$)MWJa.gOJa.gOmHXZNJa/Wfrr@Q~>
+J`a?%rrB@e!!%T4p#Z5SJ`_OGJ`_OGmH4BJJ``?^rr@Q~>
+JaTl4rr@W<JaT/u!!%T<amK-/U$_m\NUHcGJaSrorr@Q~>
+Ja0T,rr@W8Ja/lm!!%T8am&j+U$;UXNU$KCJa/Zgrr@Q~>
+J`a<$rr@W4J``Te!!%T4alWR'U#l=TNTU3?J``B_rr@Q~>
+JaTi3rr@W<JaU8?!!&AR!!%T<JaU;@rW%N;RdU1UJ,~>
+Ja0Q+rr@W8Ja0u7!!&AN!!%T8Ja1#8rW%N7Rd0nQJ,~>
+J`a9#rr@W4J`a]/!!&AJ!!%T4J`a`0rW%N3RcaVMJ,~>
+JaTf2rrB_"!!%T<o'ZMXJaS*WJaVXf!!%]?rW%N;S*p:VJ,~>
+Ja0N*rrB^s!!%T8o'65TJa.gOJa2@^!!%];rW%N7S*L"RJ,~>
+J`a6"rrB^o!!%T4o&frPJ`_OGJ`c(V!!%]7rW%N3S*'_NJ,~>
+JaTf2rW%N;JaTN*!!%T<p$Me[JaS*Wp?qn[JaT&rrr@Q~>
+Ja0N*rW%N7Ja06"!!%T8p$)MWJa.gOp?MVWJa/cjrr@Q~>
+J`a6"rW%N3J``ro!!%T4p#Z5SJ`_OGp?)>SJ``Kbrr@Q~>
+JaTc1rW%N;\*a4rJaS*WJaS*Wg[>%@JaT)srr@Q~>
+Ja0K)rW%N7\*<qnJa.gOJa.gOgZnb<Ja/fkrr@Q~>
+J`a3!rW%N3\)mYjJ`_OGJ`_OGgZJJ8J``Ncrr@Q~>
+JaT`0rW'q*!!%T<JaS*WU[A*^ZgIenk3`3LQgXhQJaT,trr@Q~>
+Ja0H(rW'q&!!%T8Ja.gOUZqgZZg%Mjk3;pHQg4PMJa/ilrr@Q~>
+J`a/urW'q"!!%T4J`_OGUZMOVZfV5fk2lXDQfe8IJ``Qdrr@Q~>
+JaT]/rW%N;JaS*We*[29QL4_QJaTW-rW%N;T'lUYJ,~>
+Ja0E'rW%N7Ja.gOe*6o5QKeGMJa0?%rW%N7T'H=UJ,~>
+J`a,trW%N3J`_OGe)gW1QKA/IJ`a&rrW%N3T'$%QJ,~>
+JaTZ.rW(73!!%T<o^2\Zmd:&TJaS*WJaW7"!!%T<p[7kXJaT/urr@Q~>
+Ja0B&rW(7/!!%T8o]cDVmcjcPJa.gOJa2so!!%T8pZhSTJa/lmrr@Q~>
+J`a)srW(7+!!%T4o]?,RmcFKLJ`_OGJ`c[g!!%T4pZD;PJ``Terr@Q~>
+JaTW-rW&>R!!%T<V="<`JaW4!!!%T<JaVmmquH`arr@W<T^Mg[J,~>
+Ja0?%rW&>N!!%T8V<S$\Ja2pn!!%T8Ja2UequH`]rr@W8T^)OWJ,~>
+J`a&rrW&>J!!%T4V<.aXJ`cXf!!%T4J`c=]quH`Yrr@W4T]Z7SJ,~>
+JaTT,rW%N;amK-/JaS*WJaS*WeaE;7r9jOaJaT6"rr@Q~>
+Ja0<$rW%N7am&j+Ja.gOJa.gOea!#3r9F7]Ja/rorr@Q~>
+J`a#qrW%N3alWR'J`_OGJ`_OGe`Q`/r9!tYJ``Zgrr@Q~>
+JaTQ+rrCX<!!%T<JaS*WJaV%U!!(O:!!&h_rW)`]rW%N;U@/$]J,~>
+Ja09#rrCX8!!%T8Ja.gOJa1bM!!(O6!!&h[rW)`YrW%N7U?_aYJ,~>
+J``uprrCX4!!%T4J`_OGJ`bJE!!(O2!!&hWrW)`UrW%N3U?;IUJ,~>
+JaTN*rr@W<JaUGD!!)uc!!%T<qX+=`ZL.\mJaTW-rW%N;U[J-^J,~>
+Ja06"rr@W8Ja1/<!!)u_!!%T8qW\%\ZK_DiJa0?%rW%N7U[%jZJ,~>
+J``rorr@W4J`al4!!)u[!!%T4qW7bXZK;,eJ`a&rrW%N3UZVRVJ,~>
+JaTK)rr@W<ddI,8h!P.BQL4_QJaS*WJaV^h!!)HTrW%N;V!e6_J,~>
+Ja03!rr@W8dd$i4h!+k>QKeGMJa.gOJa2F`!!)HPrW%N7V!@s[J,~>
+J``onrr@W4dcUQ0gu\S:QKA/IJ`_OGJ`c.X!!)HLrW%N3Uuq[WJ,~>
+JaTK)rW&;Q!!&AR!!&b]!!%T<p$Me[JaW4!!!%T<i9pREJaTB&rr@Q~>
+Ja03!rW&;M!!&AN!!&bY!!%T8p$)MWJa2pn!!%T8i9L:AJa0)srr@Q~>
+J``onrW&;I!!&AJ!!&bU!!%T4p#Z5SJ`cXf!!%T4i9("=J``fkrr@Q~>
+JaTH(rW%N;g?nq@JaS*WJaS*W\F0=rJaTE'rr@Q~>
+Ja0/urW%N7g?JY<Ja.gOJa.gO\Ea%nJa0,trr@Q~>
+J``lmrW%N3g?&A8J`_OGJ`_OG\E<bjJ``ilrr@Q~>
+JaTE'rW)0M!!%T<p$Me[JaS*WJaVLb!!'q)rrBIp!!)-KrW%N;VsaQbJ,~>
+Ja0,trW)0I!!%T8p$)MWJa.gOJa24Z!!'q%rrBIl!!)-GrW%N7Vs=9^J,~>
+J``ilrW)0E!!%T4p#Z5SJ`_OGJ`bqR!!'q!rrBIh!!)-CrW%N3Vrn!ZJ,~>
+JaTB&rW%N;JaV(V!!%T<p?qq\U$_m\JaTT,rW%N;W:'ZcJ,~>
+Ja0)srW%N7Ja1eN!!%T8p?MYXU$;UXJa0<$rW%N7W9XB_J,~>
+J``fkrW%N3J`bMF!!%T4p?)ATU#l=TJ`a#qrW%N3W94*[J,~>
+JaT?%rW%N;jR*!JJaV@^!!%T<JaS*Wq<e4_h!Y1BJaTK)rr@Q~>
+Ja0&rrW%N7jQZ^FJa2(V!!%T8Ja.gOq<@q[h!4n>Ja03!rr@Q~>
+J``cjrW%N3jQ6FBJ`beN!!%T4J`_OGq;qYWgueV:J``onrr@Q~>
+JaT<$rW&;Q!!%T<JaS*WYO2AjJaUhOrr@W<WUBcdJ,~>
+Ja0#qrW&;M!!%T8Ja.gOYNc)fJa1PGrr@W8WTsK`J,~>
+J```irW&;I!!%T4J`_OGYN>fbJ`b8?rr@W4WTO3\J,~>
+JaT9#rW)`]rr@W<JaVgk!!%T<p$Me[JaS*W_!_4&JaTQ+rr@Q~>
+Ja/uprW)`Yrr@W8Ja2Oc!!%T8p$)MWJa.gO_!:q"Ja09#rr@Q~>
+J``]hrW)`Urr@W4J`c7[!!%T4p#Z5SJ`_OG^ukXsJ``uprr@Q~>
+JaT6"rW)laqZ)38q!J+^JaS*WJaVLb!!':l!!(%,!!(O:rW%N;X7#ufJ,~>
+Ja/rorW)l]qZ)34q!%hZJa.gOJa24Z!!':h!!(%(!!(O6rW%N7X6T]bJ,~>
+J``ZgrW)lYqZ)30puVPVJ`_OGJ`bqR!!':d!!(%$!!(O2rW%N3X60E^J,~>
+JaT3!rrE&dquD<9JaVso!!%T<p?hn\NpZlIJaTW-rW%N;XR?)gJ,~>
+Ja/onrrE&`quD<5Ja2[g!!%T8p?DVXNp6TEJa0?%rW%N7XQofcJ,~>
+J``WfrrE&\quD<1J`cC_!!%T4p>u>TNog<AJ`a&rrW%N3XQKN_J,~>
+JaT/uq>c*7qX+=`JaU_L!!&AR!!%T<JaU;@rW%N;XmZ2hJ,~>
+Ja/lmq>c*3qW\%\Ja1GD!!&AN!!%T8Ja1#8rW%N7Xm5odJ,~>
+J``Teq>c*/qW7bXJ`b/<!!&AJ!!%T4J`a`0rW%N3XlfW`J,~>
+JaT,trW%N;XmQ/hJaS*WX6orfJaW4!!!(10rW%N;Y3u;iJ,~>
+Ja/ilrW%N7Xm,ldJa.gOX6KZbJa2pn!!(1,rW%N7Y3Q#eJ,~>
+J``QdrW%N3Xl]T`J`_OGX6'B^J`cXf!!(1(rW%N3Y3,`aJ,~>
+JaT,trW%N;JaW$q!!%T<p$Me[JaS*WYO;AiJaT`0rr@Q~>
+Ja/ilrW%N7Ja2ai!!%T8p$)MWJa.gOYNl)eJa0H(rr@Q~>
+J``QdrW%N3J`cIa!!%T4p#Z5SJ`_OGYNGfaJ`a/urr@Q~>
+JaT)srW%N;rpBadJaS*WJaVLb!!&YZ!!([>!!'n(rW%N;YjVMkJ,~>
+Ja/fkrW%N7rosI`Ja.gOJa24Z!!&YV!!([:!!'n$rW%N7Yj25gJ,~>
+J``NcrW%N3roO1\J`_OGJ`bqR!!&YR!!([6!!'murW%N3YibrcJ,~>
+JaT&rrW%N;JaW@%rr@W<JaW$q!!%T<XR?&fJaTf2rr@Q~>
+Ja/cjrW%N7Ja3'rrr@W8Ja2ai!!%T8XQocbJa0N*rr@Q~>
+J``KbrW%N3J`cdjrr@W4J`cIa!!%T4XQKK^J`a6"rr@Q~>
+JaT#qrW%N;JaU;@!!&>Q!!%T<JaU;@rr@W<Z0qVlJ,~>
+Ja/`irW%N7Ja1#8!!&>M!!%T8Ja1#8rr@W8Z0M>hJ,~>
+J``HarW%N3J`a`0!!&>I!!%T4J`a`0rr@W4Z0)&dJ,~>
+JaSuprW%N;XR6&gJaS*W^$Yk#JaW4!!!'Osrr@W<ZL7_mJ,~>
+Ja/]hrW%N7XQfccJa.gO^$5RtJa2pn!!'Oorr@W8ZKhGiJ,~>
+J``E`rW%N3XQBK_J`_OG^#f:pJ`cXf!!'Okrr@W4ZKD/eJ,~>
+JaSrorW&>R!!%T<m-XiRJaW4!!!%T<JaT)srr@W<ZgRhnJ,~>
+Ja/ZgrW&>N!!%T8m-4QNJa2pn!!%T8Ja/fkrr@W8Zg.PjJ,~>
+J``B_rW&>J!!%T4m,e9JJ`cXf!!%T4J``Ncrr@W4Zf_8fJ,~>
+JaSonrW&&J!!%T<JaS*WJaV%U!!'7krr@W<[-mqoJ,~>
+Ja/WfrW&&F!!%T8Ja.gOJa1bM!!'7grr@W8[-IYkJ,~>
+J``?^rW&&B!!%T4J`_OGJ`bJE!!'7crr@W4[-%AgJ,~>
+JaTl4!!)rb!!)BRrW%N;JaS*WJaW$q!!%T<U[J*]JaTr6rr@Q~>
+Ja0T,!!)r^!!)BNrW%N7Ja.gOJa2ai!!%T8U[%gYJa0Z.rr@Q~>
+J`a<$!!)rZ!!)BJrW%N3J`_OGJ`cIa!!%T4UZVOUJ`aB&rr@Q~>
+JaTo5rrE#c!W_Wgm-alRJaS*W^?tt$QgOhRJaS*W^[D($JaTu7rr@Q~>
+Ja0W-rrE#_!W_Kcm-=TNJa.gO^?P[uQg+PNJa.gO^ZtduJa0]/rr@Q~>
+J`a?%rrE#[!W_?_m,n<JJ`_OG^?,CqQf\8JJ`_OG^ZPLqJ`aE'rr@Q~>
+JaTr6!W_WgrpBadrpBadm-alRJaTT,!!%T<JaUkP!!%T<p$Me[VsaNaJaU#8rr@Q~>
+Ja0Z.!W_KcrosI`rosI`m-=TNJa0<$!!%T8Ja1SH!!%T8p$)MWVs=6]Ja0`0rr@Q~>
+J`aB&!W_?_roO1\roO1\m,n<JJ`a#q!!%T4J`b;@!!%T4p#Z5SVrmsYJ`aH(rr@Q~>
+JaTl4!!*#d!!*#d!!)?QrrADR!!%T<rpBadJaW4!!!%T<JaSKbrW%N;\F0@sJ,~>
+Ja0T,!!*#`!!*#`!!)?MrrADN!!%T8rosI`Ja2pn!!%T8Ja/3ZrW%N7\Ea(oJ,~>
+J`a<$!!*#\!!*#\!!)?IrrADJ!!%T4roO1\J`cXf!!%T4J`_pRrW%N3\E<ekJ,~>
+JaTl4!!*#d!!*#d!!)?QrW&Y[!!%T<JaS*WJaV%U!!&YZrW%N;\aKItJ,~>
+Ja0T,!!*#`!!*#`!!)?MrW&YW!!%T8Ja.gOJa1bM!!&YVrW%N7\a'1pJ,~>
+J`a<$!!*#\!!*#\!!)?IrW&YS!!%T4J`_OGJ`bJE!!&YRrW%N3\`WnlJ,~>
+JaTl4!!*#d!!*#d!!)<PrW%N;JaS*WJaNL<JaWI(!!&ARrW%N;]'fRuJ,~>
+Ja0T,!!*#`!!*#`!!)<LrW%N7Ja.gOJa*48Ja30u!!&ANrW%N7]'B:qJ,~>
+J`a<$!!*#\!!*#\!!)<HrW%N3J`_OGJ`Zq4J`cmm!!&AJrW%N3]&s"mJ,~>
+JaTl4!!*#d!!*#d!!)9OrW%N;JaU8?!!(L9!!(%,!!&>Q!!%T<X7#reJaU/<rr@Q~>
+Ja0T,!!*#`!!*#`!!)9KrW%N7Ja0u7!!(L5!!(%(!!&>M!!%T8X6TZaJa0l4rr@Q~>
+J`a<$!!*#\!!*#\!!)9GrW%N3J`a]/!!(L1!!(%$!!&>I!!%T4X60B]J`aT,rr@Q~>
+JaTl4!!)uc!W_WgkO/<LX7#ufJaS*WJaVOc!!%T<p$Me[Q1"YPJaU/<rr@Q~>
+Ja0T,!!)u_!W_KckN`$HX6T]bJa.gOJa27[!!%T8p$)MWQ0SALJa0l4rr@Q~>
+J`a<$!!)u[!W_?_kN;aDX60E^J`_OGJ`btS!!%T4p#Z5SQ0/)HJ`aT,rr@Q~>
+JaTr6quH`a!!)-KrW&>RrrA/K!!%T<p$Me[JaW4!!!%T<L[P0BJaU2=rr@Q~>
+Ja0Z.quH`]!!)-GrW&>NrrA/G!!%T8p$)MWJa2pn!!%T8L[+m>Ja0o5rr@Q~>
+J`aB&quH`Y!!)-CrW&>JrrA/C!!%T4p#Z5SJ`cXf!!%T4LZ\U:J`aW-rr@Q~>
+JaSTerW':m!!%T<JaS*WJaS*WhsULEJaU5>rr@Q~>
+Ja/<]rW':i!!%T8Ja.gOJa.gOhs14AJa0r6rr@Q~>
+J``$UrW':e!!%T4J`_OGJ`_OGhraq=J`aZ.rr@Q~>
+JaSQdrW%N;JaS*WPO8DNJaW4!!!)c]!!&DSrW%N;^@)"$J,~>
+Ja/9\rW%N7Ja.gOPNi,JJa2pn!!)cY!!&DOrW%N7^?Y^uJ,~>
+J``!TrW%N3J`_OGPNDiFJ`cXf!!)cU!!&DKrW%N3^?5FqJ,~>
+JaSNcrW%N;Y3l8iJaW7"rrBFo!!&>Q!!%T<XR?&fJaU;@rr@Q~>
+Ja/6[rW%N7Y3GueJa2sorrBFk!!&>M!!%T8XQocbJa1#8rr@Q~>
+J`_sSrW%N3Y3#]aJ`c[grrBFg!!&>I!!%T4XQKK^J`a`0rr@Q~>
+JaSKbrrB_"!!%T<na6AWJaTQ+!!%T<^$Yk#K^Sg>JaU>Arr@Q~>
+Ja/3ZrrB^s!!%T8n`g)SJa09#!!%T8^$5RtK^/O:Ja1&9rr@Q~>
+J`_pRrrB^o!!%T4n`BfOJ``up!!%T4^#f:pK]`76J`ac1rr@Q~>
+JaSHarrADR!!&_\!!)f^!!%T<JaW*s!!%T<JaW7"rW%N;_=%='J,~>
+Ja/0YrrADN!!&_X!!)fZ!!%T8Ja2gk!!%T8Ja2sorW%N7_<V%#J,~>
+J`_mQrrADJ!!&_T!!)fV!!%T4J`cOc!!%T4J`c[grW%N3_<1atJ,~>
+JaSE`rr@W<JaTQ+!!%T<JaS*WkjJEMJaUDCrr@Q~>
+Ja/-Xrr@W8Ja09#!!%T8Ja.gOkj&-IJa1,;rr@Q~>
+J`_jPrr@W4J``up!!%T4J`_OGkiVjEJ`ai3rr@Q~>
+JaSE`rW'q*!!%T<JaS*WiU-[GJaW4!!!)-K!!&DSrW%N;_s[O)J,~>
+Ja/-XrW'q&!!%T8Ja.gOiT^CCJa2pn!!)-G!!&DOrW%N7_s77%J,~>
+J`_jPrW'q"!!%T4J`_OGiT:+?J`cXf!!)-C!!&DKrW%N3_rgt!J,~>
+JaSB_rW%N;^[;(%JaW7"!!%T<[dO.qJaTZ.r;_E:`:!X*J,~>
+Ja/*WrW%N7^Zke!Ja2so!!%T8[d*kmJa0B&r;_E6`9R@&J,~>
+J`_gOrW%N3^ZGLrJ`c[g!!%T4[c[SiJ`a)sr;_E2`9.("J,~>
+JaS?^rW(73!!%T<JaW-t!!%T<JaVRd!!%T<p[7hWJaUMFrr@Q~>
+Ja/'VrW(7/!!%T8Ja2jl!!%T8Ja2:\!!%T8pZhPSJa15>rr@Q~>
+J`_dNrW(7+!!%T4J`cRd!!%T4J`c"T!!%T4pZD8OJ`ar6rr@Q~>
+JaS<]rW&;Q!!&AR!!%T<K^Jg?JaS*Wm-acOrpKddJaUMFrr@Q~>
+Ja/$UrW&;M!!&AN!!%T8K^&O;Ja.gOm-=KKrp'L`Ja15>rr@Q~>
+J`_aMrW&;I!!&AJ!!%T4K]W77J`_OGm,n3GroX4\J`ar6rr@Q~>
+JaS9\rW%N;amK-/JaW4!!!%T<JaS*WipQ[DqsOIaJaUPGrr@Q~>
+Ja/!TrW%N7am&j+Ja2pn!!%T8Ja.gOip-C@qs+1]Ja18?rr@Q~>
+J`_^LrW%N3alWR'J`cXf!!%T4J`_OGio^+<qr[nYJ`au7rr@Q~>
+JaS6[rW(R<!!%T<JaS*WiU-[GJaW4!!!%T<p?qn[p[8%]JaUSHrr@Q~>
+Ja.sSrW(R8!!%T8Ja.gOiT^CCJa2pn!!%T8p?MVWpZhbYJa1;@rr@Q~>
+J`_[KrW(R4!!%T4J`_OGiT:+?J`cXf!!%T4p?)>SpZDJUJ`b#8rr@Q~>
+JaS3ZrW%N;ddI,8JaS*WR-jqSJaTW-rW%N;aR9'.J,~>
+Ja.pRrW%N7dd$i4Ja.gOR-FYOJa0?%rW%N7aQid*J,~>
+J`_XJrW%N3dcUQ0J`_OGR-"AKJ`a&rrW%N3aQEL&J,~>
+JaS0YrW%N;JaU;@!!&AR!!%T<JaV"T!!)HTrW%N;amT0/J,~>
+Ja.mQrW%N7Ja1#8!!&AN!!%T8Ja1_L!!)HPrW%N7am/m+J,~>
+J`_UIrW%N3J`a`0!!&AJ!!%T4J`bGD!!)HLrW%N3al`U'J,~>
+JaS-Xrr@W<X6orfJaSil!!%T<p$Me[JaVIarW%N;b3o90J,~>
+Ja.jPrr@W8X6KZbJa/Qd!!%T8p$)MWJa21YrW%N7b3K!,J,~>
+J`_RHrr@W4X6'B^J``9\!!%T4p#Z5SJ`bnQrW%N3b3&^(J,~>
+JaS*Wrr@W<g?nq@JaW4!!!%T<JaS*W`U<^*JaU_Lrr@Q~>
+Ja.gOrr@W8g?JY<Ja2pn!!%T8Ja.gO`TmF&Ja1GDrr@Q~>
+J`_OGrr@W4g?&A8J`cXf!!%T4J`_OG`TI."J`b/<rr@Q~>
+JaS*W!q$$gkjAENJaS*WJaVLb!!%T<p$Me[_X7C([I+"pjmN*JJaUbMrr@Q~>
+Ja.gO!pTackir-JJa.gOJa24Z!!%T8p$)MW_Wh+$[H[_ljm)gFJa1JErr@Q~>
+J`_OG!p0I_kiMjFJ`_OGJ`bqR!!%T4p#Z5S_WCgu[H7GhjlZOBJ`b2=rr@Q~>
+JaS*W!:KgdJaVRd!!%T<JaS6[!!%T<XR?&fJaUeNrr@Q~>
+Ja.gO!:'O`Ja2:\!!%T8Ja.sS!!%T8XQocbJa1MFrr@Q~>
+J`_OG!9X7\J`c"T!!%T4J`_[K!!%T4XQKK^J`b5>rr@Q~>
+JaS*Ws6fjdJaS*W^[D+%QgOhRJaS*WjmE*Kh!Y.AJaUhOrr@Q~>
+Ja.gOs6BR`Ja.gO^Zth!Qg+PNJa.gOjlugGh!4k=Ja1PGrr@Q~>
+J`_OGs5s:\J`_OG^ZPOrQf\8JJ`_OGjlQOCgueS9J`b8?rr@Q~>
+JaS*WrpKacp?qq\JaV(V!!)f^!!)NV!!%T<VsXNbJaW4!!!%T<cL1Z3JaUkPrr@Q~>
+Ja.gOrp'I_p?MYXJa1eN!<;iZ!<;QR!!%T8Vs46^Ja2pn!!%T8cKbB/Ja1SHrr@Q~>
+J`_OGroX1[p?)ATJ`bMF!!)fV!!)NN!!%T4VrdsZJ`cXf!!%T4cK>*+J`b;@rr@Q~>
+JaS*WrU0Xbq<n.\JaW@%!!(pErrE&d!!*#drrAe]!!%T<JaS*WZgRhnJaUkPrr@Q~>
+Ja.gOrTa@^q<IkXJa3'r!!(pA!<E0!l2Uh`l2gnbU?V^YJa.gOJa0T,rr@W8cg(N1J,~>
+J`_OGrT=(Zq<%STJ`cdj!!(p=!WN0!joGG\joGJ^U?2FUJ`_OGJ`a<$rr@W4cfY6-J,~>
+JaS*Wr9jOar9jI_JaV"TrrE)e"9@lX!!%T<JaSNc!!'7k!!((-!!(L9rr@W<d-go6J,~>
+Ja.gOr9F7]r9F1[Ja1_L#QXnil2^,7rr@W8Ja/6[!!'7g!!(()!!(L5rr@W8d-CW2J,~>
+J`_OGr9!tYr9!nWJ`bGD#lanek5XT+!<7W4J`_sS!!'7c!!((%!!(L1rr@W4d,t?.J,~>
+JaS*WqsOF`!:KabJaUqR$39Jo!:BjT!!)EeJaT#q!!%T<U[A*^QgXkRJaUqRrr@Q~>
+Ja.gOqs+.\!:'I^Ja1YJ$NKAks69ULrrD?aJa/`i!!%T8UZqgZQg4SNJa1YJrr@Q~>
+J`_OGqr[kX!9X1ZJ`bAB$395g!9X=D!<;0]J``Ha!!%T4UZMOVQfe;JJ`bABrr@Q~>
+JaS*WqX44\JaUhO!<DQc!!2KfVsXNbg$Sh?QL4_QJaS*W_!_1%JaUtSrr@Q~>
+Ja.gOqWdqXJa1PG#lj/irrE'!lMmdI!!(^;!!&>M!!%T8Ja1&9rW%N7dd$i4J,~>
+J`_OGqW@YTJ`b8?#QX#e!<3'!joD=A!!(^7!!&>I!!%T4J`ac1rW%N3dcUQ0J,~>
+JaS*Wq<n4^JaU_L!<DQe!!2Kfl0\NOJaU):!!%T<p$Me[JaW4!!!(10rW%N;e*d59J,~>
+Ja.gOq<IqZJa1GD!WVHa!!2Bbl086KJa0f2!!%T8p$)MWJa2pn!!(1,rW%N7e*?r5J,~>
+J`_OGq<%YVJ`b/<!<D9]rrM6^l/hsGJ`aN*!!%T4p#Z5SJ`cXf!!(1(rW%N3e)pZ1J,~>
+JaS*Wq!S.^QgOhRkjAENddHf/YO2AjJaS*WJaT9#rW%N;eF*>:J,~>
+Ja.gOq!.kZQg+PNkir-Jdd$N+YNc)fJa.gOJa/uprW%N7eE[&6J,~>
+J`_OGpu_SVQf\8JkiMjFdcU9'YN>fbJ`_OGJ``]hrW%N3eE6c2J,~>
+JaS*Wp[8%]JaU_LquD<9JaSon!!%T<p$Me[_X@C'JaV(Vrr@Q~>
+Ja.gOpZhbYJa1GD!<<#u!<7W8Ja/Wf!!%T8p$)MW_Wq+#Ja1eNrr@Q~>
+J`_OGpZDJUJ`b/<!!*#u!!%T4J``?^!!%T4p#Z5S_WLgtJ`bMFrr@Q~>
+JaS*Wp?qq\JaUeNrr<2i!:BgeJaTE'!!%T<OmW2LR-sqRJaV+Wrr@Q~>
+Ja.gOp?MYXJa1MF#6+\g!9sRaJa0,t!!%T8Om2oHR-OYNJa1hOrr@Q~>
+J`_OGp?)ATJ`b5>"p"\cs5s=]J``il!!%T4OlcWDR-+AJJ`bPGrr@Q~>
+JaS*Wp?qn[JaUkPrr<&erW!#f!!)i_!!'b$rrC+-!!%T<X6orfJaTT,rW%N;fC&Y=J,~>
+Ja.gOp?MVWJa1SH#lanirrE)a!<;l[!<9durrC+)!!%T8X6KZbJa0<$rW%N7fBWA9J,~>
+J`_OGp?)>SJ`b;@#QXne!<3&]rrDlW!!'aqrrC+%!!%T4X6'B^J`a#qrW%N3fB3)5J,~>
+JaS*Wp$VeZJaUqRrr<>m!:BjT!:BgeqsFFamHsrSQL4_Q\*a4rJaW4!!!%T<p$Me[\F0=rJaV1Y
+rr@Q~>
+Ja.gOp$2MVJa1YJ$NC+ks69ULs69Uaqs"1]mHOZOQKeGM\*<qnJa2pn!!%T8p$)MW\Ea%nJa1nQ
+rr@Q~>
+J`_OGp#c5RJ`bAB$3:+g!9X=D!9X:]qrRkYmH+BKQKA/I\)mYjJ`cXf!!%T4p#Z5S\E<bjJ`bVI
+rr@Q~>
+JaS*Wo^;\YQgOhRqX+=``U4'5mJu\C!:K7TmK!1Q!!'n(!!%T<p$Me[JaS*WSaQIWJaV4Zrr@Q~>
+Ja.gOo]lDUQg+PNqW\%\`Tdd1lMp/7!:&kLl2^bI!<9q$!!%T8p$)MWJa.gOSa-1SJa1qRrr@Q~>
+J`_OGo]H,QQf\8JqW7bX`T@O-joFQ+s5rGDk5YAA!!'mu!!%T4p#Z5SJ`_OGS`]nOJ`bYJrr@Q~>
+JaS*WoBuSXJaUtS!!)l`!W_WgrpBad_<q:'JaS*WJaVLb!!'7krr@W<g$\k?J,~>
+Ja.gOoBQ;TJa1\K!<;o\!rqQcrosL`_<M"#Ja.gOJa24Z!!'7grr@W8g$8S;J,~>
+J`_OGoB-#PJ`bDC!!)lX!W_?_roO1\_<(^tJ`_OGJ`bqR!!'7crr@W4g#i;7J,~>
+JaSQd!!*#dquH0QrW%N;eF!;:q!J7bmJuYTJaU):!!%T<p$Me[NUHfHR-stSJaV7[rr@Q~>
+Ja/9\!!*#`quH0MrW%N7eER&6q!&"^lMp/LJa0f2!!%T8p$)MWNU$NDR-O\OJa1tSrr@Q~>
+J``!T!!*#\quH0IrW%N3eE-`2puV\ZjoFNDJ`aN*!!%T4p#Z5SNTU6@R-+DKJ`b\Krr@Q~>
+JaSTerrE&d!!)9OrW&>R!!'=m!!(%,!!%T<amK-/QL4_QJaTT,rr@W<g[>(AJ,~>
+Ja/<]rrE&`!!)9KrW&>N!!'=i!<:((!!%T8am&j+QKeGMJa0<$rr@W8gZne=J,~>
+J``$UrrE&\!!)9GrW&>J!!'=e!!(%$!!%T4alWR'QKA/IJ`a#qrr@W4gZJM9J,~>
+JaSWf!W_WgrpBadkjJEMJaU\K!W_WgJaW@%!!&AR!!&qb!!%T<p$Me[VsaNaJaV=]rr@Q~>
+Ja/?^!W_KcrosI`kj&-IJa1DC!rqQcJa3'r!!&AN!!&q^!!%T8p$)MWVs=6]Ja2%Urr@Q~>
+J``'V!W_?_roO1\kiVjEJ`b,;!W_?_J`cdj!!&AJ!!&qZ!!%T4p#Z5SVrmsYJ`bbMrr@Q~>
+JaSQd!!*#d!s%`h!:'"P!2/`[!;Z$_!4M:q!<2Bd!.jRSmJm6<mXaebmf!3;mbR=2!.Y~>
+Ja/9\!!*#`!s%Td!:&kL!2/TW!;Ym[!4M.ms8M9`s+0IOl2Ug8l@J5ZlM^d7lJ:b*!.Y~>
+J``!T!!*#\!s%H`!:&_H!2/HS!;YaW!4M"i!<2*\!.j:Kjo>C4k(2ZRk5G@3k2#2"!.Y~>
+JaSQd!!*#drrE)e!!)<Prr@W<c0bQ3r9aObcgCc5JaS*WJaVLb!!&YZrW%N;hX:CDJ,~>
+Ja/9\!!*#`rrE)a!!)<Lrr@W8c0></r9=:^cftK1Ja.gOJa24Z!!&YVrW%N7hWk+@J,~>
+J``!T!!*#\rrE)]!!)<Hrr@W4c/o!+r8mtZcfP3-J`_OGJ`bqR!!&YRrW%N3hWFh<J,~>
+JaSQd!!)l`!!)9Orr@W<cgCc5qX+=`JaUYJ!!%T<p$Me[JaWF'!!&DSrW%N;hsULEJ,~>
+Ja/9\!!)l\!!)9Krr@W8cftN1qW\(\Ja1AB!!%T8p$)MWJa3-t!!&DOrW%N7hs14AJ,~>
+J``!T!!)lX!!)9Grr@W4cfP3-qW7bXJ`b):!!%T4p#Z5SJ`cjl!!&DKrW%N3hraq=J,~>
+JaSQd!!)l`!!)9OrW&tdrrB(e!!)f^!!([>!!%T<JaU_L!!%T<XR?&fJaVIarr@Q~>
+Ja/9\!!)l\!!)9KrW&t`rrB(a!<;iZ!<:^:!!%T8Ja1GD!!%T8XQocbJa21Yrr@Q~>
+J``!T!!)lX!!)9GrW&t\rrB(]!!)fV!!([6!!%T4J`b/<!!%T4XQKK^J`bnQrr@Q~>
+JaSQd!!*#d!!*#d!!)6NrW%N;JaU;@!!&>Q!!'Rt!!%T<p$Me[Q1"VOJaVLbrr@Q~>
+Ja/9\!!*#`!!*#`!!)6JrW%N7Ja1#8!!&>M!!'Rp!!%T8p$)MWQ0S>KJa24Zrr@Q~>
+J``!T!!*#\!!*#\!!)6FrW%N3J`a`0!!&>I!!'Rl!!%T4p#Z5SQ0/&GJ`bqRrr@Q~>
+JaSWfquHcbrW)*KrW&;Q!!&AR!!%T<md:&TJaW4!!!%T<L[P-AJaVOcrr@Q~>
+Ja/?^quHc^rW)*GrW&;M!!&AN!!%T8mcjcPJa2pn!!%T8L[+j=Ja27[rr@Q~>
+J``'VquHcZrW)*CrW&;I!!&AJ!!%T4mcFKLJ`cXf!!%T4LZ\R9J`btSrr@Q~>
+JaS*WlL+WOZgIenJaW4!!!%T<JaS*WJaVmmrr@W<ipQgHJ,~>
+Ja.gOlK\?KZg%MjJa2pn!!%T8Ja.gOJa2Uerr@W8ip-ODJ,~>
+J`_OGlK8'GZfV5fJ`cXf!!%T4J`_OGJ`c=]rr@W4io^7@J,~>
+JaS*Wl0eNNJaS*WT^Dd[JaW4!!!%T<p$Me[p?hn\R-stSJaVRdrr@Q~>
+Ja.gOl0A6JJa.gOT]uLWJa2pn!!%T8p$)MWp?DVXR-O\OJa2:\rr@Q~>
+J`_OGl/qsFJ`_OGT]Q4SJ`cXf!!%T4p#Z5Sp>u>TR-+DKJ`c"Trr@Q~>
+JaS*WkjJEM]^>b"O6uuJrU'XcrU'XcJaS*WJaS*We*d28JaVXfrr@Q~>
+Ja.gOkj&-I]]oIsO6Q]FrTX@_rTX@_Ja.gOJa.gOe*?o4Ja2@^rr@Q~>
+J`_OGkiVjE]]K1oO6-HBrT4+[rT4+[J`_OGJ`_OGe)pW0J`c(Vrr@Q~>
+JaS*WkO/<LJaUYJ!!*#d!!*#d!!%T<!U]rSmf*9<m_8)h!/'_=!.jS#mf*9;~>
+Ja.gOkN`$HJa1AB!!*#`!!*#`!!%T8!U9ZOlMgj8lFuN`!/'S9!.jFtlMgj7~>
+J`_OGkN;aDJ`b):!<<&\!<<&\!<7W4!TjBKk5PF4k.]sX!/'G5!.j:pk5PF3~>
+JaS*Wk3i3KJaUYJ"p")Z!:K7Tlg=`QJaNR,!.jS2mJm6<mXag"mf!3;mcNs;!.Y~>
+Ja.gOk3DpGJa1AB"p!rR!:&hLlfnHMJa*:$!.jG.l2Ug8l@J6olM^d7lK7C3!.Y~>
+J`_OGk2uXCJ`b):#63iJs5rJDlfJ0IJ`[!q!.j;*jo>C4k(2[gk5G@3k2th+!.Y~>
+JaS*WjmN-K`9mU*ea<D;ZgIqrmJuYTp$Me[JaS*WJaS*Wg[>%@JaV^hrr@Q~>
+Ja.gOjm)jG`9I=&e`m,7Zg%Ynl2^)Lp$)MWJa.gOJa.gOgZnb<Ja2F`rr@Q~>
+J`_OGjlZRC`9%%"e`Hi3ZfVDjk5XTDp#Z5SJ`_OGJ`_OGgZJJ8J`c.Xrr@Q~>
+JaS*WjR3$JJaUVIrW%N;JaVIa!!%T<p$Me[JaWF'rW%N;kjJHNJ,~>
+Ja.gOjQcaFJa1>ArW%N7Ja21Y!!%T8p$)MWJa3-trW%N7kj&0JJ,~>
+J`_OGjQ?IBJ`b&9rr7Q3J`bnQ!!%T4p#Z5SJ`cjlrW%N3kiVmFJ,~>
+JaS*Wj6lpIc0bQ3K'r=4JaS*WV="<`JaTZ.rr@W<kO/?MJ,~>
+Ja.gOj6HXEc0>9/K'N%0Ja.gOV<S$\Ja0B&rr@W8kN`'IJ,~>
+J`_OGj6$@Ac/o!+K')e,J`_OGV<.aXJ`a)srr@W4kN;dEJ,~>
+JaS*Wj6lmHJaU\KrW)f_!!%T<!U]rSmJm6<ma(;$!.jS4me[!8mca*=!.Y~>
+Ja.gOj6HUDJa1DCrW)f[!!%T8!U9ZOl2Ug8lHe_q!.jG0lMCR4lKIO5!.Y~>
+J`_OGj6$=@J`b,;rr;iW!!%T4!TjBKjo>C4k0N/i!.j;,k5,.0k31t-!.Y~>
+JaS*WipQdGJaUbM"9@iimJuD;rrA5M!!%T<p$Me[JaS*Wm-acOJaVXfrr@Q~>
+Ja.gOip-LCJa1JE"9@]el2]u3rrA5I!!%T8p$)MWJa.gOm-=KKJa2@^rr@Q~>
+J`_OGio^4?J`b2="TRWak5XT+rrA5E!!%T4p#Z5SJ`_OGm,n3GJ`c(Vrr@Q~>
+JaS*WiU6[Ff'WM<_sRL)\aBY%md:)C!!%T<JaS*WJaV+WqZ)38j6lpIJ,~>
+Ja.gOiTgCBf'358_s.4%\`sA!lKSB7!!%T8Ja.gOJa1hOqZ)34j6HXEJ,~>
+J`_OGiTC+>f&cr4_r^q!\`O+rk2u^+!<7W4J`_OGJ`bPGqZ)30j6$@AJ,~>
+JaS*Wi9pREJaUnQ!!*#d!!*#d!!%T<JaW$q!!%T<p$Me[JaW=$quD<9i9pUFJ,~>
+Ja.gOi9L:AJa1VI!!*#`!!*#`!!%T8Ja2ai!!%T8p$)MWJa3$qquD<5i9L=BJ,~>
+J`_OGi9("=J`b>A!<<&\!<<&\!<7W4J`cIa!!%T4p#Z5SJ`caiquD<1i9(%>J,~>
+JaS*WhsUIDJaUtS!!)uc!!)uc!!%T<rpBadJaT?%!!&AR!!'%eqZ)38hX:CDJ,~>
+Ja.gOhs11@Ja1\K!!)u_!!)u_!!%T8rosI`Ja0&r!!&AN!!'%aqZ)34hWk+@J,~>
+J`_OGhran<J`bDC!<<#[!<<#[!<7W4roO1\J``cj!!&AJ!!'%]qZ)30hWFh<J,~>
+JaS*WhX:@CJaV"Trr@W<KC/^>QL4_QJaUABquD<9g[>(AJ,~>
+Ja.gOhWk(?Ja1_Lrr@W8KB`F:QKeGMJa1):quD<5gZne=J,~>
+J`_OGhWFe;J`bGDrr@W4KB<.6QKA/IJ`af2quD<1gZJM9J,~>
+JaS*Wh<t7BJaTW-!!&e^!!%T<p$Me[JaW4!!!%T<q<n+[JaV4Zrr@Q~>
+Ja.gOh<Ot>Ja0?%!!&eZ!!%T8p$)MWJa2pn!!%T8q<IhWJa1qRrr@Q~>
+J`_OGh<+\:J`a&r!!&eV!!%T4p#Z5SJ`cXf!!%T4q<%PSJ`bYJrr@Q~>
+JaS*Wh!Y.AkjAENZL.\m`U3^+JaS*WJaS*WeF*57JaV+Wrr@Q~>
+Ja.gOh!4k=kir-JZK_Di`TdF'Ja.gOJa.gOeEZr3Ja1hOrr@Q~>
+J`_OGgueS9kiMjFZK;,e`T@.#J`_OGJ`_OGeE6Z/J`bPGrr@Q~>
+JaS*Wg[>(AJaV:\!!%T<JaVso!!%T<p$Me[JaW=$qZ)38eF*>:J,~>
+Ja.gOgZne=Ja2"T!!%T8Ja2[g!!%T8p$)MWJa3$qqZ)34eE[&6J,~>
+J`_OGgZJM9J`b_L!!%T4J`cC_!!%T4p#Z5SJ`caiqZ)30eE6c2J,~>
+JaS*Wg@"t@JaS*Wea<D;JaS*WVsXNb]C,RsJaUqRrr@Q~>
+Ja.gOg?S\<Ja.gOe`m,7Ja.gOVs46^]B]:oJa1YJrr@Q~>
+J`_OGg?/D8J`_OGe`Hi3J`_OGVrdsZ]B9"kJ`bABrr@Q~>
+JaS*Wg$\k?JaVUe!!%T<JaS3Z!!%T<e*d)5JaUkPrr@Q~>
+Ja.gOg$8S;Ja2=]!!%T8Ja.pR!!%T8e*?f1Ja1SHrr@Q~>
+J`_OGg#i;7J`c%U!!%T4J`_XJ!!%T4e)pN-J`b;@rr@Q~>
+JaS*Wg$\h>p?qq\JaU&9!!&>Q!!&8O!!%T<p$Me[JaW=$quD<9bjPK2J,~>
+Ja.gOg$8P:p?MYXJa0c1!!&>M!!&8K!!%T8p$)MWJa3$qquD<5bj,3.J,~>
+J`_OGg#i86p?)ATJ`aK)!!&>I!!&8G!!%T4p#Z5SJ`caiquD<1bi\p*J,~>
+JaS*Wf^A_=qX44\V!\3_QgOhR[I+"pJaS*WJaVLbqZ)38b3o90J,~>
+Ja.gOf]rG9qWdqXV!7p[Qg+PN[H[_lJa.gOJa24ZqZ)34b3K!,J,~>
+J`_OGf]N/5qW@YTUuhXWQf\8J[H7GhJ`_OGJ`bqRqZ)30b3&^(J,~>
+JaS*WfC&V<rpKX`JaW7"!!%T<JaS*WiU-[GJaW:#quH'N!!)][!!)QW!!)ucrW%T=rr@Q~>
+Ja.gOfBW>8rp'@\Ja2so!!%T8Ja.gOiT^CCJa3!pquH'J!!)]W!!)QS!!)u_rW%T9rr@Q~>
+J`_OGfB3&4roX(XJ`c[g!!%T4J`_OGiT:+?J`c^hquH'F!!)]S!!)QO!!)u[rW%T5rr@Q~>
+JaS*Wf'`>6JaS*Wm-XiRJaW4!!!%T<U[J-^c0kH/lL+ZPp$Me[o'QY]mJu\C!<2Bd!/0e?!.Y~>
+Ja.gOf'<&2Ja.gOm-4QNJa2pn!!%T8U[%jZc0G0+lK\BLp$)MWo'-AYl2^,7!<26`!/0Y;!.Y~>
+J`_OGf&lc.J`_OGm,e9JJ`cXf!!%T4UZVRVc0"m'lK8*Hp#Z5So&^)UjoFQ+!<2*\!/0M7!.Y~>
+JaS*WeaEA9JaW:#!!%T<JaS*WoBuVYJaVUequGsK!W_Wgp?qq\p[/"]rpBadrpBgfmK!7S!!%]?
+rr@Q~>
+Ja.gOea!)5Ja3!p!!%T8Ja.gOoBQ>UJa2=]quGsG!W_Kcp?MYXpZ__YrosI`rosObl2^hK!!%];
+rr@Q~>
+J`_OGe`Qf1J`c^h!!%T4J`_OGoB-&QJ`c%UquGsC!W_?_p?)ATpZ;GUroO1\roO7^joGDC!!%]7
+rr@Q~>
+JaS*WeF*;9JaS*W^[;(%VX=EaoBlSYK^Jg?JaW=$qZ,^F!!)c]!W_WgrpKacrU'XcrpBadrpBgf
+mK!7S!!%]?rr@Q~>
+Ja.gOeE[#5Ja.gO^Zke!VWn-]oBH;UK^&O;Ja3$qqZ,^B!!)cY!W_Kcrp'I_rTX@_rosI`rosOb
+l2^hK!!%];rr@Q~>
+J`_OGeE6`1J`_OG^ZGLrVWIjYoB$#QK]W77J`caiqZ,^>!!)cU!W_?_roX1[rT4([roO1\roO7^
+joGDC!!%]7rr@Q~>
+JaS*We*d28JaTW-!!((-!!%T<JaS*Wi9pLCiU-[Gp[/1bmJu\C!<2Be!:Kab!U]semK*CVmf!3=
+mf*9;~>
+Ja.gOe*?o4Ja0?%!!(()!!%T8Ja.gOi9L4?iT^CCpZ_n^l2^,7!<26a!:'I^!U9[al2gtNlM^d9
+lMgj7~>
+J`_OGe)pW0J`a&r!!((%!!%T4J`_OGi9'q;iT:+?pZ;VZjoFQ+!<2*]!9X1Z!TjC]joPPFk5G@5
+k5PF3~>
+JaS*WddI)7JaWR+!!%T<JaS*WiU-[GJaW:#quGUA!!)f^"T[uY!:K:Q!<2Bd!<2Bd!<2Bf!:Bjd
+mJm6?mf*9;~>
+Ja.gOdd$f3Ja3:#!!%T8Ja.gOiT^CCJa3!pquGU=!!)fZ"T[iQ!:&kI!<26`!<26`!<26b!9sR`
+l2Ug;lMgj7~>
+J`_OGdcUN/J`d!p!!%T4J`_OGiT:+?J`c^hquGU9!!)fV"T[]I!9WGA!<2*\!<2*\!<2*^!9O:\
+jo>C7k5PF3~>
+JaS*WdI.#7JaS*Wq<n7_JaW4!!!%T<OmW2Lh<t1@h!P.Bq!S%[!U]samJm7dmJm7dmK*CV!<2Bd
+!/0e?!.Y~>
+Ja.gOdH^`3Ja.gOq<It[Ja2pn!!%T8Om2oHh<On<h!+k>q!.bW!U9[]l2Uh`l2Uh`l2gtN!<26`
+!/0Y;!.Y~>
+J`_OGdH:H/J`_OGq<%\WJ`cXf!!%T4OlcWDh<+V8gu\S:pu_JS!TjCYjo>D\jo>D\joPPF!<2*\
+!/0M7!.Y~>
+JaS*Wd-go6JaS*WJaS*Wk3`3LJaW4!quGF<!!)rb!!)oa!s%cW!<2Bd!;Z$d!:BjTmK!7S!!%]?
+rr@Q~>
+Ja.gOd-CW2Ja.gOJa.gOk3;pHJa2pnquGF8!!)r^!!)o]!s%WO!<26`!;Ym`!9sRLl2^hK!!%];
+rr@Q~>
+J`_OGd,t?.J`_OGJ`_OGk2lXDJ`cXfquGF4!!)rZ!!)oY!s%KG!<2*\!;Ya\!9O:DjoGDC!!%]7
+rr@Q~>
+JaS*WcgLf5JaS*W^[D+%\F'=siU-[GQL4_QJaW:#quGF<quHcbrW)la!!*#drW)]\!!)ucrW%T=
+rr@Q~>
+Ja.gOcg(N1Ja.gO^Zth!\EX%oiT^CCQKeGMJa3!pquGF8quHc^rW)l]!!*#`rW)]X!!)u_rW%T9
+rr@Q~>
+J`_OGcfY6-J`_OG^ZPOr\E3bkiT:+?QKA/IJ`c^hquGF4quHcZrW)lY!!*#\rW)]T!!)u[rW%T5
+rr@Q~>
+JaS*WcgLc4JaTW-!!([>!!%T<p$Me[JaS*WmI'lPcL(Z4JaVUerr@Q~>
+Ja.gOcg(K0Ja0?%!!([:!!%T8p$)MWJa.gOmHXTLcKYB0Ja2=]rr@Q~>
+J`_OGcfY3,J`a&r!!([6!!%T4p#Z5SJ`_OGmH4<HcK5*,J`c%Urr@Q~>
+JaS*WlL+WOrU'XcmI'rROR<)KJaS*WJaS*WeaE>8JaT]/rr@Q~>
+Ja.gOlK\?KrTX@_mHXZNOQlfGJa.gOJa.gOea!&4Ja0E'rr@Q~>
+J`_OGlK8'GrT4([mH4BJOQHNCJ`_OGJ`_OGe`Qc0J`a,trr@Q~>
+JaS*Wlg=`QrpBpimd:)C!:B4R!.jQhmXag)mJm6<me,uJ!0$=G!:T@R!.jR=mf*9;~>
+Ja.gOlfnHMrosXelKSB7!:B(N!.jEdl@J7!l2Ug8lLjEB!0$1C!:T4N!.jF9lMgj7~>
+J`_OGlfJ0IroO@ak2l[+!:AqJ!.j9`k(2[njo>C4k4Rj:!0$%?!:T(J!.j:5k5PF3~>
+JaS*Wlg=`QrpBgfmK!7S!!)ESrW%N;JaS*WJaV[g!!&AR!!)QWquD<9WUBcdJ,~>
+Ja.gOlfnHMrosObl2^hK!!)EOrW%N7Ja.gOJa2C_!!&AN!!)QSquD<5WTsK`J,~>
+J`_OGlfJ0IroO7^joGDC!!)EKrW%N3J`_OGJ`c+W!!&AJ!!)QOquD<1WTO3\J,~>
+JaS*WkO&BOmK!7S!!)BRrW%N;JaU;@!!&>Q!!&tc!!%]?rrDc\quD<9VXFHaJ,~>
+Ja.gOkNW*Kl2^hK!!)BNrW%N7Ja1#8!!&>M!!&t_!!%];rrDcXquD<5VX"0]J,~>
+J`_OGkN2gGjoGDC!!)BJrW%N3J`a`0!!&>I!!&t[!!%]7rrDcTquD<1VWRmYJ,~>
+JaS*WkjANQmd:)SmJm7Qmf!3;m]>gV!:&tP!.jS2mJm6<mXag#mf!4_me[!8m\K:N!.Y~>
+Ja.gOkir6MlKSBKl2UhMlM^d7lE'7N!:&hL!.jG.l2Ug8l@J6plM^e[lMCR4lD3_F!.Y~>
+J`_OGkiMsIk2l[Cjo>DIk5G@3k,d\F!:&\H!.j;*jo>C4k(2[hk5GAWk5,.0k+q/>!.Y~>
+JaS*Wl0\NOrpBadrpBadlL+WOU@&!]q!J+^JaS*WJaS*Wk3i3KrU0R`JaT6"rr@Q~>
+Ja.gOl086KrosI`rosI`lK\?KU?V^Yq!%hZJa.gOJa.gOk3DpGrTa:\Ja/rorr@Q~>
+J`_OGl/hsGroO1\roO1\lK8'GU?2FUpuVPVJ`_OGJ`_OGk2uXCrT="XJ``Zgrr@Q~>
+JaS*WlL"WPrU'XcrpBadl0eQOJaS*WNpZlIJaW4!!!%T<r9j=[JaT/urr@Q~>
+Ja.gOlKS?LrTX@_rosI`l0A9KJa.gONp6TEJa2pn!!%T8r9F%WJa/lmrr@Q~>
+J`_OGlK/'HrT4([roO1\l/r!GJ`_OGNog<AJ`cXf!!%T4r9!bSJ``Terr@Q~>
+JaS*Wlg=`QqsFLcmJuG<rr@W<JaS*WJaS*WqsO@^JaT&rrr@Q~>
+Ja.gOlfnHMqs"4_l2^#4rr@W8Ja.gOJa.gOqs+(ZJa/cjrr@Q~>
+J`_OGlfJ0IqrRq[joFT,rr@W4J`_OGJ`_OGqr[eVJ``Kbrr@Q~>
+JaS*WlgFZNrpBadjmN-KX7#ufJaSil!!&AR!!'Rt!!%T<p[7nYJaSuprr@Q~>
+Ja.gOlg"BJrosI`jm)jGX6T]bJa/Qd!!&AN!!'Rp!!%T8pZhVUJa/]hrr@Q~>
+J`_OGlfS*FroO1\jlZRCX60E^J``9\!!&AJ!!'Rl!!%T4pZD>QJ``E`rr@Q~>
+JaS*W`U<a+JaTT,!!)rb!!%T<p$Me[JaW4!!!%T<q<n.\JaSlmrr@Q~>
+Ja.gO`TmI'Ja0<$!!)r^!!%T8p$)MWJa2pn!!%T8q<IkXJa/Terr@Q~>
+J`_OG`TI1#J`a#q!!)rZ!!%T4p#Z5SJ`cXf!!%T4q<%STJ``<]rr@Q~>
+JaS*W`U<^*ZgIenk3`3LJaS*WJaS*Wna?8SJaSfkrr@Q~>
+Ja.gO`TmF&Zg%Mjk3;pHJa.gOJa.gOn`ouOJa/Ncrr@Q~>
+J`_OG`TI."ZfV5fk2lXDJ`_OGJ`_OGn`K]KJ``6[rr@Q~>
+JaS*W`:!U)JaS*WT^Dd[JaW4!!!%T<q!S%[JaS]hrr@Q~>
+Ja.gO`9R=%Ja.gOT]uLWJa2pn!!%T8q!.bWJa/E`rr@Q~>
+J`_OG`9.%!J`_OGT]Q4SJ`cXf!!%T4pu_JSJ``-Xrr@Q~>
+JaS*W_s[L(JaT]/!!%T<JaS*WiU6RCJaSWfrr@Q~>
+Ja.gO_s74$Ja0E'!!%T8Ja.gOiTg:?Ja/?^rr@Q~>
+J`_OG_rgpuJ`a,t!!%T4J`_OGiTC";J``'Vrr@Q~>
+JaS*W_X@C'^$Yk#JaS*WR-jqSQL4_QX7#lcJaSNcrr@Q~>
+Ja.gO_Wq+#^$5RtJa.gOR-FYOQKeGMX6TT_Ja/6[rr@Q~>
+J`_OG_WLgt^#f:pJ`_OGR-"AKQKA/IX60<[J`_sSrr@Q~>
+JaS*W_=%:&JaU#8!!%T<p$Me[XR6&gbO,?1JaW@%qZ)38MsgTFJ,~>
+Ja.gO_<V""Ja0`0!!%T8p$)MWXQfccbN]'-Ja3'rqZ)34MsC<BJ,~>
+J`_OG_<1^sJ`aH(!!%T4p#Z5SXQBK_bN8d)J`cdjqZ)30Mrt$>J,~>
+JaS*W_!_1%R-jqSJaS*WJaS*WquD<9M!k9CJ,~>
+Ja.gO_!:n!R-FYOJa.gOJa.gOquD<5M!G!?J,~>
+J`_OG^ukUrR-"AKJ`_OGJ`_OGquD<1M!"^;J,~>
+JaS*W^[D($`pNg,JaS*WJaVLb!!%T<q!S"ZJaS9\rr@Q~>
+Ja.gO^Ztdu`p*O(Ja.gOJa24Z!!%T8q!._VJa/!Trr@Q~>
+J`_OG^ZPLq`o[7$J`_OGJ`bqR!!%T4pu_GRJ`_^Lrr@Q~>
+JaS*W^@)"$JaU;@!!%T<JaS*Wi9pLCJaS0Yrr@Q~>
+Ja.gO^?Y^uJa1#8!!%T8Ja.gOi9L4?Ja.mQrr@Q~>
+J`_OG^?5FqJ`a`0!!%T4J`_OGi9'q;J`_UIrr@Q~>
+JaS*W^$bn#cL(Z4JaS*WJaSup!!'_#qZ)38JaWO<J,~>
+Ja.gO^$>UtcKYB0Ja.gOJa/]h!!'^tqZ)34Ja378J,~>
+J`_OG^#o=pcK5*,J`_OGJ``E`!!'^pqZ)30J`ct4J,~>
+JaS*W]^Ge"JaS*W^[;(%rpBadRdL.Uh<k7CJaW=$quD<9JaWO*rr@Q~>
+Ja.gO]^#LsJa.gO^Zke!rosI`Rd'kQh<Ft?Ja3$qquD<5Ja37"rr@Q~>
+J`_OG]]T4oJ`_OG^ZGLrroO1\RcXSMh<"\;J`caiquD<1J`csorr@Q~>
+JaS*W]C,\!QgOhR[-dnojmE*KJaS*WJaWO*qZ)38JaWI(rr@Q~>
+Ja.gO]B]CrQg+PN[-@VkjlugGJa.gOJa37"qZ)34Ja30urr@Q~>
+J`_OG]B9+nQf\8J[,q>gjlQOCJ`_OGJ`csoqZ)30J`cmmrr@Q~>
+JaS*W]C,XufBrV=JaS*WJaVLb!!%T<p[7qZJaS*Wq<n7_J,~>
+Ja.gO]B]@qfBN>9Ja.gOJa24Z!!%T8pZhYVJa.gOq<It[J,~>
+J`_OG]B9(mfB*&5J`_OGJ`bqR!!%T4pZDARJ`_OGq<%\WJ,~>
+JaS*W]'fOtJaUtSrr@W<p$Me[JaS*WmI'iOlL"WPp[8"\na6AWrU0XbJaTo5rr@Q~>
+Ja.gO]'B7pJa1\Krr@W8p$)MWJa.gOmHXQKlKS?LpZh_Xn`g)SrTa@^Ja0W-rr@Q~>
+J`_OG]&rtlJ`bDCrr@W4p#Z5SJ`_OGmH49GlK/'HpZDGTn`BfOrT=(ZJ`a?%rr@Q~>
+JaS*W\aKFsJaS*WJaS*WkO/?McL1T1kjJHNq!J+^rpBadoBlb^mJu\C!<2Bd!.jRGmf*9;~>
+Ja.gO\a'.oJa.gOJa.gOkN`'IcKb<-kj&0Jq!%hZrosI`oBHJZl2^,7!<26`!.jFClMgj7~>
+J`_OG\`WkkJ`_OGJ`_OGkN;dEcK>$)kiVmFpuVPVroO1\oB$2VjoFQ+!<2*\!.j:?k5PF3~>
+JaS*W\F0=rJaS*Wc0bQ3o^2\ZQgXkRn*U/UJaW=$qZ,gI!W_Wgq!J+^rpBadq!J+^rpBadrpBgf
+mK!7S!!%T<[I4%pJ,~>
+Ja.gO\Ea%nJa.gOc0>9/o]cDVQg4SNn*0lQJa3$qqZ,gE!W_Kcq!%hZrosI`q!%hZrosI`rosOb
+l2^hK!!%T8[HdblJ,~>
+J`_OG\E<bjJ`_OGc/o!+o]?,RQfe;Jn)aTMJ`caiqZ,gA!W_?_puVPVroO1\puVPVroO1\roO7^
+joGDC!!%T4[H@JhJ,~>
+JaS*W\*j4qQgOhR`pNg,e*[29JaS*WO7)oGipHdHo^2b\mdC&SrU'XcrpBadrpBgfmK!7S!!%T<
+[I4%pJ,~>
+Ja.gO\*EqmQg+PN`p*O(e*6o5Ja.gOO6ZWCip$LDo]cJXlK\?KrTX@_rosI`rosObl2^hK!!%T8
+[HdblJ,~>
+J`_OG\*!YiQf\8J`o[7$e)gW1J`_OGO66??ioU4@o]?2Tk2uXCrT4([roO1\roO7^joGDC!!%T4
+[H@JhJ,~>
+JaS*W[dO+pl0\NOZ0hSlJaS*WZL.\mJaW:#qZ,RB!!)][!s%cW!<2Be!:Kab!U]semK*CVmf!3;
+m^2E^!.Y~>
+Ja.gO[d*hll086KZ0D;hJa.gOZK_DiJa3!pqZ,R>!!)]W!s%WO!<26a!:'I^!U9[al2gtNlM^d7
+lEojV!.Y~>
+J`_OG[c[Phl/hsGZ/u#dJ`_OGZK;,eJ`c^hqZ,R:!!)]S!s%KG!<2*]!9X1Z!TjC]joPPFk5G@3
+k-X:N!.Y~>
+JaS*W[I4"oJaVUe!!%T<o^2\ZJaS*Wm-acOh<k7Cp?hn\rpK[arpBadrpBadrpBgfmK!7S!!%T<
+[I4%pJ,~>
+Ja.gO[Hd_kJa2=]!!%T8o]cDVJa.gOm-=KKh<Ft?p?DVXrp'C]rosI`rosI`rosObl2^hK!!%T8
+[HdblJ,~>
+J`_OG[H@GgJ`c%U!!%T4o]?,RJ`_OGm,n3Gh<"\;p>u>TroX+YroO1\roO1\roO7^joGDC!!%T4
+[H@JhJ,~>
+JaS*W[-mqoJaS*WJaS*Wk3`3LhsU@Ag[5%Ap[/"]rU'XcqX+=`rpBadrpBgfmK!7S!!%T<[I4%p
+J,~>
+Ja.gO[-IYkJa.gOJa.gOk3;pHhs1(=gZeb=pZ__YrTX@_qW\%\rosI`rosObl2^hK!!%T8[Hdbl
+J,~>
+J`_OG[-%AgJ`_OGJ`_OGk2lXDhrae9gZAJ9pZ;GUrT4([qW7bXroO1\roO7^joGDC!!%T4[H@Jh
+J,~>
+JaS*WZgRhnp?qq\JaS*WbO,?1QgOnTmJqh+p[7qZf^8_>r9aObrpBadr9aObrpBadq<eCdmJu\C
+!<2Bd!.jRGmf*9;~>
+Ja.gOZg.Pjp?MYXJa.gObN]'-Qg+VPl2ZD#pZhYVf]iG:r9=7^rosI`r9=7^rosI`q<A+`l2^,7
+!<26`!.jFClMgj7~>
+J`_OGZf_8fp?)ATJ`_OGbN8d)Qf\>LjoBtppZDARf]E/6r8mtZroO1\r8mtZroO1\q;qh\joFQ+
+!<2*\!.j:?k5PF3~>
+JaS*WZL7_mq<n.\JaW@%!!'n(rrBLq!!%T<JaVpnqZ,::quHcbrW)udquHcbrW)]\!!)ucrW%N;
+[-mqoJ,~>
+Ja.gOZKhGiq<IkXJa3'r!!'n$rrBLm!!%T8Ja2XfqZ,:6quHc^rW)u`quHc^rW)]X!!)u_rW%N7
+[-IYkJ,~>
+J`_OGZKD/eq<%STJ`cdj!!'murrBLi!!%T4J`c@^qZ,:2quHcZrW)u\quHcZrW)]T!!)u[rW%N3
+[-%AgJ,~>
+JaS*WZL7\lr9jI_JaS*WJaS*WfC&P:c0bQ3JaSfkrr@Q~>
+Ja.gOZKhDhr9F1[Ja.gOJa.gOfBW86c0>9/Ja/Ncrr@Q~>
+J`_OGZKD,dr9!nWJ`_OGJ`_OGfB2u2c/o!+J``6[rr@Q~>
+JaS*WZ0qSk!:KabJaS*WmHsrSJaW4!!!%T<q<n+[JaS*WhX:CDJ,~>
+Ja.gOZ0M;g!:'I^Ja.gOmHOZOJa2pn!!%T8q<IhWJa.gOhWk+@J,~>
+J`_OGZ0)#c!9X1ZJ`_OGmH+BKJ`cXf!!%T4q<%PSJ`_OGhWFh<J,~>
+JaS*WYjVAgJaS*WJaS*Wl0\NOnF$2SJaS*Wg[>(AJ,~>
+Ja.gOYj2)cJa.gOJa.gOl086KnEToOJa.gOgZne=J,~>
+J`_OGYibf_J`_OGJ`_OGl/hsGnE0WKJ`_OGgZJM9J,~>
+JaS*WYO;AiJaS*WJaVRd!!)TX!!&>Q!!)WYqZ)38JaV4Zrr@Q~>
+Ja.gOYNl)eJa.gOJa2:\!!)TT!!&>M!!)WUqZ)34Ja1qRrr@Q~>
+J`_OGYNGfaJ`_OGJ`c"T!!)TP!!&>I!!)WQqZ)30J`bYJrr@Q~>
+JaS*WY3u8hJaWO*!!'7k!!((-!!%T<JaW=$rrDf]quD<9JaV+Wrr@Q~>
+Ja.gOY3PudJa37"!!'7g!!(()!!%T8Ja3$qrrDfYquD<5Ja1hOrr@Q~>
+J`_OGY3,]`J`cso!!'7c!!((%!!%T4J`cairrDfUquD<1J`bPGrr@Q~>
+JaS*WXmZ/gR-jqSJaS*WJaUtSrW)i`qZ)38JaV%Urr@Q~>
+Ja.gOXm5lcR-FYOJa.gOJa1\KrW)i\qZ)34Ja1bMrr@Q~>
+J`_OGXlfT_R-"AKJ`_OGJ`bDCrW)iXqZ)30J`bJErr@Q~>
+JaS*WXR?&fJaS*WqX4@`JaW4!!!%T<rpKacrpK[aJaS*WdI.#7J,~>
+Ja.gOXQocbJa.gOqWe(\Ja2pn!!%T8rp'I_rp'C]Ja.gOdH^`3J,~>
+J`_OGXQKK^J`_OGqW@eXJ`cXf!!%T4roX1[roX+YJ`_OGdH:H/J,~>
+JaS*WX7#reJaS*WJaS*WkjJ6HJaS*WcgLf5J,~>
+Ja.gOX6TZaJa.gOJa.gOkj%sDJa.gOcg(N1J,~>
+J`_OGX60B]J`_OGJ`_OGkiV[@J`_OGcfY6-J,~>
+JaS*WWp]leJaS*W^?tt$\F'=sJaW7"quD<9JaUbMrr@Q~>
+Ja.gOWp9TaJa.gO^?P[u\EX%oJa2soquD<5Ja1JErr@Q~>
+J`_OGWoj<]J`_OG^?,Cq\E3bkJ`c[gquD<1J`b2=rr@Q~>
+JaS*WWUBcdO6uuJT'cRYg$Sh?JaW4!!!%T<q<n.\JaS*WamT0/J,~>
+Ja.gOWTsK`O6Q]FT'?:Ug$/P;Ja2pn!!%T8q<IkXJa.gOam/m+J,~>
+J`_OGWTO3\O6-EBT&p"Qg#`87J`cXf!!%T4q<%STJ`_OGal`U'J,~>
+JaS*WW:'ZcQgOhRJaS*WJaV7[quD<9JaUSHrr@Q~>
+Ja.gOW9XB_Qg+PNJa.gOJa1tSquD<5Ja1;@rr@Q~>
+J`_OGW94*[Qf\8JJ`_OGJ`b\KquD<1J`b#8rr@Q~>
+JaS*W`:!U)s6fdbn*^/TJaS*WJaWL)!!%T<q!S%[JaS*W`:!X*J,~>
+Ja.gO`9R=%s6BL^n*9lPJa.gOJa34!!!%T8q!.bWJa.gO`9R@&J,~>
+J`_OG`9.%!s5s4Zn)jTLJ`_OGJ`cpn!!%T4pu_JSJ`_OG`9.("J,~>
+JaS*W`U3^+rpBgfmJuP?rW&>R!!%T<JaS*Wi9pLCJaS*W_X@F(J,~>
+Ja.gO`TdF'rosObl2^,7rW&>N!!%T8Ja.gOi9L4?Ja.gO_Wq.$J,~>
+J`_OG`T@.#roO7^joF]/rW&>J!!%T4J`_OGi9'q;J`_OG_WLjuJ,~>
+JaS*W`U3^+rpBgfmJuM>rW%N;JaU8?!!%T<^@(n!JaS*W^[D+%J,~>
+Ja.gO`TdF'rosObl2^)6rW%N7Ja0u7!!%T8^?YUrJa.gO^Zth!J,~>
+J`_OG`T@.#roO7^joFZ.rW%N3J`a]/!!%T4^?5=nJ`_OG^ZPOrJ,~>
+JaS*W_<qI,mJuYT!:0(P!28f\!.jS2mJm6hmJm70mJm75mJm6fmed'9mXaf>mf*9;~>
+Ja.gO_<M1(l2^)L!:/qL!28ZX!.jG.l2Ugdl2Uh,l2Uh1l2UgblMLX5l@J66lMgj7~>
+J`_OG_<(n$joFND!:/eH!28NT!.j;*jo>C`jo>D(jo>D-jo>C^k5541k(2[.k5PF3~>
+JaS*W_X7X/md:&Tmd:)@mf!3QmJm6<mXaeWmd0B>!.jQhm^hid!.Y~>
+Ja.gO_Wh@+lKS?LlKSB8lM^dMl2Ug8l@J5OlKmg6!.jEdlFQ9\!.Y~>
+J`_OG_WD('k2lXDk2l[0k5G@Ijo>C4k(2ZGk3V7.!.j9`k.9^T!.Y~>
+JaS*W_sRL)qX+=`lL+WOJaS*WO6uuJJaW=$qZ)38JaU&9rr@Q~>
+Ja.gO_s.4%qW\%\lK\?KJa.gOO6Q]FJa3$qqZ)34Ja0c1rr@Q~>
+J`_OG_r^q!qW7bXlK8'GJ`_OGO6-EBJ`caiqZ)30J`aK)rr@Q~>
+JaS*W`9mU*q<e4_l0eNNX7#ufJaS*WJaVIaquD<9JaTr6rr@Q~>
+Ja.gO`9I=&q<@q[l0A6JX6T]bJa.gOJa21YquD<5Ja0Z.rr@Q~>
+J`_OG`9%%"q;qYWl/qsFX60E^J`_OGJ`bnQquD<1J`aB&rr@Q~>
+JaS*W`U3^+r9aObrpBadkjJEMJaS*WJaSKbqZ)38JaTl4rr@Q~>
+Ja.gO`TdF'r9=7^rosI`kj&-IJa.gOJa/3ZqZ)34Ja0T,rr@Q~>
+J`_OG`T@.#r8mtZroO1\kiVjEJ`_OGJ`_pRqZ)30J`a<$rr@Q~>
+JaS*W`U<X(s6fjdk3i6LJaTB&!!&MV!!(gB!!'_#!!'_#quD<9JaTc1rr@Q~>
+Ja.gO`Tm@$s6BR`k3DsHJa0)s!!&MR!!(g>!!'^t!!'^tquD<5Ja0K)rr@Q~>
+J`_OG`TI'us5s:\k2u[DJ``fk!!&MN!!(g:!!'^p!!'^pquD<1J`a3!rr@Q~>
+JaS*WTC2^ZZgIenJaWF'!!%T<JaVaiqZ)38JaT]/rr@Q~>
+Ja.gOTBcFVZg%MjJa3-t!!%T8Ja2IaqZ)34Ja0E'rr@Q~>
+J`_OGTB?.RZfV5fJ`cjl!!%T4J`c1YqZ)30J`a,trr@Q~>
+JaS*WT'lUYJaS*WT^Dd[JaW:#quD<9JaTT,rr@Q~>
+Ja.gOT'H=UJa.gOT]uLWJa3!pquD<5Ja0<$rr@Q~>
+J`_OGT'$%QJ`_OGT]Q4SJ`c^hquD<1J`a#qrr@Q~>
+JaS*WT'lRX]^>b"JaW0u!!%T<JaVpnqZ)38JaTN*rr@Q~>
+Ja.gOT'H:T]]oIsJa2mm!!%T8Ja2XfqZ)34Ja06"rr@Q~>
+J`_OGT'$"P]]K1oJ`cUe!!%T4J`c@^qZ)30J``rorr@Q~>
+JaS*WSaQIWJaS*WJaT&rquGdF!!)NV!!)ucrW%N;JaVC_rr@Q~>
+Ja.gOSa-1SJa.gOJa/cjquGdB!!)NR!!)u_rW%N7Ja2+Wrr@Q~>
+J`_OGS`]nOJ`_OGJ``KbquGd>!!)NN!!)u[rW%N3J`bhOrr@Q~>
+JaS*WSF6@VJaU#8!!%oErrDKT!!'+grrCC5qZ,XDrrDTW"T[rjmd:)SmJm6<mXaf`mf*9;~>
+Ja.gOSEg(RJa0`0!!%oArrDKP!!'+crrCC1qZ,X@rrDTS"T[fflKSBKl2Ug8l@J6XlMgj7~>
+J`_OGSEBeNJ`aH(!!%o=rrDKL!!'+_rrCC-qZ,X<rrDTO"T[Zbk2l[Cjo>C4k(2[Pk5PF3~>
+JaS*WS*p7U`U3^+eF!;:QgOhRJaS*Wq<n.\i9gXHmJutK!!*#d!!*#d!W_WgrpBadJaS*WhsULE
+J,~>
+Ja.gOS*KtQ`TdF'eER#6Qg+PNJa.gOq<IkXi9C@Dl2^PC!!*#`!!*#`!W_KcrosI`Ja.gOhs14A
+J,~>
+J`_OGS*'\M`T@.#eE-`2Qf\8JJ`_OGq<%STi8t(@joG,;!!*#\!!*#\!W_?_roO1\J`_OGhraq=
+J,~>
+JaS*WRdU.TR-jqSJaS*WOm`)Hh!P.BrU0XbrU'XcrpBadrpBgfmK!7S!!%T<JaVF`rr@Q~>
+Ja.gORd0kPR-FYOJa.gOOm;fDh!+k>rTa@^rTX@_rosI`rosObl2^hK!!%T8Ja2.Xrr@Q~>
+J`_OGRcaSLR-"AKJ`_OGOllN@gu\S:rT=(ZrT4([roO1\roO7^joGDC!!%T4J`bkPrr@Q~>
+JaS*WRI:%ScL(Z4JaW0u!!%T<JaVmmquGF<!!*#d!!*#d!<DQc!!2KfrpBgfmdC&SJaS*WhX:CD
+J,~>
+Ja.gORHjbOcKYB0Ja2mm!!%T8Ja2UequGF8!!*#`!!*#`!<DE_!!2?brosOblK\?KJa.gOhWk+@
+J,~>
+J`_OGRHFJKcK5*,J`cUe!!%T4J`c=]quGF4!!*#\!!*#\!<D9[!!23^roO7^k2uXCJ`_OGhWFh<
+J,~>
+JaS*WR-sqRJaS*WJaT]/qZ,79!!*#dquH`a!!*#d!!*#d!W_WgrpBadJaS*WhsULEJ,~>
+Ja.gOR-OYNJa.gOJa0E'qZ,75!!*#`quH`]!!*#`!!*#`!W_KcrosI`Ja.gOhs14AJ,~>
+J`_OGR-+AJJ`_OGJ`a,tqZ,71!!*#\quH`Y!!*#\!!*#\!W_?_roO1\J`_OGhraq=J,~>
+JaS*WQgXhQJaS*W^[;1(md:(DmJm7Emed(7mJm7dmJm7`mJm7dmJm7dmK*CV!<2Bd!.jQhmbdI4
+!.Y~>
+Ja.gOQg4PMJa.gO^Zkn$lKSA<l2UhAlMLY3l2Uh`l2Uh\l2Uh`l2Uh`l2gtN!<26`!.jEdlJLn,
+!.Y~>
+J`_OGQfe8IJ`_OG^ZGUuk2lZ4jo>D=k555/jo>D\jo>DXjo>D\jo>D\joPPF!<2*\!.j9`k25>$
+!.Y~>
+JaS*WQL=bQf'WM<JaW4!!!)*J!!%T<MsgHBdd@)8rpBadrpBadq<eCdmJu\C!<2Bd!.jQhmbdI4
+!.Y~>
+Ja.gOQKnJMf'358Ja2pn!!)*F!!%T8MsC0>dcpf4rosI`rosI`q<A+`l2^,7!<26`!.jEdlJLn,
+!.Y~>
+J`_OGQKJ2If&cr4J`cXf!!)*B!!%T4Mrsm:dcLN0roO1\roO1\q;qh\joFQ+!<2*\!.j9`k25>$
+!.Y~>
+JaUbM!!)0L!!%T<kO/?MQgOhRJaS*WU@.pZdI-o4s6fjdp[/"]rU0XbJaS*WhX:CDJ,~>
+Ja1JE!!)0H!!%T8kN`'IQg+PNJa.gOU?_XVdH^W0s6BR`pZ__YrTa@^Ja.gOhWk+@J,~>
+J`b2=!!)0D!!%T4kN;dEQf\8JJ`_OGU?;@RdH:?,s5s:\pZ;GUrT=(ZJ`_OGhWFh<J,~>
+JaVpnquGmI!!)*J!!%T<kO/?MJaUtSrr@W<p$Me[JaW@%qZ)38JaSWfrr@Q~>
+Ja2XfquGmE!!)*F!!%T8kN`'IJa1\Krr@W8p$)MWJa3'rqZ)34Ja/?^rr@Q~>
+J`c@^quGmA!!)*B!!%T4kN;dEJ`bDCrr@W4p#Z5SJ`cdjqZ)30J``'Vrr@Q~>
+JaVjl!!)rb!!)<P!!)*J!!%T<kO/<LJaS*WJaU8?quD<9JaSNcrr@Q~>
+Ja2Rd!!)r^!!)<L!!)*F!!%T8kN`$HJa.gOJa0u7quD<5Ja/6[rr@Q~>
+J`c:\!!)rZ!!)<H!!)*B!!%T4kN;aDJ`_OGJ`a]/quD<1J`_sSrr@Q~>
+JaVjl!!)-K!!)$H!!%T<kO/<LJaS*Wc0bQ3oBlSYQgOhRna?8SJaS*WMsgTFJ,~>
+Ja2Rd!!)-G!!)$D!!%T8kN`$HJa.gOc0>9/oBH;UQg+PNn`ouOJa.gOMsC<BJ,~>
+J`c:\!!)-C!!)$@!!%T4kN;aDJ`_OGc/o!+oB$#QQf\8Jn`K]KJ`_OGMrt$>J,~>
+JaVjl!!)ucrrE&drr<)f!<2Ec!;Ps^!;u9a!<2Ec!<2Ec!<2Ec!;u6b!.jS#mf!4MmJm6<me,uJ
+!.jQhmecGO!;5dX!.jQhmYL<2!.Y~>
+Ja2Rd!!)u_rrE&`rr<)b!<29_!;PgZ!;u-]!<29_!<29_!<29_!;u*^!.jFtlM^eIl2Ug8lLjEB
+!.jEdlMKlG!;5XT!.jEdlA4a*!.Y~>
+J`c:\!!)u[rrE&\rr<)^!<2-[!;P[V!;u!Y!<2-[!<2-[!<2-[!;tsZ!.j:pk5GAEjo>C4k4Rj:
+!.j9`k54<?!;5LP!.j9`k(r1"!.Y~>
+JaVjl!!)rb!!*#d"p"&kmJuYTrpBadq<e4_rU'XcrpBgfmK!7S!W_WgrpBgfmK!7S!!)uc!!%T<
+jmN*JR-stSJaS*W^[D($q<n+[JaS*WL@5'AJ,~>
+Ja2Rd!!)r^!!*#`"p!ogl2^)LrosI`q<@q[rTX@_rosObl2^hK!W_KcrosObl2^hK!!)u_!!%T8
+jm)gFR-O\OJa.gO^Ztduq<IhWJa.gOL?ed=J,~>
+J`c:\!!)rZ!!*#\"p!ccjoFNDroO1\q;qYWrT4([roO7^joGDC!W_?_roO7^joGDC!!)u[!!%T4
+jlZOBR-+DKJ`_OG^ZPLqq<%PSJ`_OGL?AL9J,~>
+JaVjl!!)rb!!*#d"T[rjmJu\Q!;Z$_!;u9b!<2Ea!!2KfqsOIaqsFFaJaVUerW%N;jR*!JJaW0u
+!!%T<!q$$gqsO@^JaS*WKC8a>J,~>
+Ja2Rd!!)r^!!*#`"T[ffl2^,I!;Ym[!;u-^!<29]!!2?bqs+1]qs".]Ja2=]rW%N7jQZ^FJa2mm
+!!%T8!pTacqs+(ZJa.gOKBiI:J,~>
+J`c:\!!)rZ!!*#\"T[ZbjoFQA!;YaW!;u!Z!<2-Y!!23^qr[nYqrRkYJ`c%UrW%N3jQ6FBJ`cUe
+!!%T4!p0I_qr[eVJ`_OGKBE16J,~>
+JaVjl!!)rb!!*#d"p"&kmJuYTp$Me[qX+Fcmd:)QmJm7_mJm7bmJm6<mc3a7!.jQhmXafUmf*:e
+me[!8mXaeWmf*9;~>
+Ja2Rd!!)r^!!*#`"p!ogl2^)Lp$)MWqW\._lKSBIl2Uh[l2Uh^l2Ug8lJq1/!.jEdl@J6MlMgka
+lMCR4l@J5OlMgj7~>
+J`c:\!!)rZ!!*#\"p!ccjoFNDp#Z5SqW7k[k2l[Ajo>DWjo>DZjo>C4k2YV'!.j9`k(2[Ek5PG]
+k5,.0k(2ZGk5PF3~>
+JaVjl!!)rb!!*#d"p"&kmJuYTrpBadq!J+^rpBadrpBgfmK!7S!W_WgrpBgfmK!7S!!*#d!!%T<
+iU6[Fp[8%]JaS*WJaVLbq>c*7JaS*WrpKddJ,~>
+Ja2Rd!!)r^!!*#`"p!ogl2^)LrosI`q!%hZrosI`rosObl2^hK!W_KcrosObl2^hK!!*#`!!%T8
+iTgCBpZhbYJa.gOJa24Zq>c*3Ja.gOrp'L`J,~>
+J`c:\!!)rZ!!*#\"p!ccjoFNDroO1\puVPVroO1\roO7^joGDC!W_?_roO7^joGDC!!*#\!!%T4
+iTC+>pZDJUJ`_OGJ`bqRq>c*/J`_OGroX4\J,~>
+JaVjl!!)ucrW)ud!!*#d!W_ZVrW)]\!!)ucrW)rcrW)rcrW)rcrW)ob!!%T<i9pUFqX44\JaW@%
+!!'k'!!'Iq!!%T<q<n+[JaS*WJaWI(rr@Q~>
+Ja2Rd!!)u_rW)u`!!*#`!W_NNrW)]X!!)u_rW)r_rW)r_rW)r_rW)o^!!%T8i9L=BqWdqXJa3'r
+!!'k#!!'Im!!%T8q<IhWJa.gOJa30urr@Q~>
+J`c:\!!)u[rW)u\!!*#\!W_BFrW)]T!!)u[rW)r[rW)r[rW)r[rW)oZ!!%T4i9(%>qW@YTJ`cdj
+!!'jt!!'Ii!!%T4q<%PSJ`_OGJ`cmmrr@Q~>
+JaUbM!!)0L!!%T<hX:CDrpKX`T^Dd[JaS*W`:!O'JaS*WJaW@%rr@Q~>
+Ja1JE!!)0H!!%T8hWk+@rp'@\T]uLWJa.gO`9R7#Ja.gOJa3'rrr@Q~>
+J`b2=!!)0D!!%T4hWFh<roX(XT]Q4SJ`_OG`9-stJ`_OGJ`cdjrr@Q~>
+JaS*WMsgEAJaS*Wm-XiRJaW=$qZ)38JaS*Wp[8%]J,~>
+Ja.gOMsC-=Ja.gOm-4QNJa3$qqZ)34Ja.gOpZhbYJ,~>
+J`_OGMrsj9J`_OGm,e9JJ`caiqZ)30J`_OGpZDJUJ,~>
+JaS*WMXLHDJaS*WJaVLbquD<9JaS*Wo^;_ZJ,~>
+Ja.gOMX(0@Ja.gOJa24ZquD<5Ja.gOo]lGVJ,~>
+J`_OGMWXm<J`_OGJ`bqRquD<1J`_OGo]H/RJ,~>
+JaS*WMXLHDJaS*WJaVUeqZ)38JaS*Wo'ZMXJ,~>
+Ja.gOMX(0@Ja.gOJa2=]qZ)34Ja.gOo'65TJ,~>
+J`_OGMWXm<J`_OGJ`c%UqZ)30J`_OGo&frPJ,~>
+JaS*WM=1?CJaWO*!!'4j!!(+.!!(C6!!'%equD<9JaS*Wn*^2UJ,~>
+Ja.gOM<b'?Ja37"!!'4f!!(+*!!(C2!!'%aquD<5Ja.gOn*9oQJ,~>
+J`_OGM<=d;J`cso!!'4b!!(+&!!(C.!!'%]quD<1J`_OGn)jWMJ,~>
+JaS*WM!k6BQgOhRQgOhRJaUABqZ)38JaS*WmI'uSJ,~>
+Ja.gOM!Fs>Qg+PNQg+PNJa1):qZ)34Ja.gOmHX]OJ,~>
+J`_OGM!"[:Qf\8JQf\8JJ`af2qZ)30J`_OGmH4EKJ,~>
+JaS*WL[P-AJaS*WqX4@`JaW:#quD<9JaS*WlL+ZPJ,~>
+Ja.gOL[+j=Ja.gOqWe(\Ja3!pquD<5Ja.gOlK\BLJ,~>
+J`_OGLZ\R9J`_OGqW@eXJ`c^hquD<1J`_OGlK8*HJ,~>
+JaS*WL@5$@JaS*WJaW*sqZ)38JaS*WkjJHNJ,~>
+Ja.gOL?ea<Ja.gOJa2gkqZ)34Ja.gOkj&0JJ,~>
+J`_OGL?AI8J`_OGJ`cOcqZ)30J`_OGkiVmFJ,~>
+JaS*WL$np?JaS*WJaW4!quD<9JaS*WjmN-KJ,~>
+Ja.gOL$JX;Ja.gOJa2pnquD<5Ja.gOjm)jGJ,~>
+J`_OGL$&@7J`_OGJ`cXfquD<1J`_OGjlZRCJ,~>
+JaS*WK^Sg>OR<)KJaW4!!!'b$!!'\"qZ)38JaS*Wj6lpIJ,~>
+Ja.gOK^/O:OQlfGJa2pn!!'au!!'[sqZ)34Ja.gOj6HXEJ,~>
+J`_OGK]`76OQHNCJ`cXf!!'aq!!'[oqZ)30J`_OGj6$@AJ,~>
+JaS*WT^M^XrpBadmI'uSJaTT,!!%T<ddI#5JaS*WJaVIarr@Q~>
+Ja.gOT^)FTrosI`mHX]OJa0<$!!%T8dd$`1Ja.gOJa21Yrr@Q~>
+J`_OGT]Z.ProO1\mH4EKJ`a#q!!%T4dcUH-J`_OGJ`bnQrr@Q~>
+JaS*WSF-O\md:)C!:B4S!.jQhmXag+med'9mXaeWmbR=2!.Y~>
+Ja.gOSE^7XlKSB7!:B(O!.jEdl@J7#lMLX5l@J5OlJ:b*!.Y~>
+J`_OGSE9tTk2l[+!:AqK!.j9`k(2[pk5541k(2ZGk2#2"!.Y~>
+JaS*WSaHR[md:)SmJm7Smf*9SmJm6<mXafmmed'9mXaeWmb@10!.Y~>
+Ja.gOSa$:WlKSBKl2UhOlMgjOl2Ug8l@J6elMLX5l@J5OlJ(V(!.Y~>
+J`_OGS`U"Sk2l[Cjo>DKk5PFKjo>C4k(2[]k5541k(2ZGk1f%u!.Y~>
+JaS*WT'cRYrpBadrpBadmI'rRJaS*WL@4s>jmN*Jna6AWrpK[aJaS*WORE,KJ,~>
+Ja.gOT'?:UrosI`rosI`mHXZNJa.gOL?e[:jm)gFn`g)Srp'C]Ja.gOOQuiGJ,~>
+J`_OGT&p"QroO1\roO1\mH4BJJ`_OGL?AC6jlZOBn`BfOroX+YJ`_OGOQQQCJ,~>
+JaS*WTC2[Ys6]jerpBadm-aiQU$_m\JaW4!!!'.hrrC=3quGgG!!*#d!!)WY!W_WgqsFFaJaS*W
+ORE,KJ,~>
+Ja.gOTBcCUs69RarosI`m-=QMU$;UXJa2pn!!'.drrC=/quGgC!!*#`!!)WU!W_Kcqs".]Ja.gO
+OQuiGJ,~>
+J`_OGTB?+Qs5j:]roO1\m,n9IU#l=TJ`cXf!!'.`rrC=+quGg?!!*#\!!)WQ!W_?_qrRkYJ`_OG
+OQQQCJ,~>
+JaS*WSF-FYmK!7S!!)?QrW%N;XR?)gJaVUequG^D!!*#d!!)f^!!*#d!!*#d!!)uc!!%T<JaSTe
+rr@Q~>
+Ja.gOSE^.Ul2^hK!!)?MrW%N7XQofcJa2=]quG^@!!*#`!!)fZ!!*#`!!*#`!!)u_!!%T8Ja/<]
+rr@Q~>
+J`_OGSE9kQjoGDC!!)?IrW%N3XQKN_J`c%UquG^<!!*#\!!)fV!!*#\!!*#\!!)u[!!%T4J``$U
+rr@Q~>
+JaS*WSF-FYmK!7S!!)<PrW&>R!!%T<JaWC&quGXB!!*#d!W_ZVrW)ob!!*#d!!*#d!!)uc!!%T<
+JaSTerr@Q~>
+Ja.gOSE^.Ul2^hK!!)<LrW&>N!!%T8Ja3*squGX>!!*#`!W_NNrW)o^!!*#`!!*#`!!)u_!!%T8
+Ja/<]rr@Q~>
+J`_OGSE9kQjoGDC!!)<HrW&>J!!%T4J`cgkquGX:!!*#\!W_BFrW)oZ!!*#\!!*#\!!)u[!!%T4
+J``$Urr@Q~>
+JaS*WT^Dd[rpBpimd:)C!9ikM!3>Pf!.jQhmd0B>!8Hr@!<;He!<2Be!:Kab!U]semJm7dmJm6<
+mXaedmf*9;~>
+Ja.gOT]uLWrosXelKSB7!9i_I!3>Db!.jEdlKmg6!8Hf<!<;<a!<26a!:'I^!U9[al2Uh`l2Ug8
+l@J5\lMgj7~>
+J`_OGT]Q4SroO@ak2l[+!9iSE!3>8^!.j9`k3V7.!8HZ8!<;0]!<2*]!9X1Z!TjC]jo>D\jo>C4
+k(2ZTk5PF3~>
+JaS*WTC2[YrU'Xck3i3KJaS*WQgXbOg?nq@rpBdemed(amJm7dmJm7dmJm7dmJm6<mXaedmf*9;~>
+Ja.gOTBcCUrTX@_k3DpGJa.gOQg4JKg?JY<rosLalMLY]l2Uh`l2Uh`l2Uh`l2Ug8l@J5\lMgj7~>
+J`_OGTB?+QrT4([k2uXCJ`_OGQfe2Gg?&A8roO4]k555Yjo>D\jo>D\jo>D\jo>C4k(2ZTk5PF3~>
+JaS*WJaWF'rW%N;VX=EaS*g7VhX::AfBrV=rpBgfmK!+O!!*#d!!*#d!s%cW!.jQhmZ$Z7!.Y~>
+Ja.gOJa3-trW%N7VWn-]S*BtRhWk"=fBN>9rosObl2^\G!!*#`!!*#`!s%WO!.jEdlAb*/!.Y~>
+J`_OGJ`cjlrW%N3VWIjYS)s\NhWF_9fB*&5roO7^joG8?!!*#\!!*#\!s%KG!.j9`k)JO'!.Y~>
+JaS*WJaWC&rW'=n!!%T<qX+=`JaW4!qZ,17!!*#d!W_WgrpBadq<e:amK!7S!!%T<JaSNcrr@Q~>
+Ja.gOJa3*srW'=j!!%T8qW\%\Ja2pnqZ,13!!*#`!W_KcrosI`q<A"]l2^hK!!%T8Ja/6[rr@Q~>
+J`_OGJ`cgkrW'=f!!%T4qW7bXJ`cXfqZ,1/!!*#\!W_?_roO1\q;q_YjoGDC!!%T4J`_sSrr@Q~>
+JaS*WJaW@%rrADR!!%T<N:-TDdI-u6rpKacp[/"]rU'XcJaS*WNUHfHJ,~>
+Ja.gOJa3'rrrADN!!%T8N9^<@dH^]2rp'I_pZ__YrTX@_Ja.gONU$NDJ,~>
+J`_OGJ`cdjrrADJ!!%T4N9:$<dH:E.roX1[pZ;GUrT4([J`_OGNTU6@J,~>
+JaS*WJaW=$rrB_"!!%T<o^2\ZJaW@%qZ)38JaS*W_X@F(J,~>
+Ja.gOJa3$qrrB^s!!%T8o]cDVJa3'rqZ)34Ja.gO_Wq.$J,~>
+J`_OGJ`cairrB^o!!%T4o]?,RJ`cdjqZ)30J`_OG_WLjuJ,~>
+JaS*WJaW:#rr@W<JaTK)quD<9JaS*W^[D+%J,~>
+Ja.gOJa3!prr@W8Ja03!quD<5Ja.gO^Zth!J,~>
+J`_OGJ`c^hrr@W4J``onquD<1J`_OG^ZPOrJ,~>
+JaS*WJaW:#rW%N;\*a4rM=(?DnF$/RJaS*WJaU5>rr@Q~>
+Ja.gOJa3!prW%N7\*<qnM<Y'@nETlNJa.gOJa0r6rr@Q~>
+J`_OGJ`c^hrW%N3\)mYjM<4d<nE0TJJ`_OGJ`aZ.rr@Q~>
+JaS*WJaW7"rW'q*!!%T<kjAENQL4_Qo'ZDUJaS*WJaU,;rr@Q~>
+Ja.gOJa2sorW'q&!!%T8kir-JQKeGMo'6,QJa.gOJa0i3rr@Q~>
+J`_OGJ`c[grW'q"!!%T4kiMjFQKA/Io&fiMJ`_OGJ`aQ+rr@Q~>
+JaS*WJaW4!rW&;Q!!%T<Wp]lep[7nYJaS*WJaU&9rr@Q~>
+Ja.gOJa2pnrW&;M!!%T8Wp9TapZhVUJa.gOJa0c1rr@Q~>
+J`_OGJ`cXfrW&;I!!%T4Woj<]pZD>QJ`_OGJ`aK)rr@Q~>
+JaS*WJaW0urW(73!!%T<o^2\ZK'rU<qX47]JaS*WJaTr6rr@Q~>
+Ja.gOJa2mmrW(7/!!%T8o]cDVK'N=8qWdtYJa.gOJa0Z.rr@Q~>
+J`_OGJ`cUerW(7+!!%T4o]?,RK'*%4qW@\UJ`_OGJ`aB&rr@Q~>
+JaS*WJaW-trW%N;JaU>ArW)rcqZ)38JaS*WZgRhnJ,~>
+Ja.gOJa2jlrW%N7Ja1&9rW)r_qZ)34Ja.gOZg.PjJ,~>
+J`_OGJ`cRdrW%N3J`ac1rW)r[qZ)30J`_OGZf_8fJ,~>
+JaS*WJaW*srW%N;JaU>Aq#H!6JaS*WYjVMkJ,~>
+Ja.gOJa2gkrW%N7Ja1&9q#H!2Ja.gOYj25gJ,~>
+J`_OGJ`cOcrW%N3J`ac1q#H!.J`_OGYibrcJ,~>
+JaS*WJaW'rrW(R<!!%T<p$Me[JaW@%qZ)38JaS*WY3u;iJ,~>
+Ja.gOJa2djrW(R8!!%T8p$)MWJa3'rqZ)34Ja.gOY3Q#eJ,~>
+J`_OGJ`cLbrW(R4!!%T4p#Z5SJ`cdjqZ)30J`_OGY3,`aJ,~>
+JaS*WJaW$qrW&>R!!%T<Y3u2fJaS*WJaTT,rr@Q~>
+Ja.gOJa2airW&>N!!%T8Y3PobJa.gOJa0<$rr@Q~>
+J`_OGJ`cIarW&>J!!%T4Y3,W^J`_OGJ`a#qrr@Q~>
+JaS*WJaW!prr@W<ddI,8JaW=$qZ)38JaS*WWUBcdJ,~>
+Ja.gOJa2^hrr@W8dd$i4Ja3$qqZ)34Ja.gOWTsK`J,~>
+J`_OGJ`cF`rr@W4dcUQ0J`caiqZ)30J`_OGWTO3\J,~>
+JaS*WJaVsorr@W<JaU\KquD<9JaS*WVXFHaJ,~>
+Ja.gOJa2[grr@W8Ja1DCquD<5Ja.gOVX"0]J,~>
+J`_OGJ`cC_rr@W4J`b,;quD<1J`_OGVWRmYJ,~>
+JaS*WJaVpnrr@W<JaUhOqZ)38JaS*WV!e6_J,~>
+Ja.gOJa2Xfrr@W8Ja1PGqZ)34Ja.gOV!@s[J,~>
+J`_OGJ`c@^rr@W4J`b8?qZ)30J`_OGUuq[WJ,~>
+JaS*WJaVpnrW)0M!!%T<p$Me[JaW=$quD<9JaS*WU$hp\J,~>
+Ja.gOJa2XfrW)0I!!%T8p$)MWJa3$qquD<5Ja.gOU$DXXJ,~>
+J`_OGJ`c@^rW)0E!!%T4p#Z5SJ`caiquD<1J`_OGU#u@TJ,~>
+JaS*WJaVmmrW&;Q!!&AR!!'(fqZ)38JaS*WTC2^ZJ,~>
+Ja.gOJa2UerW&;M!!&AN!!'(bqZ)34Ja.gOTBcFVJ,~>
+J`_OGJ`c=]rW&;I!!&AJ!!'(^qZ)30J`_OGTB?.RJ,~>
+JaS*WJaVjlrW&>R!!(=4!!%T<p?qhYJaS*WJaT&rrr@Q~>
+Ja.gOJa2RdrW&>N!!(=0!!%T8p?MPUJa.gOJa/cjrr@Q~>
+J`_OGJ`c:\rW&>J!!(=,!!%T4p?)8QJ`_OGJ``Kbrr@Q~>
+JaS*WJaVgkrW%N;JaV=]qZ)38JaS*WRdU1UJ,~>
+Ja.gOJa2OcrW%N7Ja2%UqZ)34Ja.gORd0nQJ,~>
+J`_OGJ`c7[rW%N3J`bbMqZ)30J`_OGRcaVMJ,~>
+JaS*WJaVdjrW)]\rr@W<JaVjlquD<9JaS*WQgXkRJ,~>
+Ja.gOJa2LbrW)]Xrr@W8Ja2RdquD<5Ja.gOQg4SNJ,~>
+J`_OGJ`c4ZrW)]Trr@W4J`c:\quD<1J`_OGQfe;JJ,~>
+JaS*WJaVairW)i`qZ)38q<e4_JaW=$qZ)38JaS*WQ1"YPJ,~>
+Ja.gOJa2IarW)i\qZ)34q<@q[Ja3$qqZ)34Ja.gOQ0SALJ,~>
+J`_OGJ`c1YrW)iXqZ)30q;qYWJ`caiqZ)30J`_OGQ0/)HJ,~>
+JaS*WJaV^hrW)udqZ)38[-dno]^G[tJaS*WJaS]hrr@Q~>
+Ja.gOJa2F`rW)u`qZ)34[-@Vk]^#CpJa.gOJa/E`rr@Q~>
+J`_OGJ`c.XrW)u\qZ)30[,q>g]]T+lJ`_OGJ``-Xrr@Q~>
+JaS*WJaV[gq>d&R!!%T<eF*26JaS*WJaSWfrr@Q~>
+Ja.gOJa2C_q>d&N!!%T8eEZo2Ja.gOJa/?^rr@Q~>
+J`_OGJ`c+Wq>d&J!!%T4eE6W.J`_OGJ``'Vrr@Q~>
+JaS*WJaVXfrW%N;JaVpnquD<9JaS*WNUHfHJ,~>
+Ja.gOJa2@^rW%N7Ja2XfquD<5Ja.gONU$NDJ,~>
+J`_OGJ`c(VrW%N3J`c@^quD<1J`_OGNTU6@J,~>
+JaS*WJaVUerr@W<JaW$qqZ)38JaS*WMsgTFJ,~>
+Ja.gOJa2=]rr@W8Ja2aiqZ)34Ja.gOMsC<BJ,~>
+J`_OGJ`c%Urr@W4J`cIaqZ)30J`_OGMrt$>J,~>
+JaS*WJaVRdrr@W<rpBadJaW:#quGjHrW)KV!!*#dquD<9JaS*W_!_4&J,~>
+Ja.gOJa2:\rr@W8rosI`Ja3!pquGjDrW)KR!!*#`quD<5Ja.gO_!:q"J,~>
+J`_OGJ`c"Trr@W4roO1\J`c^hquGj@rW)KN!!*#\quD<1J`_OG^ukXsJ,~>
+JaS*WJaVRdrW%N;XR?)gcL1Q0jR*!JrpBadoBlY[mK!.P!!%T<JaS*W_!_4&J,~>
+Ja.gOJa2:\rW%N7XQofccKb9,jQZ^FrosI`oBHAWl2^_H!!%T8Ja.gO_!:q"J,~>
+J`_OGJ`c"TrW%N3XQKN_cK>!(jQ6FBroO1\oB$)SjoG;@!!%T4J`_OG^ukXsJ,~>
+JaS*WJaVOcrW&>Rrr@W<jmN$HiU-[Go^2\ZrpBadrpBadrU'XcJaS*WJaU;@rr@Q~>
+Ja.gOJa27[rW&>Nrr@W8jm)aDiT^CCo]cDVrosI`rosI`rTX@_Ja.gOJa1#8rr@Q~>
+J`_OGJ`btSrW&>Jrr@W4jlZI@iT:+?o]?,RroO1\roO1\rT4([J`_OGJ`a`0rr@Q~>
+JaS*WJaVLbrW%N;JaWO*qZ,OA!!)oarW)ob!!*#d!!*#d!!)uc!!%T<JaS*W^[D+%J,~>
+Ja.gOJa24ZrW%N7Ja37"qZ,O=!!)o]rW)o^!!*#`!!*#`!!)u_!!%T8Ja.gO^Zth!J,~>
+J`_OGJ`bqRrW%N3J`csoqZ,O9!!)oYrW)oZ!!*#\!!*#\!!)u[!!%T4J`_OG^ZPOrJ,~>
+JaS*WJaVIarW%N;JaWF9h!Y+@s6]jerpBdemed%cmK!7S!!*#d!!%T<JaS*W^@)"$J,~>
+Ja.gOJa21YrW%N7Ja3.5h!4h<s69RarosLalMLV_l2^hK!!*#`!!%T8Ja.gO^?Y^uJ,~>
+J`_OGJ`bnQrW%N3J`ck1gueP8s5j:]roO4]k552[joGDC!!*#\!!%T4J`_OG^?5FqJ,~>
+JaS*WJaVF`rW&&J!!%T<p[7nYg?nq@rpBdemed(amJm7dmJm7dmJm7dmJm6<mXaeWm_8,h!.Y~>
+Ja.gOJa2.XrW&&F!!%T8pZhVUg?JY<rosLalMLY]l2Uh`l2Uh`l2Uh`l2Ug8l@J5OlFuQ`!.Y~>
+J`_OGJ`bkPrW&&B!!%T4pZD>Qg?&A8roO4]k555Yjo>D\jo>D\jo>D\jo>C4k(2ZGk.^!X!.Y~>
+JaS*WJaWF'qu?`bquH3RrW%N;XR6&ghX::AfBrV=rpBgfmK!+O!!*#d!!*#d!s%cW!.jQhmXaf>
+mf*9;~>
+Ja.gOJa3-tqu?`^quH3NrW%N7XQfcchWk"=fBN>9rosObl2^\G!!*#`!!*#`!s%WO!.jEdl@J66
+lMgj7~>
+J`_OGJ`cjlqu?`ZquH3JrW%N3XQBK_hWF_9fB*&5roO7^joG8?!!*#\!!*#\!s%KG!.j9`k(2[.
+k5PF3~>
+JaS*WJaW:#!W_WglL+WOR-jqSJaW7"qZ,17!!*#d!W_WgrpBadq<e:amK!7S!!%T<JaS*W^$bn#
+J,~>
+Ja.gOJa3!p!W_KclK\?KR-FYOJa2soqZ,13!!*#`!W_KcrosI`q<A"]l2^hK!!%T8Ja.gO^$>Ut
+J,~>
+J`_OGJ`c^h!W_?_lK8'GR-"AKJ`c[gqZ,1/!!*#\!W_?_roO1\q;q_YjoGDC!!%T4J`_OG^#o=p
+J,~>
+JaS*WJaW=$!s%cW!9rqN!1E6T!.jS5med(4mf!4cmf!4\mJm7cmJm6<mXaeWm_/&g!.Y~>
+Ja.gOJa3$q!s%WO!9reJ!1E*P!.jG1lMLY0lM^e_lM^eXl2Uh_l2Ug8l@J5OlFlK_!.Y~>
+J`_OGJ`cai!s%KG!9rYF!1DsL!.j;-k555,k5GA[k5GATjo>D[jo>C4k(2ZGk.TpW!.Y~>
+JaS*WJaW@%!!*#d!s%`h!:0(Q!.jR$me[!8mXaeWmXafsmf*9;~>
+Ja.gOJa3'r!!*#`!s%Td!:/qM!.jEulMCR4l@J5Ol@J6klMgj7~>
+J`_OGJ`cdj!!*#\!s%H`!:/eI!.j9qk5,.0k(2ZGk(2[ck5PF3~>
+JaS*WJaWC&rW)udrrE)e!!)?QrrAb\!!%T<p?qhYJaS*WJaS*Wn*^2UJ,~>
+Ja.gOJa3*srW)u`rrE)a!!)?MrrAbX!!%T8p?MPUJa.gOJa.gOn*9oQJ,~>
+J`_OGJ`cgkrW)u\rrE)]!!)?IrrAbT!!%T4p?)8QJ`_OGJ`_OGn)jWMJ,~>
+JaS*WJaW:#!!)rb!!)<Prr@W<X6orfnF$2SJaS*WJaS*Wm-alRJ,~>
+Ja.gOJa3!p!!)r^!!)<Lrr@W8X6KZbnEToOJa.gOJa.gOm-=TNJ,~>
+J`_OGJ`c^h!!)rZ!!)<Hrr@W4X6'B^nE0WKJ`_OGJ`_OGm,n<JJ,~>
+JaS*WJaW:#!!)rb!!)<PrW&;Q!!&ARrW)TYquD<9JaS*WJaVgkrr@Q~>
+Ja.gOJa3!p!!)r^!!)<LrW&;M!!&ANrW)TUquD<5Ja.gOJa2Ocrr@Q~>
+J`_OGJ`c^h!!)rZ!!)<HrW&;I!!&AJrW)TQquD<1J`_OGJ`c7[rr@Q~>
+JaS*WJaWF'!!*#d!W_WgrpBadl0eNNX7#ufK^Sg>q!S%[JaS*WJaS*WkO/?MJ,~>
+Ja.gOJa3-t!!*#`!W_KcrosI`l0A6JX6T]bK^/O:q!.bWJa.gOJa.gOkN`'IJ,~>
+J`_OGJ`cjl!!*#\!W_?_roO1\l/qsFX60E^K]`76pu_JSJ`_OGJ`_OGkN;dEJ,~>
+JaS*WJaWC&rW)rcrW)-LrW%N;XR?)gqX47]JaS*WJaS*WjmN-KJ,~>
+Ja.gOJa3*srW)r_rW)-HrW%N7XQofcqWdtYJa.gOJa.gOjm)jGJ,~>
+J`_OGJ`cgkrW)r[rW)-DrW%N3XQKN_qW@\UJ`_OGJ`_OGjlZRCJ,~>
+JaS*WJaV+WrW%N;XR?)grpK[aJaS*WJaS*WipQgHJ,~>
+Ja.gOJa1hOrW%N7XQofcrp'C]Ja.gOJa.gOip-ODJ,~>
+J`_OGJ`bPGrW%N3XQKN_roX+YJ`_OGJ`_OGio^7@J,~>
+JaS*WJaV(VrW'=n!!%T<qsO7[JaS*WJaS*Wi9pUFJ,~>
+Ja.gOJa1eNrW'=j!!%T8qs*tWJa.gOJa.gOi9L=BJ,~>
+J`_OGJ`bMFrW'=f!!%T4qr[\SJ`_OGJ`_OGi9(%>J,~>
+JaS*WJaV%UrW%N;Y3u2fJaS*WJaS*Wh<t:CJ,~>
+Ja.gOJa1bMrW%N7Y3PobJa.gOJa.gOh<P"?J,~>
+J`_OGJ`bJErW%N3Y3,W^J`_OGJ`_OGh<+_;J,~>
+JaS*WJaV"TrW'Y"!!%T<p[7nYJaS*WJaS*Wg[>(AJ,~>
+Ja.gOJa1_LrW'Xs!!%T8pZhVUJa.gOJa.gOgZne=J,~>
+J`_OGJ`bGDrW'Xo!!%T4pZD>QJ`_OGJ`_OGgZJM9J,~>
+JaS*WJaUtSrr@W<[-mhlJaS*WJaS*Wf^Ab>J,~>
+Ja.gOJa1\Krr@W8[-IPhJa.gOJa.gOf]rJ:J,~>
+J`_OGJ`bDCrr@W4[-%8dJ`_OGJ`_OGf]N26J,~>
+JaS*WJaUqRrr@W<\F04oJaS*WJaS*Wf'`P<J,~>
+Ja.gOJa1YJrr@W8\E`qkJa.gOJa.gOf'<88J,~>
+J`_OGJ`bABrr@W4\E<YgJ`_OGJ`_OGf&lu4J,~>
+JaS*WJaUnQrrC%+!!%T<q!S%[JaS*WJaS*We*d59J,~>
+Ja.gOJa1VIrrC%'!!%T8q!.bWJa.gOJa.gOe*?r5J,~>
+J`_OGJ`b>ArrC%#!!%T4pu_JSJ`_OGJ`_OGe)pZ1J,~>
+JaS*WJaUkPrr@W<^[Ct!JaS*WJaS*WdI.#7J,~>
+Ja.gOJa1SHrr@W8^Zt[rJa.gOJa.gOdH^`3J,~>
+J`_OGJ`b;@rr@W4^ZPCnJ`_OGJ`_OGdH:H/J,~>
+JaS*WJaUkPrW(73!!(72!!'+gquD<9JaS*WJaUhOrr@Q~>
+Ja.gOJa1SHrW(7/!!(7.!!'+cquD<5Ja.gOJa1PGrr@Q~>
+J`_OGJ`b;@rW(7+!!(7*!!'+_quD<1J`_OGJ`b8?rr@Q~>
+JaS*WJaUhOrW%N;`pW^(JaS*WJaS*WbjPK2J,~>
+Ja.gOJa1PGrW%N7`p3F$Ja.gOJa.gObj,3.J,~>
+J`_OGJ`b8?rW%N3`od-uJ`_OGJ`_OGbi\p*J,~>
+JaS*WJaUeNrW%N;amT',JaS*WJaS*WamT0/J,~>
+Ja.gOJa1MFrW%N7am/d(Ja.gOJa.gOam/m+J,~>
+J`_OGJ`b5>rW%N3al`L$J`_OGJ`_OGal`U'J,~>
+JaS*WJaUbMrW(R<!!%T<q!S"ZJaS*WJaS*Wa6rs-J,~>
+Ja.gOJa1JErW(R8!!%T8q!._VJa.gOJa.gOa6N[)J,~>
+J`_OGJ`b2=rW(R4!!%T4pu_GRJ`_OGJ`_OGa6*C%J,~>
+JaS*WJaU_LrW%N;d-gf3JaS*WJaS*W`:!X*J,~>
+Ja.gOJa1GDrW%N7d-CN/Ja.gOJa.gO`9R@&J,~>
+J`_OGJ`b/<rW%N3d,t6+J`_OGJ`_OG`9.("J,~>
+JaS*WJaU\KrW&>R!!'b$qZ)38JaS*WJaUDCrr@Q~>
+Ja.gOJa1DCrW&>N!!'auqZ)34Ja.gOJa1,;rr@Q~>
+J`_OGJ`b,;rW&>J!!'aqqZ)30J`_OGJ`ai3rr@Q~>
+JaS*WJaUYJrW%N;fC&P:JaS*WJaS*W^[D+%J,~>
+Ja.gOJa1ABrW%N7fBW86Ja.gOJa.gO^Zth!J,~>
+J`_OGJ`b):rW%N3fB2u2J`_OGJ`_OG^ZPOrJ,~>
+JaS*WJaUVIrr@W<g@"h<JaS*WJaS*W^$bn#J,~>
+Ja.gOJa1>Arr@W8g?SP8Ja.gOJa.gO^$>UtJ,~>
+J`_OGJ`b&9rr@W4g?/84J`_OGJ`_OG^#o=pJ,~>
+JaS*WJaUSHrrD9N!!%T<p[7qZJaS*WJaS*W]'fRuJ,~>
+Ja.gOJa1;@rrD9J!!%T8pZhYVJa.gOJa.gO]'B:qJ,~>
+J`_OGJ`b#8rrD9F!!%T4pZDARJ`_OGJ`_OG]&s"mJ,~>
+JaS*WJaUPGrr@W<iU6RCipHdHna6AWrpK[aJaS*WJaS*Wna?DWJ,~>
+Ja.gOJa18?rr@W8iTg:?ip$LDn`g)Srp'C]Ja.gOJa.gOn`p,SJ,~>
+J`_OGJ`au7rr@W4iTC";ioU4@n`BfOroX+YJ`_OGJ`_OGn`KiOJ,~>
+JaS*WJaUPGrW&>RrrCC5quGXB!!)TX!W_WgqsFFaJaS*WJaS*Wna?DWJ,~>
+Ja.gOJa18?rW&>NrrCC1quGX>!!)TT!W_Kcqs".]Ja.gOJa.gOn`p,SJ,~>
+J`_OGJ`au7rW&>JrrCC-quGX:!!)TP!W_?_qrRkYJ`_OGJ`_OGn`KiOJ,~>
+JaS*WJaUMFrW%N;kjJ<JhX:CDp[/"]rpBadrpBadrU'XcJaS*WJaS*WnF$;VJ,~>
+Ja.gOJa15>rW%N7kj&$FhWk+@pZ__YrosI`rosI`rTX@_Ja.gOJa.gOnEU#RJ,~>
+J`_OGJ`ar6rW%N3kiVaBhWFh<pZ;GUroO1\roO1\rT4([J`_OGJ`_OGnE0`NJ,~>
+JaS*WJaUJErW)]\rr@W<p[7qZh!P4DmK!7SrW)ob!!*#d!!*#d!!)uc!!%T<JaS*WJaW$qrr@Q~>
+Ja.gOJa12=rW)]Xrr@W8pZhYVh!+q@l2^hKrW)o^!!*#`!!*#`!!)u_!!%T8Ja.gOJa2airr@Q~>
+J`_OGJ`ao5rW)]Trr@W4pZDARgu\Y<joGDCrW)oZ!!*#\!!*#\!!)u[!!%T4J`_OGJ`cIarr@Q~>
+JaS*WJaUGDrW)i`qZ)38qsO=]g?o+EmJu\C!<2Be!:Kab!U]semJm7dmJm6<mXaeWmXafpmf*9;~>
+Ja.gOJa1/<rW)i\qZ)34qs+%Yg?JhAl2^,7!<26a!:'I^!U9[al2Uh`l2Ug8l@J5Ol@J6hlMgj7~>
+J`_OGJ`al4rW)iXqZ)30qr[bUg?&P=joFQ+!<2*]!9X1Z!TjC]jo>D\jo>C4k(2ZGk(2[`k5PF3~>
+JaS*WJaUDCrW)udqZ)38qX47]f^8nCmd:)Cmed(amJm7dmJm7dmJm7dmJm6<mXaeWmXafpmf*9;~>
+Ja.gOJa1,;rW)u`qZ)34qWdtYf]iV?lKSB7lMLY]l2Uh`l2Uh`l2Uh`l2Ug8l@J5Ol@J6hlMgj7~>
+J`_OGJ`ai3rW)u\qZ)30qW@\Uf]E>;k2l[+k555Yjo>D\jo>D\jo>D\jo>C4k(2ZGk(2[`k5PF3~>
+JaS*WJaUABq>d&R!!(sFqZ,48qu?cc!;c*`!<2Bd!<2Bg!:K7TJaS*WJaS*WmdC)TJ,~>
+Ja.gOJa1):q>d&N!!(sBqZ,44qu?c_!;bs\!<26`!<26c!:&hLJa.gOJa.gOmcsfPJ,~>
+J`_OGJ`af2q>d&J!!(s>qZ,40qu?c[!;bgX!<2*\!<2*_!9WDDJ`_OGJ`_OGmcONLJ,~>
+JaS*WJaU>ArW%N;q<n.\d-^u9md:)SmJm7_mK*CV!<2Bd!.jQhmXaeWmdBNC!.Y~>
+Ja.gOJa1&9rW%N7q<IkXd-:]5lKSBKl2Uh[l2gtN!<26`!.jEdl@J5OlL*s;!.Y~>
+J`_OGJ`ac1rW%N3q<%STd,kE1k2l[Cjo>DWjoPPF!<2*\!.j9`k(2ZGk3hC3!.Y~>
+JaS*WJaU;@rW%N;rU0O_cL(Z4rpKacp[/"]rU'XcJaS*WJaS*WmdC)TJ,~>
+Ja.gOJa1#8rW%N7rTa7[cKYB0rp'I_pZ__YrTX@_Ja.gOJa.gOmcsfPJ,~>
+J`_OGJ`a`0rW%N3rT<tWcK5*,roX1[pZ;GUrT4([J`_OGJ`_OGmcONLJ,~>
+JaS*WJaU8?rr@W<s6fdbJaS*WJaS*WU$hp\J,~>
+Ja.gOJa0u7rr@W8s6BL^Ja.gOJa.gOU$DXXJ,~>
+J`_OGJ`a]/rr@W4s5s4ZJ`_OGJ`_OGU#u@TJ,~>
+JaS*WJaU5>rr@]>qZ)38JaS*WJaT/urr@Q~>
+Ja.gOJa0r6rr@]:qZ)34Ja.gOJa/lmrr@Q~>
+J`_OGJ`aZ.rr@]6qZ)30J`_OGJ``Terr@Q~>
+JaS*WJaU2=rrADR!!)QWquD<9JaS*WJaT&rrr@Q~>
+Ja.gOJa0o5rrADN!!)QSquD<5Ja.gOJa/cjrr@Q~>
+J`_OGJ`aW-rrADJ!!)QOquD<1J`_OGJ``Kbrr@Q~>
+JaS*WJaU2=rW&>RrW)Z[qZ)38JaS*WJaSuprr@Q~>
+Ja.gOJa0o5rW&>NrW)ZWqZ)34Ja.gOJa/]hrr@Q~>
+J`_OGJ`aW-rW&>JrW)ZSqZ)30J`_OGJ``E`rr@Q~>
+JaS*WJaU/<rW&>RrW)c^quD<9JaS*WJaSlmrr@Q~>
+Ja.gOJa0l4rW&>NrW)cZquD<5Ja.gOJa/Terr@Q~>
+J`_OGJ`aT,rW&>JrW)cVquD<1J`_OGJ``<]rr@Q~>
+JaS*WJaU,;rW&>RrrDubqZ)38JaS*WJaSfkrr@Q~>
+Ja.gOJa0i3rW&>NrrDu^qZ)34Ja.gOJa/Ncrr@Q~>
+J`_OGJ`aQ+rW&>JrrDuZqZ)30J`_OGJ``6[rr@Q~>
+JaS*WJaV"T!!)uc!!)ESrW&>RrrE)equD<9JaS*WJaS]hrr@Q~>
+Ja.gOJa1_L!!)u_!!)EOrW&>NrrE)aquD<5Ja.gOJa/E`rr@Q~>
+J`_OGJ`bGD!!)u[!!)EKrW&>JrrE)]quD<1J`_OGJ``-Xrr@Q~>
+JaS*WJaV"T!!*#d!W_WgmI'rRRI9nOJaS*WJaS*WORE,KJ,~>
+Ja.gOJa1_L!!*#`!W_KcmHXZNRHjVKJa.gOJa.gOOQuiGJ,~>
+J`_OGJ`bGD!!*#\!W_?_mH4BJRHF>GJ`_OGJ`_OGOQQQCJ,~>
+JaS*WJaV%UrrE)e!!*#d!!)ESrW&GUquD<9JaS*WJaSNcrr@Q~>
+Ja.gOJa1bMrrE)a!!*#`!!)EOrW&GQquD<5Ja.gOJa/6[rr@Q~>
+J`_OGJ`bJErrE)]!!*#\!!)EKrW&GMquD<1J`_OGJ`_sSrr@Q~>
+JaS*WJaV(V"T[rjmd:)SmJm7Rmf!3Yme[!8mXaeWmXaeamf*9;~>
+Ja.gOJa1eN"T[fflKSBKl2UhNlM^dUlMCR4l@J5Ol@J5YlMgj7~>
+J`_OGJ`bMF"T[Zbk2l[Cjo>DJk5G@Qk5,.0k(2ZGk(2ZQk5PF3~>
+JaS*WJaV(V"T[rjmd:)SmJm7Qmf!3\med'9mXaeWmXae^mf*9;~>
+Ja.gOJa1eN"T[fflKSBKl2UhMlM^dXlMLX5l@J5Ol@J5VlMgj7~>
+J`_OGJ`bMF"T[Zbk2l[Cjo>DIk5G@Tk5541k(2ZGk(2ZNk5PF3~>
+JaS*WJaV+W"p")Z!:K7TrpBadlL+ZPV=+3\JaS*WJaS*WL@5'AJ,~>
+Ja.gOJa1hO"p!rR!:&hLrosI`lK\BLV<[pXJa.gOJa.gOL?ed=J,~>
+J`_OGJ`bPG"p!fJ!9WDDroO1\lK8*HV<7XTJ`_OGJ`_OGL?AL9J,~>
+JaS*WJaV+Wqu?cc!<2Bd!9rqO!3#>`!.jQhmXaeWmXss-!.Y~>
+Ja.gOJa1hOqu?c_!<26`!9reK!3#2\!.jEdl@J5Ol@\C%!.Y~>
+J`_OGJ`bPGqu?c[!<2*\!9rYG!3#&X!.j9`k(2ZGk(Dgr!.Y~>
+JaS*WJaV"T!!*#d!W_WgkO/?MXR>udJaS*WJaS*WJaNU-!!%N~>
+Ja.gOJa1_L!!*#`!W_KckN`'IXQo]`Ja.gOJa.gOJa*=%!!%N~>
+J`_OGJ`bGD!!*#\!W_?_kN;dEXQKE\J`_OGJ`_OGJ`[$r!!%N~>
+JaS*WJaV"T!!)uc!!)0LrW'.iquD<9JaS*WJaS*WrpKddJ,~>
+Ja.gOJa1_L!!)u_!!)0HrW'.equD<5Ja.gOJa.gOrp'L`J,~>
+J`_OGJ`bGD!!)u[!!)0DrW'.aquD<1J`_OGJ`_OGroX4\J,~>
+JaS*WJaTf2rW':mquD<9JaS*WJaS*WqsOIaJ,~>
+Ja.gOJa0N*rW':iquD<5Ja.gOJa.gOqs+1]J,~>
+J`_OGJ`a6"rW':equD<1J`_OGJ`_OGqr[nYJ,~>
+JaS*WJaTc1rW'CpquD<9JaW@%r;cibrrDWX!!)`\!!*#d!!)ZZ!!%T<JaU&9rr@Q~>
+Ja.gOJa0K)rW'ClquD<5Ja3'rr;ci^rrDWT!!)`X!!*#`!!)ZV!!%T8Ja0c1rr@Q~>
+J`_OGJ`a3!rW'ChquD<1J`cdjr;ciZrrDWP!!)`T!!*#\!!)ZR!!%T4J`aK)rr@Q~>
+JaS*WJaT`0rW'OtquD<9JaW4!!s%cW!<2Bd!:oOX!;>j\!<;He!;,[Z!.jQhm^V]b!.Y~>
+Ja.gOJa0H(rW'OpquD<5Ja2pn!s%WO!<26`!:oCT!;>^X!<;<a!;,OV!.jEdlF?-Z!.Y~>
+J`_OGJ`a/urW'OlquD<1J`cXf!s%KG!<2*\!:o7P!;>RT!<;0]!;,CR!.j9`k.'RR!.Y~>
+JaS*WJaT]/rW'Y"quD<9JaW-t!s%cW!<2Bd!:oOX!;>j\!<;He!;,[Z!.jQhm^V]b!.Y~>
+Ja.gOJa0E'rW'XsquD<5Ja2jl!s%WO!<26`!:oCT!;>^X!<;<a!;,OV!.jEdlF?-Z!.Y~>
+J`_OGJ`a,trW'XoquD<1J`cRd!s%KG!<2*\!:o7P!;>RT!<;0]!;,CR!.j9`k.'RR!.Y~>
+JaS*WJaTZ.rW'e&quD<9JaW$q!s%cW!<2Bd!<)?b!<2Ec!<;Hh!:K7Tq<eFemJuYTmK!7S#6=/l
+!:BjTmem.bmf!4dmK3IW!!%T<JaUSHrr@Q~>
+Ja.gOJa0B&rW'e"quD<5Ja2ai!s%WO!<26`!<)3^!<29_!<;<d!:&hLq<A.al2^)Ll2^hK#6=#h
+!9sRLlMU_^lM^e`l2q%O!!%T8Ja1;@rr@Q~>
+J`_OGJ`a)srW'dsquD<1J`cIa!s%KG!<2*\!<)'Z!<2-[!<;0`!9WDDq;qk]joFNDjoGDC#6<ld
+!9O:Dk5>;Zk5GA\joYVG!!%T4J`b#8rr@Q~>
+JaS*WJaTW-rW'n)quD<9JaVsorW)ob!!*#d!!*#d!W_WgrpBmhmJuYTq!J=dmJuYTmK!7S#QX8m
+mJuYTmK!7S!W_WgrpBsjmJm7TmJqh+JaUVIrr@Q~>
+Ja.gOJa0?%rW'n%quD<5Ja2[grW)o^!!*#`!!*#`!W_KcrosUdl2^)Lq!&%`l2^)Ll2^hK#QX,i
+l2^)Ll2^hK!W_Kcros[fl2UhLl2ZD#Ja1>Arr@Q~>
+J`_OGJ`a&rrW'n!quD<1J`cC_rW)oZ!!*#\!!*#\!W_?_roO=`joFNDpuVb\joFNDjoGDC#QWue
+joFNDjoGDC!W_?_roOCbjo>DDjoBtpJ`b&9rr@Q~>
+JaS*WJaTT,rW(%-quD<9JaVjl!s%cW!<2Bd!<2Bd!<2Bf!:Bjbmf*:]mKN[ZmJm7T!<2Bl!:BjT
+!:BjT!<2Be!:Kab!U]r=mXafEmf*9;~>
+Ja.gOJa0<$rW(%)quD<5Ja2Rd!s%WO!<26`!<26`!<26b!9sR^lMgkYl377Rl2UhL!<26h!9sRL
+!9sRL!<26a!:'I^!U9Z9l@J6=lMgj7~>
+J`_OGJ`a#qrW(%%quD<1J`c:\!s%KG!<2*\!<2*\!<2*^!9O:Zk5PGUjothJjo>DD!<2*d!9O:D
+!9O:D!<2*]!9X1Z!TjB5k(2[5k5PF3~>
+JaS*WJaTQ+rrC71qZ,aGrW)KV!!*#dquD<9U$`!_md:)SmJm7dmJm7dmK*CV!;u6d!:Bj^mKN[Z
+mJm7T!<2Bl!:BjT!:BjT!<2Bf!:BjbmJm6<mXafEmf*9;~>
+Ja.gOJa09#rrC7-qZ,aCrW)KR!!*#`quD<5U$;^[lKSBKl2Uh`l2Uh`l2gtN!;u*`!9sRZl377R
+l2UhL!<26h!9sRL!9sRL!<26b!9sR^l2Ug8l@J6=lMgj7~>
+J`_OGJ``uprrC7)qZ,a?rW)KN!!*#\quD<1U#lFWk2l[Cjo>D\jo>D\joPPF!;ts\!9O:VjothJ
+jo>DD!<2*d!9O:D!9O:D!<2*^!9O:Zjo>C4k(2[5k5PF3~>
+JaS*WJaTN*rrC@4quGdF!!*#d!!)WY!W_WgqsFFaJaT6"!s%cW!<2Bd!<2Bd!<2Bf!:BjdmKEUY
+!:K7Tq<e4_rpC6rmJu\C!!)EemJuYTmK!7S!W_WgrpBgfmJqh+JaUJErr@Q~>
+Ja.gOJa06"rrC@0quGdB!!*#`!!)WU!W_Kcqs".]Ja/ro!s%WO!<26`!<26`!<26b!9sR`l3.1Q
+!:&hLq<@q[rossnl2^,7!!)9al2^)Ll2^hK!W_KcrosObl2ZD#Ja12=rr@Q~>
+J`_OGJ``rorrC@,quGd>!!*#\!!)WQ!W_?_qrRkYJ``Zg!s%KG!<2*\!<2*\!<2*^!9O:\jokbI
+!9WDDq;qYWroO[jjoFQ+!!)-]joFNDjoGDC!W_?_roO7^joBtpJ`ao5rr@Q~>
+JaS*WJaTK)rrCL8qZ,UC!!*#d!!)f^!!*#d!!*#d!!)uc!!%T<U$hjZrpKacrpKacrpKacs6]je
+rpBadqX+=`rpC$lmd:&TmJuYTrpBdemem.bmf!4dmJm6<mXafEmf*9;~>
+Ja.gOJa03!rrCL4qZ,U?!!*#`!!)fZ!!*#`!!*#`!!)u_!!%T8U$DRVrp'I_rp'I_rp'I_s69Ra
+rosI`qW\%\rosahlKS?Ll2^)LrosLalMU_^lM^e`l2Ug8l@J6=lMgj7~>
+J`_OGJ``onrrCL0qZ,U;!!*#\!!)fV!!*#\!!*#\!!)u[!!%T4U#u:RroX1[roX1[roX1[s5j:]
+roO1\qW7bXroOIdk2lXDjoFNDroO4]k5>;Zk5GA\jo>C4k(2[5k5PF3~>
+JaS*WJaTK)rW(L:quGI=!W_ZVrW)ob!!*#d!!*#d!!)uc!!%T<JaS*WJaT6"rr@Q~>
+Ja.gOJa03!rW(L6quGI9!W_NNrW)o^!!*#`!!*#`!!)u_!!%T8Ja.gOJa/rorr@Q~>
+J`_OGJ``onrW(L2quGI5!W_BFrW)oZ!!*#\!!*#\!!)u[!!%T4J`_OGJ``Zgrr@Q~>
+JaS*WJaTH(rW(X>qZ,=;!s%cW!<2Be!:Kab!U]semJm7dmJm6<mXaeWmXaf!mf*9;~>
+Ja.gOJa0/urW(X:qZ,=7!s%WO!<26a!:'I^!U9[al2Uh`l2Ug8l@J5Ol@J5nlMgj7~>
+J`_OGJ``lmrW(X6qZ,=3!s%KG!<2*]!9X1Z!TjC]jo>D\jo>C4k(2ZGk(2Zfk5PF3~>
+JaS*WJaTE'rW(aAquG@:!!*#dquH`a!!*#d!!*#d!!*#d!!%T<JaS*WJaT3!rr@Q~>
+Ja.gOJa0,trW(a=quG@6!!*#`quH`]!!*#`!!*#`!!*#`!!%T8Ja.gOJa/onrr@Q~>
+J`_OGJ``ilrW(a9quG@2!!*#\quH`Y!!*#\!!*#\!!*#\!!%T4J`_OGJ``Wfrr@Q~>
+JaS*WJaTB&rW(mEqZ,48!!)uc!!)l`!!*#d!!*#d!s%cW!.jQhmXaeWm[rqI!.Y~>
+Ja.gOJa0)srW(mAqZ,44!!)u_!!)l\!!*#`!!*#`!s%WO!.jEdl@J5OlC[AA!.Y~>
+J`_OGJ``fkrW(m=qZ,40!!)u[!!)lX!!*#\!!*#\!s%KG!.j9`k(2ZGk+Cf9!.Y~>
+JaS*WJaT?%rW)!HquG77!!)rb!!*#d!!)i_!W_WgrpBadJaS*WJaS*WTC2^ZJ,~>
+Ja.gOJa0&rrW)!DquG73!!)r^!!*#`!!)i[!W_KcrosI`Ja.gOJa.gOTBcFVJ,~>
+J`_OGJ``cjrW)!@quG7/!!)rZ!!*#\!!)iW!W_?_roO1\J`_OGJ`_OGTB?.RJ,~>
+JaS*WJaT<$rW)-LqZ,(4quHcbrW)]\!!)uc!!%T<JaS*WJaT/urr@Q~>
+Ja.gOJa0#qrW)-HqZ,(0quHc^rW)]X!!)u_!!%T8Ja.gOJa/lmrr@Q~>
+J`_OGJ```irW)-DqZ,(,quHcZrW)]T!!)u[!!%T4J`_OGJ``Terr@Q~>
+JaS*WJaT9#rW)6OquD<9JaS*WJaS*We*d59J,~>
+Ja.gOJa/uprW)6KquD<5Ja.gOJa.gOe*?r5J,~>
+J`_OGJ``]hrW)6GquD<1J`_OGJ`_OGe)pZ1J,~>
+JaS*WJaT6"rrDHSqZ)38JaS*WJaS*WdI.#7J,~>
+Ja.gOJa/rorrDHOqZ)34Ja.gOJa.gOdH^`3J,~>
+J`_OGJ``ZgrrDHKqZ)30J`_OGJ`_OGdH:H/J,~>
+JaS*WJaT3!rrDQVquD<9JaS*WJaS*WcL1]4J,~>
+Ja.gOJa/onrrDQRquD<5Ja.gOJa.gOcKbE0J,~>
+J`_OGJ``WfrrDQNquD<1J`_OGJ`_OGcK>-,J,~>
+JaS*WJaT/urrD]ZqZ)38JaS*WJaS*WbjPK2J,~>
+Ja.gOJa/lmrrD]VqZ)34Ja.gOJa.gObj,3.J,~>
+J`_OGJ``TerrD]RqZ)30J`_OGJ`_OGbi\p*J,~>
+JaS*WJaT/urW)]\quD<9JaS*WJaS*WamT0/J,~>
+Ja.gOJa/lmrW)]XquD<5Ja.gOJa.gOam/m+J,~>
+J`_OGJ``TerW)]TquD<1J`_OGJ`_OGal`U'J,~>
+JaS*WJaT/ur;c`_qZ)38JaS*WJaS*Wa6rs-J,~>
+Ja.gOJa/lmr;c`[qZ)34Ja.gOJa.gOa6N[)J,~>
+J`_OGJ``Ter;c`WqZ)30J`_OGJ`_OGa6*C%J,~>
+JaS*WJaT,tr;cibquD<9JaS*WJaS*W`:!X*J,~>
+Ja.gOJa/ilr;ci^quD<5Ja.gOJa.gO`9R@&J,~>
+J`_OGJ``Qdr;ciZquD<1J`_OGJ`_OG`9.("J,~>
+JaS*WJaT&rq#H!6JaS*WJaS*W_X@F(J,~>
+Ja.gOJa/cjq#H!2Ja.gOJa.gO_Wq.$J,~>
+J`_OGJ``Kbq#H!.J`_OGJ`_OG_WLjuJ,~>
+JaS*WJaT#qr;_E:JaS*WJaS*W^[D+%J,~>
+Ja.gOJa/`ir;_E6Ja.gOJa.gO^Zth!J,~>
+J`_OGJ``Har;_E2J`_OGJ`_OG^ZPOrJ,~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaT]/!W_ZVquD<9JaS*WJaS*WYjVMkJ,~>
+Ja.gOJa0E'!W_NNquD<5Ja.gOJa.gOYj25gJ,~>
+J`_OGJ`a,t!W_BFquD<1J`_OGJ`_OGYibrcJ,~>
+JaS*WJaT]/!s%cW!.jQhmXaeWmXaf-mf*9;~>
+Ja.gOJa0E'!s%WO!.jEdl@J5Ol@J6%lMgj7~>
+J`_OGJ`a,t!s%KG!.j9`k(2ZGk(2Zrk5PF3~>
+JaS*WJaT`0rrE)e!!%T<JaS*WJaS*WXR?)gJ,~>
+Ja.gOJa0H(rrE)a!!%T8Ja.gOJa.gOXQofcJ,~>
+J`_OGJ`a/urrE)]!!%T4J`_OGJ`_OGXQKN_J,~>
+JaS*WJaTc1#QX8mmd:)C!!%T<JaS*WJaS*WYO;DjJ,~>
+Ja.gOJa0K)#QX,ilKSB7!!%T8Ja.gOJa.gOYNl,fJ,~>
+J`_OGJ`a3!#QWuek2l[+!!%T4J`_OGJ`_OGYNGibJ,~>
+JaS*WJaTc1#lsAnmd:&Tmd:(+mXaeWmXaeWm]c-Z!.Y~>
+Ja.gOJa0K)#ls5jlKS?LlKSA#l@J5Ol@J5OlEKRR!.Y~>
+J`_OGJ`a3!#ls)fk2lXDk2lYpk(2ZGk(2ZGk-4"J!.Y~>
+JaS*WJaTf2!s%cW!;l0a!.jQhmXaeWmXaf1mf*9;~>
+Ja.gOJa0N*!s%WO!;l$]!.jEdl@J5Ol@J6)lMgj7~>
+J`_OGJ`a6"!s%KG!;kmY!.j9`k(2ZGk(2[!k5PF3~>
+JaS*WJaTf2quHZ_!!%T<JaS*WJaS*WYjVMkJ,~>
+Ja.gOJa0N*quHZ[!!%T8Ja.gOJa.gOYj25gJ,~>
+J`_OGJ`a6"quHZW!!%T4J`_OGJ`_OGYibrcJ,~>
+JaS*WJaT]/!s%cW!<2Bd!:K7T!.jQhmXaeWmXafEmf*9;~>
+Ja.gOJa0E'!s%WO!<26`!:K+P!.jEdl@J5Ol@J6=lMgj7~>
+J`_OGJ`a,t!s%KG!<2*\!:JtL!.j9`k(2ZGk(2[5k5PF3~>
+JaS*WJaT]/!!*#drW)BS!W_WgJaS*WJaS*WJaUMFrr@Q~>
+Ja.gOJa0E'!!*#`rW)BO!W_KcJa.gOJa.gOJa15>rr@Q~>
+J`_OGJ`a,t!!*#\rW)BK!W_?_J`_OGJ`_OGJ`ar6rr@Q~>
+JaS*WJaSfk!!*#d!!%T<JaS*WJaS*W`pWj,J,~>
+Ja.gOJa/Nc!!*#`!!%T8Ja.gOJa.gO`p3R(J,~>
+J`_OGJ``6[!!*#\!!%T4J`_OGJ`_OG`od:$J,~>
+JaS*WJaSfk!!*#d!!%T<JaS*WJaS*W`pWj,J,~>
+Ja.gOJa/Nc!!*#`!!%T8Ja.gOJa.gO`p3R(J,~>
+J`_OGJ``6[!!*#\!!%T4J`_OGJ`_OG`od:$J,~>
+JaS*WJaSfk!!*#d!!%T<JaS*WJaS*W`pWj,J,~>
+Ja.gOJa/Nc!!*#`!!%T8Ja.gOJa.gO`p3R(J,~>
+J`_OGJ``6[!!*#\!!%T4J`_OGJ`_OG`od:$J,~>
+JaS*WJaSfk!!*#d!!%T<JaS*WJaS*W`pWj,J,~>
+Ja.gOJa/Nc!!*#`!!%T8Ja.gOJa.gO`p3R(J,~>
+J`_OGJ``6[!!*#\!!%T4J`_OGJ`_OG`od:$J,~>
+JaS*WJaSfk!!*#d!!%T<JaS*WJaS*W`pWj,J,~>
+Ja.gOJa/Nc!!*#`!!%T8Ja.gOJa.gO`p3R(J,~>
+J`_OGJ``6[!!*#\!!%T4J`_OGJ`_OG`od:$J,~>
+JaS*WJaScj!W_WgJaS*WJaS*WJaUMFrr@Q~>
+Ja.gOJa/Kb!W_KcJa.gOJa.gOJa15>rr@Q~>
+J`_OGJ``3Z!W_?_J`_OGJ`_OGJ`ar6rr@Q~>
+JaS*WJaS`i!!%T<JaS*WJaS*W`:!X*J,~>
+Ja.gOJa/Ha!!%T8Ja.gOJa.gO`9R@&J,~>
+J`_OGJ``0Y!!%T4J`_OGJ`_OG`9.("J,~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+JaS*WJaS*WJaS*WJaS*WJaV(Vrr@Q~>
+Ja.gOJa.gOJa.gOJa.gOJa1eNrr@Q~>
+J`_OGJ`_OGJ`_OGJ`_OGJ`bMFrr@Q~>
+f'`G9!:Kabq!J+^r9aObr9aObr9aObm-acOs6fjdp[/"]r9aObr9aObr9aObg$\k?jR*!Jp?hn\
+r9aObr9aObr9aObr9aOblL"WPp?hn\r9aObr9aObr9aObr9aObJaS*WJaS*WJaS*WMsgTFJ,~>
+f'</5!:'I^q!%hZr9=7^r9=7^r9=7^m-=KKs6BR`pZ__Yr9=7^r9=7^r9=7^g$8S;jQZ^Fp?DVX
+r9=7^r9=7^r9=7^r9=7^lKS?Lp?DVXr9=7^r9=7^r9=7^r9=7^Ja.gOJa.gOJa.gOMsC<BJ,~>
+f&ll1!9X1ZpuVPVr8mtZr8mtZr8mtZm,n3Gs5s:\pZ;GUr8mtZr8mtZr8mtZg#i;7jQ6FBp>u>T
+r8mtZr8mtZr8mtZr8mtZlK/'Hp>u>Tr8mtZr8mtZr8mtZr8mtZJ`_OGJ`_OGJ`_OGMrt$>J,~>
+q!J+^i9gRFr9aObp$Mk]mK!7S!W_WgrpBgfmK!7S!W_WgmHsrSr9aObrpBadq<e:amK!7S!W_Wg
+rpBgfmK!7S!W_Wgg$Sh?jmN-Kp[/(_mK!7S!W_WgrpBgfmK!7S!W_WgrpBgfmJuVArrDf]!W_Wg
+rpBgfmK!7S!W_WgrpBgfmK!7S!W_WgJaS*WJaS*WJaS*WN:-]GJ,~>
+q!%hZi9C:Br9=7^p$)SYl2^hK!W_KcrosObl2^hK!W_KcmHOZOr9=7^rosI`q<A"]l2^hK!W_Kc
+rosObl2^hK!W_Kcg$/P;jm)jGpZ_e[l2^hK!W_KcrosObl2^hK!W_KcrosObl2^29rrDfY!W_Kc
+rosObl2^hK!W_KcrosObl2^hK!W_KcJa.gOJa.gOJa.gON9^ECJ,~>
+puVPVi8t">r8mtZp#Z;UjoGDC!W_?_roO7^joGDC!W_?_mH+BKr8mtZroO1\q;q_YjoGDC!W_?_
+roO7^joGDC!W_?_g#`87jlZRCpZ;MWjoGDC!W_?_roO7^joGDC!W_?_roO7^joFc1rrDfU!W_?_
+roO7^joGDC!W_?_roO7^joGDC!W_?_J`_OGJ`_OGJ`_OGN9:-?J,~>
+k3`3Lo'QJXr9aObp?hn\rpBgfmK!7S!W_WgrpBgfmK!7S!!)HT!!)rb!!*#d!!)l`!!*#d!W_Wg
+rpBgfmK!7S!W_WgrpBadg?nq@p?hn\o'QPZmK!%M!!*#d!W_WgrpBgfmK!7S!W_WgrpBgfmK!7S
+!!)HT!W_Wgq!J+^rpBgfmK!7S!W_WgrpBgfmK!7S!W_WgrpBadJaS*WJaS*WJaS*WNUHfHJ,~>
+k3;pHo'-2Tr9=7^p?DVXrosObl2^hK!W_KcrosObl2^hK!!)HP!!)r^!!*#`!!)l\!!*#`!W_Kc
+rosObl2^hK!W_KcrosI`g?JY<p?DVXo'-8Vl2^VE!!*#`!W_KcrosObl2^hK!W_KcrosObl2^hK
+!!)HP!W_Kcq!%hZrosObl2^hK!W_KcrosObl2^hK!W_KcrosI`Ja.gOJa.gOJa.gONU$NDJ,~>
+k2lXDo&]oPr8mtZp>u>TroO7^joGDC!W_?_roO7^joGDC!!)HL!!)rZ!!*#\!!)lX!!*#\!W_?_
+roO7^joGDC!W_?_roO1\g?&A8p>u>To&]uRjoG2=!!*#\!W_?_roO7^joGDC!W_?_roO7^joGDC
+!!)HL!W_?_puVPVroO7^joGDC!W_?_roO7^joGDC!W_?_roO1\J`_OGJ`_OGJ`_OGNTU6@J,~>
+!U]semK<OXmJm7cmf!4dmJm7dmK*CVmf!4XmKim]!!)HT!:Bgeq<e4_rpBgfmK!7S!W_WgrpBgf
+mK!7S!!)HT"p"&k!:K7TrpBadqX+=`rpBgfmK!7S!W_WgrpBgfmK!7S!!)ESrW)rcrW)rcrW)ob
+!!)ucrW)rcrW)KV!!)f^!!*#d!W_WgrpBgfmK!7S!W_WgrpBgfmK!7S!!)BR!!)f^!!*#d!W_Wg
+rpBgfmK!7S!W_WgrpBgfmK!7S!!%T<JaS*WJaS*WJaSNcrr@Q~>
+!U9[al3%+Pl2Uh_lM^e`l2Uh`l2gtNlM^eTl3RIU!!)<L!9sOaq<@q[rosObl2^hK!W_KcrosOb
+l2^hK!!)HP"p!og!:&hLrosI`qW\%\rosObl2^hK!W_KcrosObl2^hK!!)EOrW)r_rW)r_rW)o^
+!!)u_rW)r_rW)KR!!)fZ!!*#`!W_KcrosObl2^hK!W_KcrosObl2^hK!!)BN!!)fZ!!*#`!W_Kc
+rosObl2^hK!W_KcrosObl2^hK!!%T8Ja.gOJa.gOJa/6[rr@Q~>
+!TjC]job\Hjo>D[k5GA\jo>D\joPPFk5GAPjp;%M!!)0D!9O7]q;qYWroO7^joGDC!W_?_roO7^
+joGDC!!)HL"p!cc!9WDDroO1\qW7bXroO7^joGDC!W_?_roO7^joGDC!!)EKrW)r[rW)r[rW)oZ
+!!)u[rW)r[rW)KN!!)fV!!*#\!W_?_roO7^joGDC!W_?_roO7^joGDC!!)BJ!!)fV!!*#\!W_?_
+roO7^joGDC!W_?_roO7^joGDC!!%T4J`_OGJ`_OGJ`_sSrr@Q~>
+!UTmdli7%bli7%bli7%bliI1R!<2<b!<2<b!:oLV!<;Bi!:0[cm-F`Kli7%bliI1R!<2<d!:0^b
+liI1R!<2<b!:K4R!<;Be!:9(N!;c$^!<2<d!:0^bliI1R!<2<d!:0^bli7%Rli7%bliI1R!<2<b
+!;u0`!<2<b!<2<b!<2<b!<2<b!:]=T!;Pm\!<2<d!:0^bliI1R!<2<d!:0^bliI1R!<2<b!:9%P
+!;Pm\!<2<d!:0^bliI1R!<2<d!:0^bliI1R!<2<b!.jKfm"+MSm"+MSm#UK8mHafQJ,~>
+!U0U`kPtV^kPtV^kPtV^kQ1bJ!<20^!<20^!:o@R!<;6e!9aC_ki`$CkPtV^kQ1bJ!<20`!9aF^
+kQ1bJ!<20^!:K(N!<;6a!9iYF!;bmZ!<20`!9aF^kQ1bJ!<20`!9aF^kPtVNkPtV^kQ1bJ!<20^
+!;u$\!<20^!<20^!<20^!<20^!:]1P!;PaX!<20`!9aF^kQ1bJ!<20`!9aF^kQ1bJ!<20^!:8nL
+!;PaX!<20`!9aF^kQ1bJ!<20`!9aF^kQ1bJ!<20^!.j?bk^hrKk^hrKk`=p0l0&*IJ,~>
+!Ta=\j8]2Zj8]2Zj8]2Zj8o>B!<2$Z!<2$Z!:o4N!<;*a!9=+[jQ$=;j8]2Zj8o>B!<2$\!9=.Z
+j8o>B!<2$Z!:JqJ!<;*]!9E5>!;baV!<2$\!9=.Zj8o>B!<2$\!9=.Zj8]2Jj8]2Zj8o>B!<2$Z
+!;tmX!<2$Z!<2$Z!<2$Z!<2$Z!:]%L!;PUT!<2$\!9=.Zj8o>B!<2$\!9=.Zj8o>B!<2$Z!:8bH
+!;PUT!<2$\!9=.Zj8o>B!<2$\!9=.Zj8o>B!<2$Z!.j3^jFQBCjFQBCjH&@(jl?CAJ,~>
+!UBabl2Uh`kl:__l21MbklBrJklC#5!!)r]!!)l[!!*#_!W_HbrojIaklC_I!W_HbrojC_lKJ9K
+r941]qWRt[rojIaklC_I!W_HbrojIaklC_I!!)ENrrE&_!!)o\r;ci]!!*#_quH*J!!)fY!!*#_
+!W_HbrojIaklC_I!W_HbrojIaklC_I!!)BM!!)fY!!*#_!W_HbrojIaklC_I!W_HbrojIaklC_I
+!!%T7Ja%aMJa%aMJa&B_rp'OJ!pTacJ,~>
+!TsI^jo>D\jT#;[jno)^jT+BBjT+T-!!)rY!!)lW!!*#[!W_<^roF1]jT,;A!W_<^roF+[lK&!G
+r8dnYqW.\WroF1]jT,;A!W_<^roF1]jT,;A!!)EJrrE&[!!)oXr;ciY!!*#[quH*F!!)fU!!*#[
+!W_<^roF1]jT,;A!W_<^roF1]jT,;A!!)BI!!)fU!!*#[!W_<^roF1]jT,;A!W_<^roF1]jT,;A
+!!%T3J`VIEJ`VIEJ`W*WroX7B!p0I_J,~>
+!TO1ZiW&uXi;`lWiVWZZi;hg:i;i0%!!)rU!!)lS!!*#W!W_0Zro!nYi;il9!W_0Zro!hWlJV^C
+r8@VUqV_DSro!nYi;il9!W_0Zro!nYi;il9!!)EFrrE&W!!)oTr;ciU!!*#WquH*B!!)fQ!!*#W
+!W_0Zro!nYi;il9!W_0Zro!nYi;il9!!)BE!!)fQ!!*#W!W_0Zro!nYi;il9!W_0Zro!nYi;il9
+!!%T/J`21=J`21=J`2gOro3t:!oa1[J,~>
+"R,"Kk5bJD!!*#]!!)r["9@Tbk5af1!!)r[!!)lY!!*#]!W_B`roX=_k5bME!W_B`roX7]lK8-I
+r9"%[qW@hYroX=_k5bME!W_B`roX=_k5bME!!)?J!s%NI!;u![!<2-]!<2-]!<2-]!9iSG!;P^W
+!<2-_!9X@]k5kYH!<2-_!9X@]k5kYH!<2-]!:8kK!;P^W!<2-_!9X@]k5kYH!<2-_!9X@]k5kYH
+!<2-]!.j<akCMfIkCMfIkE>$+k5PF3~>
+s5X4]j8f/=!!*#Y!!)rW"9@H^irJB)!!)rW!!)lU!!*#Y!W_6\ro4%[irK)=!W_6\ro3tYlJhjE
+r8RbWqVqPUro4%[irK)=!W_6\ro4%[irK)=!!)?F!s%BA!;tjW!<2!Y!<2!Y!<2!Y!9iGC!;PRS
+!<2![!94(YirT5@!<2![!94(YirT5@!<2!Y!:8_G!;PRS!<2![!94(YirT5@!<2![!94(YirT5@
+!<2!Y!.j0]j+66Aj+66Aj-&F,ioB(YirB(0~>
+"QA8=huN`5!!*#U!!)rS"9@<ZhZ2s!!!)rS!!)lQ!!*#U!W_*XrndbWhZ3Z5!W_*Xrnd\UlJDRA
+r8.JSqVM8QrndbWhZ3Z5!W_*XrndbWhZ3Z5!!)?B!s%69!;t^S!<1jU!<1jU!<1jU!9i;?!;PFO
+!<1jW!8deUhZ<f8!<1jW!8deUhZ<f8!<1jU!:8SC!;PFO!<1jW!8deUhZ<f8!<1jW!8deUhZ<f8
+!<1jU!.j$Yhgs[9hgs[9hick$hV[5IhZ*Y,~>
+s5a:^irK&;!!*#X!!*#X"p!W_iW.s<ro*nXo&9WLro*tZiW/u;!!*#X!!)uW!W_3[ro*tZiW/u;
+!W_3[ro*tZiW/r:rrDZM!!*#X!W_3[ro*nXro*nXrSdkYiW/u;!W_3[ro*tZiW/u;!W_3[mG\*G
+ro*tZiW/u;"p!W_io0q<ro*nXro*nXro*nXro*nXnDXEJr8I\VrSdkYiW/u;!W_3[ro*tZiW/u;
+!W_3[ro*tZiW/r:rrDTK!!)rV!!)uW!W_3[ro*tZiW/u;!W_3[ro*tZiW/u;!W_3[J`;7?J`;7?
+J`;7?Ol?B"ro+"<!!%N~>
+s5="ZhZ3W3!!*#T!!*#T"p!K[h>lC4rn[VTo%j?Hrn[\Vh>mQ3!!*#T!!)uS!W_'Wrn[\Vh>mQ3
+!W_'Wrn[\Vh>mN2rrDZI!!*#T!W_'Wrn[VTrn[VTrS@SUh>mQ3!W_'Wrn[\Vh>mQ3!W_'WmG7gC
+rn[\Vh>mQ3"p!K[hVJ54rn[VTrn[VTrn[VTrn[VTnD4-Fr8%DRrS@SUh>mQ3!W_'Wrn[\Vh>mQ3
+!W_'Wrn[\Vh>mN2rrDTG!!)rR!!)uS!W_'Wrn[\Vh>mQ3!W_'Wrn[\Vh>mQ3!W_'WJ_kt7J_kt7
+J_kt7Okp)orn[_4!!%N~>
+s4m_VgAq3+!!*#P!!*#P"p!?Wg&Th,rn7>Po%F'Drn7DRg&V-+!!*#P!!)uO!W^pSrn7DRg&V-+
+!W^pSrn7DRg&V**rrDZE!!*#P!W^pSrn7>Prn7>PrRq;Qg&V-+!W^pSrn7DRg&V-+!W^pSmFhO?
+rn7DRg&V-+"p!?Wg=cN,rn7>Prn7>Prn7>Prn7>PnCdjBr7V,NrRq;Qg&V-+!W^pSrn7DRg&V-+
+!W^pSrn7DRg&V**rrDTC!!)rN!!)uO!W^pSrn7DRg&V-+!W^pSrn7DRg&V-+!W^pSJ_G\/J_G\/
+J_G\/OkKfgrn7G,!!%N~>
+#N=Ut!8QAag\q3Pg\q3PgB%B0!<1aP!:nnD!<1aP!<1aP!<(XP!;tRO!;tRO!;tRO!;tRO!:ehC
+!<1aP!<1aP!<(XP!;tRO!;tRO!;tRO!:/D=!<1aP!<1aQ!!CsUgY;]-rnIDPrnIDPo@s0Cs4dMQ
+rS%;Pr7_2Or7_2Or7_2Or7_2Or7_2Oo%X'Bs4dMQrS%;Pr7_2Or7_2Or7_2Or7_2OJ_Pb1J_Pb1
+J_Pb1NS=QjgAh5(~>
+#Mn1h!86&Xf_tmMf_tmMfE)'*!<1XM!:neA!<1XM!<1XM!<(OM!;tIL!;tIL!;tIL!;tIL!:e_@
+!<1XM!<1XM!<(OM!;tIL!;tIL!;tIL!:/;:!<1XM!<1XN!!CjRf\$0'rn.2Mrn.2Mo@Ws@s4I;N
+rR_)Mr7CuLr7CuLr7CuLr7CuLr7CuLo%<j?s4I;NrR_)Mr7CuLr7CuLr7CuLr7CuLJ_5P+J_5P+
+J_5P+N7\3`!!%N~>
+#MIb]!7fWLeG]IIeG]IIe,fX"!<1LI!:nY=!<1LI!<1LI!<(CI!;t=H!;t=H!;t=H!;t=H!:eS<
+!<1LI!<1LI!<(CI!;t=H!;t=H!;t=H!://6!<1LI!<1LJ!!C^NeC=Htrm^oIrm^oIo@3[<s4%#J
+rR:fIr6t]Hr6t]Hr6t]Hr6t]Hr6t]Ho$mR;s4%#JrR:fIr6t]Hr6t]Hr6t]Hr6t]HJ^f8#J^f8#
+J^f8#NR\!Yrr@Q~>
+"P_V_f@K9<!!)*1!!)-2!!)'0!!'CV!!)<7!!(p,!!)96!!%T#J^o>%J^o>%J^o>%o@<ii"P)#P
+!!%N~>
+"PD;Ue'dR0!!)*-!!)-.!!)',!!'CR!!)<3!!(p(!!)92!!%StJ^K%rJ^K%rJ^K%ro?mQa"OYTD
+!!%N~>
+"OtlIcd1q&!!)**!!)-+!!)')!!'CO!!)<0!!(p%!!)9/!!%SqJ^/hlJ^/hlJ^/hlo?R?[rm(ND
+J,~>
+JH16$JH16$JH16$JH16$JH4.!J,~>
+JH16$JH16$JH16$JH16$JH4.!J,~>
+JH16$JH16$JH16$JH16$JH4.!J,~>
+JH16$JH16$JH16$JH16$JH4.!J,~>
+JH16$JH16$JH16$JH16$JH4.!J,~>
+JH16$JH16$JH16$JH16$JH4.!J,~>
+"dP73NJraGM1LM7M1LM7M1LM7M1LM7M;O0gM?/WoJ,~>
+"cA+iK7\Z*J:W6%J:W6%J:W6%J:W6%JDu(ZJ,OotJcC=P~>
+"b;#JH$FOaG(FgfG(FgfG(FgfG(FgfG2dZFFoHR_G5ul<~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/btt/doc/btt.tex b/btt/doc/btt.tex
new file mode 100644
index 0000000..2907554
--- /dev/null
+++ b/btt/doc/btt.tex
@@ -0,0 +1,1176 @@
+\documentclass{article}
+\usepackage{epsfig,placeins}
+
+%
+% Copyright (C) 2007 Alan D. Brunelle <Alan.Brunelle@hp.com>
+%
+%  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
+%
+%  vi :set textwidth=75
+
+\title{\texttt{btt} User Guide}
+\author{Alan D. Brunelle (Alan.Brunelle@hp.com)}
+\date{30 October 2008}
+
+\begin{document}
+\maketitle
+%--------------
+\section{\label{sec:intro}Introduction}
+
+\texttt{btt} is a post-processing tool for the block layer IO tracing
+tool called blktrace. As noted in its Users Guide, blktrace
+
+  \begin{quotation}
+    is a block layer IO tracing mechanism which provides detailed
+    information about request queue operations up to user space.
+  \end{quotation}
+
+blktrace is capable of producing tremendous amounts of output in the
+form of multiple individual traces per IO executed during the traced
+run. It is also capable of producing some general statistics concerning
+IO rates and the like. \texttt{btt} goes further and produces a variety
+of overall statistics about each of the individual handling of IOs, and
+provides data we believe is useful to plot to provide visual comparisons
+for evaluation.
+
+This document will discuss \texttt{btt} usage, provide some sample output,
+and also show some interesting plots generated from the data provided
+by the \texttt{btt} utility.
+
+\bigskip
+A short note on the ordering of this document -- the actual
+command-line usage section occurs relatively late in the document (see
+section~\ref{sec:cmd-line}), as we felt that discussing some of the
+capabilities and output formats would make the parameter discussion
+easier.
+
+\bigskip
+  This document refers to the output formats generated by \texttt{btt}
+  version 2.00.  However, the descriptions are general enough to cover
+  output formats prior to that.
+
+\newpage\tableofcontents
+
+\newpage\section{\label{sec:getting-started}Getting Started}
+
+  The simple pipeline to get going with \texttt{btt} is to perform the
+  following steps:
+
+  \begin{enumerate}
+    \item Run \texttt{blktrace}, specifying whatever devices and other
+    parameters you want. You must save the traces to disk in this step,
+    btt does not work in live mode.
+
+    \item After tracing completes, run \texttt{blkrawverify}, specifying
+    all devices that were traced (or at least on all devices that you
+    will use \texttt{btt} with -- section~\ref{sec:o-D} shows how you
+    can dictate which devices to use with btt). If blkrawverify finds
+    errors in the trace streams saved, it is best to recapture the data
+    -- utilizing \texttt{btt} on \emph{unclean} trace files produces
+    inconsistent results.
+
+    While this step is optional, we have found that performing this
+    helps to ensure data coming from \texttt{btt} makes the most sense.
+
+    \item Run \texttt{blkparse} with the \texttt{-d} option specifying
+    a file to store the combined binary stream. (e.g.: \texttt{blkparse
+    -d bp.bin ...}).
+
+    \texttt{blktrace} produces a series of binary files
+    containing parallel trace streams -- one file per CPU per
+    device. \texttt{blkparse} provides the ability to combine all the
+    files into one time-ordered stream of traces for all devices.
+
+    \item Run \texttt{btt} specifying the file produced by
+    \texttt{blkparse} utilizing the \texttt{-i} option (e.g.: \texttt{btt
+    -i bp.bin ...}).
+
+  \end{enumerate}
+
+\newpage\section{\label{sec:output-overview}Output Overview}
+
+  The major default areas of output provided by \texttt{btt}
+  include\label{tl-defs}:
+
+\begin{description}
+  \item[average component times across all IOs] The time line of each IO
+  is broken down into 3 major regions:
+
+    \begin{enumerate}
+      \item Time needed to insert or merge an incoming IO onto the request
+      queue. This is the average time from when the IO enters the block
+      IO layer (queue trace) until it is inserted (insert trace).
+
+      This is denoted as \emph{Q2I} time.
+
+      This is also broken down into two component times\footnote{On
+      occasion there are also some time spent \emph{sleeping} waiting
+      for a request. That occurs between the Q and G operations. You
+      will see these listed as \texttt{S2G} times.}:
+
+        \begin{description}
+	  \item[Q2G] Time needed to \emph{get} a request (get request
+	  trace).
+
+	  \item[G2I] Time needed to put that request onto the request
+	  queue (insert trace).
+        \end{description}
+
+      For \emph{merged} requests -- an incoming request that is merged
+      with a previously submitted request -- we calculate \emph{Q2M}, the
+      amount of time between the queue trace and the merge trace.
+
+      \item Time spent on the request queue. The average time from when
+      the IO is inserted or merged onto the request queue, until it is
+      issued (issue trace) to the lower level driver.
+
+      Referred to as \emph{I2D} time\footnote{The \emph{issue} trace
+      is represented by a D in the blkparse output, hence its usage in
+      btt to refer to issue traces. Note that an I is used to refer to
+      \emph{insert} traces.}.
+
+      \item Driver and device time -- the average time from when the
+      actual IO was issued to the driver until is completed (completion
+      trace) back to the block IO layer.
+
+      This is referred to as the \emph{D2C} time\
+    \end{enumerate}
+
+  Two other sets of results are presented in this section:
+
+    \begin{enumerate}
+      \item \emph{Q2Q} which measures the time between queue traces
+      in the system. This provides some idea as to how quickly IOs are
+      being handed to the block IO layer.
+
+      \item \emph{Q2C} which measures the times for the complete life cycle
+      of IOs during the run\footnote{One of the areas that needs some
+      work in \texttt{btt} is to better understand the multiplex nature of
+      IOs during a run. In theory, one would like ${Q2I} + {I2D} + {D2C}
+      = {Q2C}$ however, typically there are multiple queue traces that
+      are combined via merges into a single IO issued and completed. We
+      currently average the queue-to-insert and queue-to-merge times,
+      and thus tend to be quite close to the expected equation.}
+
+    \end{enumerate}
+
+  For each row in this output, we provide a minimum, average, maximum
+  (which are all presented in seconds), and overall count. As an
+  example\footnote{As with this display, the author has taken some liberty
+  in reformatting the output for better display on the printed page.}:
+
+\begin{verbatim}
+ALL            MIN           AVG           MAX           N
+---- ------------- ------------- ------------- -----------
+Q2Q    0.000000058   0.000012761   9.547941661     2262310
+Q2I    0.000000272   0.000005995   0.104588839     2262311
+I2D    0.000001446   0.094992714   0.239636864     2262311
+D2C    0.000193721   0.030406554   1.634221408     2262311
+Q2C    0.000207665   0.125405263   1.830917198     2262311
+\end{verbatim}
+
+  When tracking \emph{device mapper} devices, we also break down the
+  \emph{Q2A} and \emph{Q2C} times for those IOs.
+
+  \item[Device Overhead]
+
+  Using the data from the previous chart, we can then provide some idea
+  as to where IO spend most of the time on average. The following output
+  shows the percentage of time spent in each of the phases of an
+IO\footnote{It should be noted that incoming requests either go through:
+
+\begin{enumerate}
+  \item Q2G + Q2I
+
+  or
+
+  \item Q2M
+\end{enumerate}
+  before proceeding to I2D and D2C.}
+
+\begin{verbatim}
+       DEV |       Q2G       G2I       Q2M       I2D       D2C
+---------- | --------- --------- --------- --------- ---------
+ (  8, 80) |   0.0013%   0.0004%   0.0006%  88.5005%  11.4988%
+---------- | --------- --------- --------- --------- ---------
+   Overall |   0.0003%   0.0001%   0.0041%  21.4998%  78.4958%
+\end{verbatim}
+
+  \item[Device Merge Information]
+
+  A key measurement when making changes in the system (software \emph{or}
+  hardware) is to understand the block IO layer ends up merging incoming
+  requests into fewer, but larger, IOs to the underlying driver. In this
+  section, we show the number of incoming requests (Q), the number of
+  issued requests (D) and the resultant ratio. We also provide values
+  for the minimum, average and maximum IOs generated.
+
+  Looking at the following example:
+
+\begin{verbatim}
+       DEV |      #Q    #D Ratio | BLKmin BLKavg BLKmax   Total
+---------- | ------- ----- ----- | ------ ------ ------ -------
+ ( 68, 64) | 2262311 18178 124.5 |      2    124    128 2262382
+\end{verbatim}
+
+  we see that (on average) the block IO layer is combining upwards of
+  125 incoming requests into a single request down the IO stack. The
+  resultant average IO size is 124 blocks.
+
+  \item[Device Seek Information]
+
+  Another useful measure is the variability in the sector distances
+  between consecutively \emph{received -- queued} and \emph{submitted
+  -- issued} IOs. The next two sections provides some rudimentary
+  statistics to gauge the general nature of the sector differences
+  between IOs. Values provided include the number of seeks (number of IOs
+  submitted to lower level drivers), the \emph{mean} distance between
+  IOs, the \emph{median} value for all seeks, and the \emph{mode} -
+  the value(s) and the counts are provided for the latter.
+
+  The first of the two sections displays values for Q2Q seek distances --
+  providing a set of indicators showing how close incoming IO requests
+  are to each other. The second section shows D2D seek distances --
+  providing a set of indicators showing how close the IO requests are
+  that are handled by underlying drivers.
+
+\begin{verbatim}
+      DEV | NSEEKS    MEAN MEDIAN | MODE
+--------- | ------ ------- ------ | -------
+( 68, 64) |  18178 19611.3      0 | 0(17522)
+\end{verbatim}
+
+  We have almost exclusively seen median and mode values of 0, indicating
+  that seeks tend to have an equal amount of forward and backwards
+  seeks. The larger the count for the mode in comparison to the total
+  number of seeks is indicative as to how many IOs are coming out of
+  the block IO layer in adjacent sectors. (Obviously, the higher this
+  percentage, the better the underlying subsystems can handle them.)
+
+  \item[Request Queue Plug Information]
+
+  During normal operation, requests queues are \emph{plugged} and during
+  such times the IO request queue elements are not able to be processed
+  by underlying drivers. The next section shows how often the request
+  queue was in such a state.
+
+\begin{verbatim}
+      DEV | # Plugs # Timer Us  | % Time Q Plugged
+--------- | ------- ----------  | ----------------
+( 68, 64) |     833(         0) |   0.356511895%
+\end{verbatim}
+
+  There are two major reasons why request queues are unplugged, and both
+  are represented in the above table.
+
+  \begin{enumerate}
+    \item Explicit unplug request from some subsystem in the kernel.
+
+    \item Timed unplugs, due to a request queue exceeding some temporal
+    limit for being plugged.
+  \end{enumerate}
+
+  The total number of unplugs is equal to the number of plugs less the
+  ones due to timer unplugs.
+
+  \item[IOs per Unplug \& Unplugs-due-to-timeout]
+
+  In this subsection one can see the average number of IOs on the request
+  queue at the time of an unplug or unplug due to a timeout. The following
+  sample shows a sample of both unplug sections:
+
+\begin{verbatim}
+==================== Plug Information ====================
+
+       DEV |    # Plugs # Timer Us  | % Time Q Plugged
+---------- | ---------- ----------  | ----------------
+ (  8,  0) |       1171(       123) |   0.280946640%
+ (  8, 32) |          4(         0) |   0.000325469%
+---------- | ---------- ----------  | ----------------
+   Overall |    # Plugs # Timer Us  | % Time Q Plugged
+   Average |        587(        61) |   0.140636055%
+
+       DEV |    IOs/Unp   IOs/Unp(to)
+---------- | ----------   ----------
+ (  8,  0) |        9.2          8.8
+ (  8, 32) |        2.5          0.0
+---------- | ----------   ----------
+       DEV |    IOs/Unp   IOs/Unp(to)
+   Overall |        9.2          8.8
+\end{verbatim}
+
+  This table and the preceding one have to be considered together --
+  in the sample output in the immediately preceding table one can see
+  how the larger number of data values for device (8,0) dominates in
+  the overall average.
+
+  \item[Active Requests At Q Information]
+
+  An important consideration when analyzing block IO schedulers is to
+  know how many requests the scheduler has to work with. The metric
+  provided in this section details how many requests (on average) were
+  being held by the IO scheduler when an incoming IO request was being
+  handled. To determine this, \texttt{btt} keeps track of how many Q
+  requests came in, and subtracts requests that have been issued (D).
+
+  Here is a sample output of this sections:
+
+\begin{verbatim}
+==================== Active Requests At Q Information ====================
+
+       DEV |  Avg Reqs @ Q
+---------- | -------------
+ ( 65, 80) |          12.0
+ ( 65,240) |          16.9
+...
+ ( 66,112) |          44.2
+---------- | -------------
+   Overall | Avgs Reqs @ Q
+   Average |          17.4
+\end{verbatim}
+
+\end{description}
+
+\newpage
+\subsection*{\label{sec:detailed-data}Detailed Data}
+
+  In addition to the default sections output, if one supplies the
+  \texttt{--all-data} or \texttt{-A} argument (see section~\ref{sec:o-A})
+  to \texttt{btt} further sections are output:
+
+\begin{description}
+  \item[Per Process] As traces are emitted, they are tagged with the
+  process ID of the currently running thread in the kernel. The process
+  names are also preserved, and mapped to the ID. For each of the parts
+  of the time line discussed above on page~\pageref{tl-defs}, a chart is
+  provided which breaks down the traces according to process ID (name).
+
+  One must be aware, however, that the process ID may not have anything
+  to do with the originating IO. For example, if an application is
+  doing buffered IO, then the actual submitted IOs will most likely
+  come from some page buffer management daemon thread (like pdflush,
+  or kjournald for example). Similarly, completion traces are rarely
+  (if ever?) going to be associated with the process which submitted
+  the IO in the first place.
+
+  Here is a sample portion of this type of chart, showing Q2Q times
+  per process:
+
+\begin{verbatim}
+          Q2Q         MIN         AVG         MAX       N
+------------- ----------- ----------- ----------- -------
+mkfs.ext3     0.000000778 0.000009074 1.797176188 1899371
+mount         0.000000885 0.000672513 0.030638128      73
+pdflush       0.000000790 0.000006752 0.247231307  179791
+\end{verbatim}
+
+  \item[Per Process Averages] The average columns from the above charts,
+  are also presented in their own chart.
+
+  \item[Per Device] Similar to the per-process display, \texttt{btt}
+  will also break down the various parts of an IOs time line based upon a
+  per-device criteria. Here's a portion of this area, displayed showing
+  the issued to complete times (D2C).
+
+\begin{verbatim}
+      D2C         MIN         AVG         MAX      N
+--------- ----------- ----------- ----------- ------
+( 65, 80) 0.000140488 0.001076906 0.149739869 169112
+( 65, 96) 0.000142762 0.001215221 0.173263182 155488
+( 65,112) 0.000145221 0.001254966 0.124929936 165726
+( 65,128) 0.000141896 0.001159596 0.775231052 169015
+( 65,144) 0.000140832 0.001290985 0.211384698 210661
+( 65,160) 0.000139915 0.001175554 0.073512063 133973
+( 65,176) 0.000141254 0.001104870 0.073231310 145764
+( 65,192) 0.000141453 0.001234460 0.167622507 140618
+...
+\end{verbatim}
+
+  \item[Per Device Averages] The average columns from the above charts,
+  are also presented in their own chart.
+
+  \item[Q2D Histogram] A display of histogram buckets for the Q to D times
+  -- basically, from where an IO enters the block IO layer for a given
+  device, and when it is dispatched. The buckets are arranged via the
+  time in seconds, as in:
+
+\begin{verbatim}
+==================== Q2D Histogram ====================
+
+       DEV | <.005 <.010 <.025 <.050 <.075 <.100 <.250 <.500 < 1.0 >=1.0
+ --------- | ===== ===== ===== ===== ===== ===== ===== ===== ===== =====
+ ( 66, 80) |  61.2   7.9  12.1   7.9   3.0   1.4   1.5   0.2   0.0   4.6
+ ( 65,192) |  42.3   5.0   8.7  30.0   8.9   3.0   1.8   0.1   0.0   0.1
+ ( 65,128) |  34.3   5.3   8.9  32.0   9.7   3.7   5.3   0.6   0.0   0.1
+...
+ ( 65, 64) |  59.9   4.2   6.0  24.6   4.2   0.8   0.1   0.0   0.0   0.1
+ ( 66, 64) |  62.6   8.1  12.7   7.9   2.4   0.6   0.1   0.0   0.0   5.4
+========== | ===== ===== ===== ===== ===== ===== ===== ===== ===== =====
+       AVG |  52.9   6.2  10.0  20.1   5.3   1.7   1.4   0.2   0.0   2.1
+\end{verbatim}
+
+\end{description}
+
+\newpage\section{\label{sec:data-files}Data Files Output}
+
+  Besides the averages output by default, the following 3 files are also
+  created with data points which may be plotted.
+
+\begin{description}
+  \item[\emph{file}.dat] This file provides a notion of \emph{activity}
+  for the system, devices and processes. The details of this file are
+  provided in section~\ref{sec:activity}.
+
+  \item[\emph{file}\_qhist.dat] Provides histogram data for the size of
+  incoming IO requests, for more information see section~\ref{sec:qhist}.
+
+  \item[\emph{file}\_dhist.dat] Provides histogram data for the size
+  of IO requests submitted to lower layer drivers, for more information
+  see section~\ref{sec:dhist}.
+
+\end{description}
+
+  In addition to the default data files output, there are optional data
+  files which can be generated by btt. These include:
+
+  \begin{description}
+    \item[subset of \texttt{.avg} data, easily parsed ] When the
+    \texttt{-X} option is specified \emph{and} the \texttt{-o} has also
+    been specified, then a subset of the data produced by default is
+    copied to another file that is \emph{more easily parsed.} Refer to
+    section~\ref{sec:o-X} for full details.
+
+    \item[iostat] iostat-like data can be distilled by btt, and is
+    described in section~\ref{sec:iostat}.
+
+    \item[per IO detail] Each and every IO traced can be output in a form
+    that shows each of the IO components on consecutive lines (rather
+    than grepping through a blkparse output file for example). The
+    details on this file is included in section~\ref{sec:per-io}.
+
+    \item[iostat] Latency information -- both Q2d, D2c and Q2C --
+    on a per-IO basis can be generated. These are described in
+    section~\ref{sec:lat}.
+
+    \item[seek details] A set of data files containing all IO-to-IO
+    sector differences can be output, with details found in
+    section~\ref{sec:seek}.
+
+    \item[unplug histogram details] A data file per device containing
+    histogram output for the amount of IOs released at unplug time.
+    Section~\ref{sec:o-u} has more details.
+  \end{description}
+
+\newpage\section{\label{sec:activity}Activity Data File}
+
+  The activity data file contains a series of data values that indicate
+  those periods of time when queue and complete traces are being
+  processed.  The values happen to be in a format easily handled by
+  xmgrace\footnote{\texttt{http://plasma-gate.weizmann.ac.il/Grace/}
+  ``Grace is a WYSIWYG 2D plotting tool for the X Window System and
+  M*tif.''}, but is easy to parse for other plotting and/or analysis
+  programs.
+
+  The file is split into pairs of sets of data points, where each pair
+  contains a set of queue activity and a set of completion activity. The
+  points are presented with the first column (X values) being the time
+  (in seconds), and the second column (Y values) providing an on/off
+  type of setting. For each pair, the Y values have two settings off
+  (low) and on (high). For example, here is a snippet of a file showing
+  some Q activity:
+
+\begin{verbatim}
+# Total System
+#     Total System : q activity
+0.000000000   0.0
+0.000000000   0.4
+0.000070381   0.4
+0.000070381   0.0
+1.023482637   0.0
+1.023482637   0.4
+6.998746618   0.4
+6.998746618   0.0
+7.103336799   0.0
+7.103336799   0.4
+17.235419786   0.4
+17.235419786   0.0
+26.783361447   0.0
+26.783361447   0.4
+26.832454929   0.4
+26.832454929   0.0
+28.870431266   0.0
+28.870431266   0.4
+28.870431266   0.4
+28.870431266   0.0
+\end{verbatim}
+
+  What this indicates is that there was q activity for the system
+  from 0.000000000 through 0.000070381, but was inactive from there to
+  1.023482637, and so on. Section~\ref{sec:o-d} contains details on how
+  to adjust btt's notion of what constitutes activity.
+
+  The pairs are arranged as follows:
+
+  \begin{itemize}
+    \item First there is the total system activity -- meaning activity
+    in either queue or completion traces across all devices.
+
+    \item Next comes per-device activity information -- for each device
+    being traced, that request queues Q and C traces are presented.
+
+    \item Last we present pairs per-process.
+  \end{itemize}
+
+  Using this, one is then able to plot regions of activity versus
+  inactivity -- and one can gather a sense of deltas between the queueing
+  of IOs and when they are completed. Figure~\ref{fig:activity} shows
+  a very simplistic chart showing some activity:
+
+  \begin{figure}[hb]
+  \leavevmode\centering
+  \epsfig{file=activity.eps,width=4.5in}
+  \caption{\label{fig:activity}Simple Activity Chart}
+  \end{figure}
+
+  When the black line (system Q activity) is \emph{high}, then the system
+  is seeing relatively continuous incoming queues. Conversely, when it is
+  low, it represents an extended period of time where no queue requests
+  were coming in. Similarly for the red line and C activity.
+
+\newpage\section{\label{sec:hist}Histogram Data Files}
+
+  The histogram data files provide information concerning incoming and
+  outgoing IO sizes (in blocks). For simplicity, the histogram buckets
+  are one-for-one for sizes up to 1,024 blocks in the IO, and then a
+  single bucket for all sizes greater than or equal to 1,024 blocks.
+
+  The files are again in grace-friendly format, with the first set
+  containing data for the first 1,023 buckets, and a separate set
+  representing sizes $\ge 1024$ blocks. (This is done so that one can
+  easily use a separate formatting specification for the latter set.)
+
+  The first column (X values) is the various IO sizes, and the second
+  column (Y values) represents the number of IOs of that size.
+
+\subsection*{\label{sec:qhist}Q Histogram Data File}
+
+  Figure~\ref{fig:qhist} is a sample graph generated from data used during
+  some real-world analysis\footnote{Note the logarithmic nature of the
+  Y axis for this chart.}. With the visual representation provided by
+  this, one can quickly discern some different characteristics between
+  the 3 runs -- in particular, one can see that there is only a single
+  red point (representing 8 blocks per IO), whereas the other two had
+  multiple data points greater than 8 blocks.
+
+  \begin{figure}[hb]
+  \leavevmode\centering
+  \epsfig{file=qhist.eps,width=4.5in}
+  \caption{\label{fig:qhist}Q Histogram}
+  \end{figure}
+
+\subsection*{\label{sec:dhist}D Histogram Data File}
+
+  Figure~\ref{fig:dhist} is a sample graph generated from data used during
+  some real-world analysis\footnote{Note the logarithmic nature of the
+  Y axis for this chart.}. Again, visually, one can see that the black
+  and blue dots are somewhat similar below about 192 blocks per IO going
+  out. And then one can make the broad generalization of higher reds,
+  lower blues and blacks in the middle.
+
+  \begin{figure}[hb]
+  \leavevmode\centering
+  \epsfig{file=dhist.eps,width=4.5in}
+  \caption{\label{fig:dhist}D Histogram}
+  \end{figure}
+
+\newpage\section{\label{sec:iostat}iostat Data File}
+  \texttt{btt} attempts to produce the results from running an
+  \texttt{iostat -x} command in parallel with the system as it is being
+  traced. The fields (columns) generated by the \texttt{--iostat} or
+  \texttt{-I} option can be seen from the following output snippet --
+  note that the line has been split to fit on the printed page:
+
+\begin{verbatim}
+Device:       rrqm/s   wrqm/s     r/s     w/s    rsec/s    wsec/s
+             rkB/s     wkB/s avgrq-sz avgqu-sz   await   svctm  %util   Stamp
+...
+(  8, 16)       0.00     0.00    0.00 1005.30      0.00 152806.36     
+              0.00  76403.18   152.00    31.00    0.00    0.00   0.00   71.79
+...
+(  8, 16)       1.02     5.80    0.34    1.07      4.03     55.62
+              2.02     27.81    42.13     0.61    0.00   21.90   0.00   TOTAL
+\end{verbatim}
+
+  Note that the STAMP field contains the runtime (in seconds) for that
+  line of data.
+
+\newpage\section{\label{sec:per-io}Per-IO Data File}
+
+  \texttt{btt} can produce a text file containing time line data for each
+  IO processed. The time line data contains rudimentary information for
+  the following stages:
+
+  \begin{itemize}
+    \item queue traces
+    \item get request traces
+    \item insert traces
+    \item merge traces
+    \item issue traces
+    \item completion traces
+    \item remap traces
+  \end{itemize}
+
+  The \emph{--per-io-dump} or \emph{-p} option triggers this behavior,
+  and will produce a file containing streams of IOs (separated by blank
+  spaces). As an example, here is a snippet of 4 IOs that were merged
+  together, you will note there are 3 merged IOs, and 1 inserted in the
+  stream. The issue and completion traces are replicated per IO.
+
+\begin{verbatim}
+ 66,0  :     0.763283556 Q       6208+8  
+             0.763300157 I       6208+8  
+             0.763296365 G       6208+8  
+             0.763338848 D       6208+32 
+             0.763705760 C       6208+32 
+
+ 66,0  :     0.763314550 Q       6224+8  
+             0.763315341 M       6224+8  
+             0.763338848 D       6208+32 
+             0.763705760 C       6208+32 
+
+ 66,0  :     0.763321010 Q       6232+8  
+             0.763321775 M       6232+8  
+             0.763338848 D       6208+32 
+             0.763705760 C       6208+32 
+
+ 65,240:     0.763244173 Q       6216+8  
+             0.763244974 M       6216+8  
+             0.763374288 D       6208+32 
+             0.763826610 C       6208+32 
+\end{verbatim}
+
+  The columns provide the following information:
+
+  \begin{enumerate}
+    \item Device major/minor.
+
+    \item Time of the trace (seconds from the start of the run)
+
+    \item Trace type
+
+    \item start block + number of blocks
+  \end{enumerate}
+ 
+\newpage\section{\label{sec:lat}\label{sec:lat-q2d}\label{sec:lat-q2c}\label{sec:lat-d2c}Latency Data Files}
+
+  The latency data files which can be optionally produced by \texttt{btt}
+  provide per-IO latency information, one for queue time (Q2D), one
+  for total IO time (Q2C) and one for latencies induced by lower layer
+  drivers and devices (D2C).
+
+  In both cases, the first column (X values) represent runtime (seconds),
+  while the second column (Y values) shows the actual latency for a
+  command at that time (either Q2D, D2C or Q2C).
+
+\newpage\section{\label{sec:seek}Seek Data Files}
+
+  \texttt{btt} can also produce two data files containing all IO-to-IO sector
+  deltas, providing seek information which can then be plotted. The
+  produced data file contains 3 sets of data:
+
+  \begin{enumerate}
+     \item Combined data -- all read and write IOs
+
+     \item Read data -- just seek deltas for reads
+
+     \item Write data -- just seek deltas for writes
+  \end{enumerate}
+
+  The format of the output file names is to have the name generated by
+  the following fields separated by underscores (\texttt{\_}):
+ 
+  \begin{itemize}
+    \item The prefix provided as the argument to the \texttt{-s} option.
+    \item The major and minor numbers of the device separated by a comma.
+    \item The string \texttt{q2q} or \texttt{d2d}, indicating the Q2Q or
+          D2D seeks, respectively.
+    \item One of the following characters:
+    	\begin{description}
+	  \item[r] For read (device to system) IOs
+	  \item[w] For write (system to device) IOs
+	  \item[c] Combined -- both read and write IOs
+	\end{description}
+  \end{itemize}
+
+  An example name would be after specifying \texttt{-s seek} would be:
+  \texttt{seek\_065,048\_q2q\_w.dat}.
+
+  The format of the data is to have the runtime values (seconds since
+  the start of the run) in column 1 (X values); and the difference in
+  sectors from the previous IO in column 2 (Y values). Here is a snippet
+  of the first few items from a file:
+
+\begin{verbatim}
+# Combined
+     0.000034733           35283790.0
+     0.000106453           35283790.0
+     0.005239009           35283950.0
+     0.006968575           35283886.0
+     0.007218709           35283694.0
+     0.012145393           35283566.0
+     0.014980835          -35848914.0
+     0.024239323          -35848914.0
+     0.024249402          -35848914.0
+     0.025707095          -35849072.0
+     ...
+\end{verbatim}
+
+  Figure~\ref{fig:seek} shows a simple graph that can be produced which
+  provides visual details concerning seek patterns.
+
+  \begin{figure}[h!]
+  \leavevmode\centering
+  \epsfig{file=seek.eps,width=4.5in}
+  \caption{\label{fig:seek}Seek Chart}
+  \end{figure}
+  \FloatBarrier
+
+  The seek difference is calculated in one of two ways:
+
+  \begin{description}
+    \item[default] By default, the seek distance is calculated as the
+    \emph{closest} distance between the previous IO and this IO. The
+    concept of \emph{closeness} means that it could either be the
+    \emph{end} of the previous IO and the beginning of the next, or the
+    end of this IO and the start of the next.
+
+    \item[\texttt{-a}] If the \texttt{-a} or \texttt{--seek-absolute}
+    option is specified, then the seek distance is simply the difference
+    between the end of the previous IO and the start of this IO.
+  \end{description}
+
+\newpage\subsection{\label{sec:sps-spec}Seeks Per Second}
+
+  When the \texttt{-m} option provides a name, Q2Q and/or D2D seeks
+  will trigger \texttt{btt} to output seeks-per-second information. The
+  first column will contain a time value (seconds), and the second column
+  will indicate the number of seeks per second at that point.
+
+  When there is only a single data point within a 1-second window,
+  \texttt{btt} will just output the time value for the point, and the
+  value 1.0 in the second column. If there is no perceived difference
+  in the times present for the current sample, then the second columns
+  value is the number of seeks present at that time.
+
+  Otherwise, if $\alpha$ and $\Omega$ are the first and last times
+  seen within a 1-second window, and $\nu$ are the number of seeks seen
+  in that time frame, then:
+
+  \begin{description}
+    \item[column 1] Midway point in time for this span, or: \hfill$\alpha +
+    {{(\Omega - \alpha)} / 2}$
+
+    \item[column 2] Average seeks per second over this span, or: \hfill$\nu  /
+    {(\Omega - \alpha)}$
+  \end{description}
+
+  Figure~\ref{fig:sps} shows a simple pair of graphs generated from
+  \texttt{-m} output:
+
+  \begin{figure}[h!]
+  \leavevmode\centering
+  \epsfig{file=sps.eps,width=4.5in}
+  \caption{\label{fig:sps}Seeks-per-second Chart}
+  \end{figure}
+  \FloatBarrier
+
+\newpage\section{\label{sec:cmd-line}Command Line}
+
+\begin{verbatim}
+Usage: btt 2.08
+[ -a               | --seek-absolute ]
+[ -A               | --all-data ]
+[ -B <output name> | --dump-blocknos=<output name> ]
+[ -d <seconds>     | --range-delta=<seconds> ]
+[ -D <dev;...>     | --devices=<dev;...> ]
+[ -e <exe,...>     | --exes=<exe,...>  ]
+[ -h               | --help ]
+[ -i <input name>  | --input-file=<input name> ]
+[ -I <output name> | --iostat=<output name> ]
+[ -l <output name> | --d2c-latencies=<output name> ]
+[ -L <freq>        | --periodic-latencies=<freq> ]
+[ -m <output name> | --seeks-per-second=<output name> ]
+[ -M <dev map>     | --dev-maps=<dev map>
+[ -o <output name> | --output-file=<output name> ]
+[ -p <output name> | --per-io-dump=<output name> ]
+[ -P <output name> | --per-io-trees=<output name> ]
+[ -q <output name> | --q2c-latencies=<output name> ]
+[ -Q <output name> | --active-queue-depth=<output name> ]
+[ -r               | --no-remaps ]
+[ -s <output name> | --seeks=<output name> ]
+[ -S <interval>    | --iostat-interval=<interval> ]
+[ -t <sec>         | --time-start=<sec> ]
+[ -T <sec>         | --time-end=<sec> ]
+[ -u <output name> | --unplug-hist=<output name> ]
+[ -V               | --version ]
+[ -v               | --verbose ]
+[ -X               | --easy-parse-avgs ]
+[ -z <output name> | --q2d-latencies=<output name> ]
+\end{verbatim}
+
+\subsection{\label{sec:o-a}\texttt{--seek-absolute}/\texttt{-a}}
+
+  When specified on the command line, this directs btt to calculate
+  seek distances based solely upon the ending block address of one IO,
+  and the start of the next.  By default \texttt{btt} uses the concept
+  of the closeness to either the beginning or end of the previous IO. See
+  section~\ref{sec:seek} for more details about seek distances.
+
+\subsection{\label{sec:o-A}\texttt{--all-data}/\texttt{-A}}
+
+  Normally \texttt{btt} will not print out verbose information
+  concerning per-process and per-device data (as outlined in
+  section~\ref{sec:detailed-data}). If you desire that level of
+  detail you can specify this option.
+
+\subsection{\label{sec:o-B}\texttt{--dump-blocknos}/\texttt{-B}}
+
+  This option will output absolute block numbers to three files prefixed
+  by the specified output name:
+
+  \begin{description}
+    \item[\emph{prefix}\_\emph{device}\_r.dat] All read block numbers are
+    output, first column is time (seconds), second is the block number,
+    and the third column is the ending block number.
+
+    \item[\emph{prefix}\_\emph{device}\_w.dat] All write block numbers are
+    output, first column is time (seconds), second is the block number,
+    and the third column is the ending block number.
+
+    \item[\emph{prefix}\_\emph{device}\_c.dat] All block numbers (read
+    and write) are output, first column is time (seconds), second is
+    the block number, and the third column is the ending block number.
+  \end{description}
+
+\subsection{\label{sec:o-d}\texttt{--range-delta}/\texttt{-d}}
+
+  Section~\ref{sec:activity} discussed how \texttt{btt} outputs a file
+  containing Q and C activity, the notion of \emph{active} traces simply
+  means that there are Q or C traces occurring within a certain period
+  of each other. The default values is 0.1 seconds; with this option
+  allowing one to change that granularity. The smaller the value, the
+  more data points provided.
+
+\subsection{\label{sec:o-D}\texttt{--devices}/\texttt{-D}}
+
+  Normally, \texttt{btt} will produce data for all devices detected in
+  the traces parsed. With this option, one can reduce the analysis to
+  one or more devices provided in the string passed to this option. The
+  device identifiers are the major and minor number of each device, and
+  each device identifier is separated by a colon (:). A valid specifier
+  for devices 8,0 and 8,8 would then be: \texttt{"8,0:8,8"}.
+
+\subsection{\label{sec:o-e}\texttt{--exes}/\texttt{-e}}
+
+  Likewise, \texttt{btt} will produce data for all processes (executables)
+  found in the traces. With this option, one can specify which processes
+  you want displayed in the output. The format of the string passed is
+  a list of executable \emph{names} separated by commas (,). An example
+  would be \texttt{"-e mkfs.ext3,mount"}.
+
+\subsection{\label{sec:o-h}\texttt{--help}/\texttt{-h}}
+
+  Prints out the simple help information, as seen at the top of
+  section~\ref{sec:cmd-line}.
+
+\subsection{\label{sec:o-i}\texttt{--input-file}/\texttt{-i}}
+
+  Specifies the binary input file that \texttt{btt} will interpret traces
+  in. See section~\ref{sec:getting-started} for information concerning
+  binary trace files.
+
+\subsection{\label{sec:o-I}\texttt{--iostat}/\texttt{-I}}
+
+  This option triggers \texttt{btt} to generate iostat-like output to the
+  file specified. Refer to section~\ref{sec:iostat} for more information
+  on the output produced.
+
+\subsection{\label{sec:o-l}\texttt{--d2c-latencies}/\texttt{-l}}
+
+  This option instructs \texttt{btt} to generate the D2C latency file
+  discussed in section~\ref{sec:lat-d2c}.
+
+\subsection{\label{sec:o-L}\texttt{--periodic-latencies}/\texttt{-L}}
+
+  When given a value greater than 0, this option will create two data
+  files (q2c \& d2c) per device containing a periodic timestamp \&
+  average latency over that period.
+
+\subsection{\label{sec:o-m}\texttt{--seeks-per-second}\texttt{-m}}
+
+  Tells \texttt{btt} to output seeks per second information.  Each device
+  being measured can have up to 2 files output: One with Q2Q information
+  and one with D2D seek information. Information on the output produced
+  can be found in section~\ref{sec:sps-spec}.
+
+  \begin{quote}
+    \textbf{Note: This requires seek output to be selected -- see
+    section~\ref{sec:seek}.}
+  \end{quote}
+
+\subsection{\label{sec:o-M}\texttt{--dev-maps}/\texttt{-M}}
+
+  Internal option, still under construction.
+
+\subsection{\label{sec:o-o}\texttt{--output-file}/\texttt{-o}}
+
+  Normally \texttt{btt} sends the statistical output (covered in
+  section~\ref{sec:output-overview}) to standard out, if you specify
+  this option this data is redirected to the file specified.
+
+\subsection{\label{sec:o-p}\texttt{--per-io-dump}/\texttt{-p}}
+
+  This option tells \texttt{btt} to generate the per IO dump file as
+  discussed in section~\ref{sec:per-io}.
+
+\subsection{\label{sec:o-P}\texttt{--per-io-tress}/\texttt{-P}}
+
+The \texttt{-P} option will generate a file that contains a list of all IO
+"sequences" - showing only the Q, D \& C operation times. The D \& C
+time values are separated from the Q time values with a vertical bar.
+
+\subsection{\label{sec:o-q}\texttt{--q2c-latencies}/\texttt{-q}}
+
+  This option instructs \texttt{btt} to generate the Q2C latency file
+  discussed in section~\ref{sec:lat-q2c}.
+
+\subsection{\label{sec:o-Q}\texttt{--active-queue-depth}/\texttt{-Q}}
+
+  This option tells \texttt{btt} to generate a data file (using the given
+  name as a base) which contains: A time stamp in the first column,
+  and then the number of \emph{active} requests issued to the device
+  driver. (The value is incremented when an \emph{issue} is performend,
+  and decremented when a \emph{complete} is performed.
+
+\subsection{\label{sec:o-r}\texttt{--no-remaps}/\texttt{-r}}
+
+  Ignore remap traces; older kernels did not implement the full remap PDU.
+
+\subsection{\label{sec:o-s}\texttt{--seeks}/\texttt{-s}}
+
+  This option instructs \texttt{btt} to generate the seek data file
+  discussed in section~\ref{sec:seek}.
+
+\subsection{\label{sec:o-S}\texttt{--iostat-interval}/\texttt{-S}}
+
+  The normal \texttt{iostat} command allows one to specify the snapshot
+  interval, likewise, \texttt{btt} allows one to specify how many seconds
+  between its generation of snapshots of the data via this option. Details
+  about the iostat-like capabilities of \texttt{btt} may be found in
+  section~\ref{sec:iostat}.
+
+\subsection{\label{sec:o-tT}\texttt{--time-start}/\texttt{-t} and
+\texttt{--time-end}/\texttt{T}}
+
+  \begin{quote}
+    \emph{This \texttt{btt} capability is still under construction, results are
+    not always consistent at this point in time.}
+  \end{quote}
+
+  These options allow one to dictate to \texttt{btt} when to start and stop
+  parsing of trace data in terms of seconds since the start of the run. The
+  trace chosen will be between the start time (or 0.0 if not
+  specified) and end time (or the end of the run) specified.
+
+\subsection{\label{sec:o-u}\texttt{--unplug-hist}/\texttt{-u}}
+
+  This option instructs \texttt{btt} to generate a data file containing
+  histogram information for \emph{unplug} traces on a per device
+  basis. It shows how many times an unplug was hit with a specified
+  number of IOs released. There are 21 output values into the file, as
+  follows:
+
+  \medskip
+  \begin{tabular}{ll}
+\textbf{X value} & \textbf{Representing Counts} \\\hline
+0 & 0\dots\/4 \\
+1 & 5\dots\/9 \\
+2 & 10\dots\/14 \\
+\dots & \dots\dots\\
+19 & 95\dots\/99 \\
+20 & 100+ \\
+  \end{tabular}
+
+  \medskip
+  The file name(s) generated use the text string passed as an argument for
+  the prefix, followed by the device identifier in \texttt{major,minor}
+  form, with a \texttt{.dat} extension (as an example, with \texttt{-u
+  up\_hist} specified on the command line: \texttt{up\_hist\_008,032.dat}.
+
+\subsection{\label{sec:o-V}\texttt{--version}/\texttt{-V}}
+
+  Prints out the \texttt{btt} version, and exits.
+
+\subsection{\label{sec:o-v}\texttt{--verbose}/\texttt{-v}}
+
+  While \texttt{btt} is processing data, it will put out periodic (1-second
+  granularity) values describing the progress it is making through the
+  input trace stream. The value describes how many traces have been
+  processed. At the end of the run, the overall number of traces, trace
+  rate (number of thousands of traces per second), and the real time for
+  trace processing and output are displayed. Example (note: the interim
+  trace counts are put out with carriage returns, hence, they overwrite
+  each time):
+
+\begin{verbatim}
+# btt -i bp.bin -o btt -v
+Sending range data to bttX.dat
+Sending stats data to bttX.avg
+ 287857 t
+1414173 t
+1691581 t
+...
+4581291 traces @ 279.7 Ktps
+16.379036+0.000005=16.379041
+\end{verbatim}
+
+\subsection{\label{sec:o-X}\texttt{--easy-parse-avgs}/\texttt{-X}}
+
+  \emph{Some} of the data produced by default can also be shipped
+  simultaneously to another file in an easy to parse form. When
+  the \texttt{-o} option is selected (thus producing a file with a
+  \texttt{.avg} exentsion), \emph{and} the \texttt{-X} flag is present,
+  then \texttt{btt} will generate this file.
+
+  The format is space-delimited values starting with a 3-character
+  \emph{record} indicator, then the device information (either major,minor
+  or the device name when \texttt{-M} is specified), and then a number of
+  fields representing data values. The following table shows the record
+  identifiers and the fields provided:
+
+  \bigskip
+  \begin{tabular}{|l|l|}\hline
+  \textbf{Record} & \textbf{Description}\\\hline
+  \texttt{DMI}	& Device Merge Information:\\
+		& \#Q \#D Ratio BLKmin BLKavg BLKmax Total\\\hline
+  \texttt{QSK}	& Device Q2Q Seek Information:\\
+		& NSEEKS MEAN MEDIAN MODE N-MODE mode\ldots\\\hline
+  \texttt{DSK}	& Device D2D Seek Information:\\
+		& NSEEKS MEAN MEDIAN MODE N-MODE mode\ldots\\\hline
+  \texttt{PLG}	& Plug Information:\\
+		& \#Plugs \#TimerUnplugs \%TimeQPlugged\\\hline
+  \texttt{UPG}	& Unplug Information:\\
+		& IOsPerUnplug IOsPerUnplugTimeout\\\hline
+  \texttt{ARQ}	& Active Requests at Q Information:\\
+  		& AvgReqs@Q\\\hline\hline
+  \texttt{Q2Q}  & Queue-to-Queue times:\\
+  \texttt{Q2G}  & Queue-to-GetRequest times:\\
+  \texttt{S2G}  & Sleep-to-GetRequest times:\\
+  \texttt{G2I}  & GetRequest-to-Insert times:\\
+  \texttt{Q2M}  & Queue-to-Merge times:\\
+  \texttt{I2D}  & Insert-to-Issue times:\\
+  \texttt{M2D}  & Merge-to-Issue times:\\
+  \texttt{D2C}  & Issue-to-Complete times:\\
+  \texttt{Q2C}  & Queue-to-Complete times:\\
+                & MIN AVG MAX N\\\hline
+  \end{tabular}
+
+  \bigskip
+  A sample output file would look like:
+
+  \begin{verbatim}
+Q2Q 0.000000001 0.003511356 9.700000000 309906
+Q2G 0.000000001 0.774586535 805.300000000 106732
+S2G 0.000000001 0.072525952 0.370000000 578
+G2I 0.000000001 0.000001125 0.010000000 106732
+Q2M 0.000000001 0.730763626 751.820000000 204040
+I2D 0.000000001 1.270720538 612.880000000 106948
+M2D 0.000000001 0.992355230 428.930000000 203114
+D2C 0.000000001 0.008681311 137.020000000 307343
+Q2C 0.000000001 1.304370794 805.660000000 308921
+DMI 8,16 309907 106729 2.903681286 8 182 1024 19504768
+QSK 8,16 309907 167200.935561314 0 0 235708
+DSK 8,16 106729 433247.436563633 0 0 33974
+PLG 8,16 40824 382 0.008881420
+UPG 8,16 1.993361748 1.866492147
+ARQ 8,16 12.938165321
+  \end{verbatim}
+
+\subsection{\label{sec:o-z}\texttt{--q2d-latencies}/\texttt{-l}}
+
+  This option instructs \texttt{btt} to generate the Q2D latency file
+  discussed in section~\ref{sec:lat-q2d}.
+
+\newpage\section{\label{sec:bno_plot}bno\_plot.py}
+
+Included with the distribution is a simple 3D plotting utility based
+upon the block numbers output when \texttt{-B} is specified (see
+section~\ref{sec:o-B} for more details about the \texttt{-B option}). The
+display will display \emph{each} IO generated, with the time (seconds)
+along the X-axis, the block number (start) along the Y-axis and the
+number of blocks transferred in the IO represented along the Z-axis.
+
+The script requires Python\footnote{\texttt{www.python.org}} and
+gnuplot\footnote{\texttt{www.gnuplot.info}}, and will enter interactive
+mode after the image is produced. In this interactive mode one can enter
+gnuplot commands at the \texttt{'gnuplot>'} prompt, and/or can change
+the viewpoint within the 3D image by \emph{left-click-hold} and moving
+the mouse. A sample screen shot can be seen in figure~\ref{fig:bno_plot} on
+page~\pageref{fig:bno_plot}.
+
+\subsection*{\texttt{bno\_plot.py} Command Line Options}
+
+\begin{quotation}
+\begin{verbatim}
+
+$ bno_plot.py --help
+
+bno_plot.py
+	[ -h | --help       ]
+	[ -K | --keys-below ]
+	[ -v | --verbose    ]
+	[ <file...>         ]
+
+Utilizes gnuplot to generate a 3D plot of the block number
+output from btt.  If no <files> are specified, it will
+utilize all files generated after btt was run with -B
+blknos (meaning: all files of the form blknos*[rw].dat).
+
+The -K option forces bno_plot.py to put the keys below the
+graph, typically all keys for input files are put in the
+upper right corner of the graph. If the number of devices
+exceed 10, then bno_plot.py will automatically push the
+keys under the graph.
+
+To exit the plotter, enter 'quit' or ^D at the 'gnuplot> '
+prompt.
+\end{verbatim}
+\end{quotation}
+
+\begin{figure}[b]
+\leavevmode\centering
+\epsfig{file=bno_plot.eps,width=5.5in}
+\caption{\label{fig:bno_plot}Sample \texttt{bno\_plot.py} Screen Shot}
+\end{figure}
+
+\clearpage
+\newpage\section{\label{sec:appendix}Sample \texttt{btt}
+Output}
+  Here is a complete output file from a btt run, illustrating a lot of the
+  capabilities of btt.
+\input{sample-btt-output.tex}
+
+\end{document}
+\subsection{\label{sec:o-B}\texttt{--dump-blocknos}/\texttt{-B}}
diff --git a/btt/doc/dhist.eps b/btt/doc/dhist.eps
new file mode 100644
index 0000000..623741d
--- /dev/null
+++ b/btt/doc/dhist.eps
@@ -0,0 +1,2513 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: 0 0 799 635
+%%LanguageLevel: 2
+%%Creator: Grace-5.1.20
+%%CreationDate: Wed Feb 28 15:09:40 2007
+%%DocumentData: Clean8Bit
+%%Orientation: Portrait
+%%Title: Untitled
+%%For: adb
+%%DocumentNeededResources: (atend)
+%%EndComments
+%%BeginProlog
+/m {moveto} def
+/l {lineto} def
+/s {stroke} def
+/n {newpath} def
+/c {closepath} def
+/RL {rlineto} def
+/SLW {setlinewidth} def
+/GS {gsave} def
+/GR {grestore} def
+/SC {setcolor} def
+/SGRY {setgray} def
+/SRGB {setrgbcolor} def
+/SD {setdash} def
+/SLC {setlinecap} def
+/SLJ {setlinejoin} def
+/SCS {setcolorspace} def
+/FFSF {findfont setfont} def
+/CC {concat} def
+/PXL {n m 0 0 RL s} def
+/Color0 {1.0000 1.0000 1.0000} def
+/Color1 {0.0000 0.0000 0.0000} def
+/Color2 {1.0000 0.0000 0.0000} def
+/Color3 {0.0000 1.0000 0.0000} def
+/Color4 {0.0000 0.0000 1.0000} def
+/Color5 {1.0000 1.0000 0.0000} def
+/Color6 {0.7373 0.5608 0.5608} def
+/Color7 {0.8627 0.8627 0.8627} def
+/Color8 {0.5804 0.0000 0.8275} def
+/Color9 {0.0000 1.0000 1.0000} def
+/Color10 {1.0000 0.0000 1.0000} def
+/Color11 {1.0000 0.6471 0.0000} def
+/Color12 {0.4471 0.1294 0.7373} def
+/Color13 {0.4039 0.0275 0.2824} def
+/Color14 {0.2510 0.8784 0.8157} def
+/Color15 {0.0000 0.5451 0.0000} def
+/PTRN {
+ /pat_bits exch def 
+ <<
+  /PaintType 2
+  /PatternType 1 /TilingType 1
+  /BBox[0 0 16 16]
+  /XStep 16 /YStep 16
+  /PaintProc {
+   pop
+   16 16 true [-1 0 0 -1 16 16] pat_bits imagemask
+  }
+ >>
+ [0.0016 0 0 0.0016 0 0]
+ makepattern
+} def
+/Pattern0 {<0000000000000000000000000000000000000000000000000000000000000000> PTRN} bind def
+/Pattern1 {<ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff> PTRN} bind def
+/Pattern2 {<eeeeffffbbbbffffeeeeffffbbbbffffeeeeffffbbbbffffeeeeffffbbbbffff> PTRN} bind def
+/Pattern3 {<eeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbb> PTRN} bind def
+/Pattern4 {<5555aaaa5555aaaa5555aaaa5555aaaa5555aaaa5555aaaa5555aaaa5555aaaa> PTRN} bind def
+/Pattern5 {<1111444411114444111144441111444411114444111144441111444411114444> PTRN} bind def
+/Pattern6 {<1111000044440000111100004444000011110000444400001111000044440000> PTRN} bind def
+/Pattern7 {<1010000000000000010100000000000010100000000000000101000000000000> PTRN} bind def
+/Pattern8 {<0000000000000000000000000000000000000000000000000000000000000000> PTRN} bind def
+/Pattern9 {<1e1e0f0f8787c3c3e1e1f0f078783c3c1e1e0f0f8787c3c3e1e1f0f078783c3c> PTRN} bind def
+/Pattern10 {<7878f0f0e1e1c3c387870f0f1e1e3c3c7878f0f0e1e1c3c387870f0f1e1e3c3c> PTRN} bind def
+/Pattern11 {<3333333333333333333333333333333333333333333333333333333333333333> PTRN} bind def
+/Pattern12 {<ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000> PTRN} bind def
+/Pattern13 {<8181424224241818181824244242818181814242242418181818242442428181> PTRN} bind def
+/Pattern14 {<8080404020201010080804040202010180804040202010100808040402020101> PTRN} bind def
+/Pattern15 {<0101020204040808101020204040808001010202040408081010202040408080> PTRN} bind def
+/Pattern16 {<2222222222222222222222222222222222222222222222222222222222222222> PTRN} bind def
+/Pattern17 {<0000ffff000000000000ffff000000000000ffff000000000000ffff00000000> PTRN} bind def
+/Pattern18 {<2222ffff222222222222ffff222222222222ffff222222222222ffff22222222> PTRN} bind def
+/Pattern19 {<ffffffff33333333ffffffff33333333ffffffff33333333ffffffff33333333> PTRN} bind def
+/Pattern20 {<0f0f0f0f0f0f0f0ff0f0f0f0f0f0f0f00f0f0f0f0f0f0f0ff0f0f0f0f0f0f0f0> PTRN} bind def
+/Pattern21 {<ff00ff00ff00ff00ff00ff00ff00ff0000ff00ff00ff00ff00ff00ff00ff00ff> PTRN} bind def
+/Pattern22 {<8001800180018001800180018001ffffffff8001800180018001800180018001> PTRN} bind def
+/Pattern23 {<c003c003c003c003c003c003ffffffffffffffffc003c003c003c003c003c003> PTRN} bind def
+/Pattern24 {<040404040404ffff404040404040ffff040404040404ffff404040404040ffff> PTRN} bind def
+/Pattern25 {<180018001800180018001800ffffffff001800180018001800180018ffffffff> PTRN} bind def
+/Pattern26 {<1111b8b87c7c3a3a1111a3a3c7c78b8b1111b8b87c7c3a3a1111a3a3c7c78b8b> PTRN} bind def
+/Pattern27 {<101010102828c7c70101010182827c7c101010102828c7c70101010182827c7c> PTRN} bind def
+/Pattern28 {<1c1c121211112121c1c12121111112121c1c121211112121c1c1212111111212> PTRN} bind def
+/Pattern29 {<3e3e414180808080e3e31414080808083e3e414180808080e3e3141408080808> PTRN} bind def
+/Pattern30 {<4848888884848383848488884848383848488888848483838484888848483838> PTRN} bind def
+/Pattern31 {<03030404080808080c0c12122121c0c003030404080808080c0c12122121c0c0> PTRN} bind def
+/ellipsedict 8 dict def
+ellipsedict /mtrx matrix put
+/EARC {
+ ellipsedict begin
+  /endangle exch def
+  /startangle exch def
+  /yrad exch def
+  /xrad exch def
+  /y exch def
+  /x exch def
+  /savematrix mtrx currentmatrix def
+  x y translate
+  xrad yrad scale
+  0 0 1 startangle endangle arc
+  savematrix setmatrix
+ end
+} def
+/TL {
+  /kcomp exch def
+  /linewidth exch def
+  /offset exch def
+  GS
+  0 offset rmoveto
+  linewidth SLW
+  dup stringwidth exch kcomp add exch RL s
+  GR
+} def
+/KINIT
+{
+ /kvector exch def
+ /kid 0 def
+} def
+/KPROC
+{
+ pop pop
+ kvector kid get
+ 0 rmoveto
+ /kid 1 kid add def
+} def
+/DefEncoding [
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /space
+ /exclam
+ /quotedbl
+ /numbersign
+ /dollar
+ /percent
+ /ampersand
+ /quoteright
+ /parenleft
+ /parenright
+ /asterisk
+ /plus
+ /comma
+ /hyphen
+ /period
+ /slash
+ /zero
+ /one
+ /two
+ /three
+ /four
+ /five
+ /six
+ /seven
+ /eight
+ /nine
+ /colon
+ /semicolon
+ /less
+ /equal
+ /greater
+ /question
+ /at
+ /A
+ /B
+ /C
+ /D
+ /E
+ /F
+ /G
+ /H
+ /I
+ /J
+ /K
+ /L
+ /M
+ /N
+ /O
+ /P
+ /Q
+ /R
+ /S
+ /T
+ /U
+ /V
+ /W
+ /X
+ /Y
+ /Z
+ /bracketleft
+ /backslash
+ /bracketright
+ /asciicircum
+ /underscore
+ /grave
+ /a
+ /b
+ /c
+ /d
+ /e
+ /f
+ /g
+ /h
+ /i
+ /j
+ /k
+ /l
+ /m
+ /n
+ /o
+ /p
+ /q
+ /r
+ /s
+ /t
+ /u
+ /v
+ /w
+ /x
+ /y
+ /z
+ /braceleft
+ /bar
+ /braceright
+ /asciitilde
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /space
+ /exclamdown
+ /cent
+ /sterling
+ /currency
+ /yen
+ /brokenbar
+ /section
+ /dieresis
+ /copyright
+ /ordfeminine
+ /guillemotleft
+ /logicalnot
+ /hyphen
+ /registered
+ /macron
+ /degree
+ /plusminus
+ /twosuperior
+ /threesuperior
+ /acute
+ /mu
+ /paragraph
+ /periodcentered
+ /cedilla
+ /onesuperior
+ /ordmasculine
+ /guillemotright
+ /onequarter
+ /onehalf
+ /threequarters
+ /questiondown
+ /Agrave
+ /Aacute
+ /Acircumflex
+ /Atilde
+ /Adieresis
+ /Aring
+ /AE
+ /Ccedilla
+ /Egrave
+ /Eacute
+ /Ecircumflex
+ /Edieresis
+ /Igrave
+ /Iacute
+ /Icircumflex
+ /Idieresis
+ /Eth
+ /Ntilde
+ /Ograve
+ /Oacute
+ /Ocircumflex
+ /Otilde
+ /Odieresis
+ /multiply
+ /Oslash
+ /Ugrave
+ /Uacute
+ /Ucircumflex
+ /Udieresis
+ /Yacute
+ /Thorn
+ /germandbls
+ /agrave
+ /aacute
+ /acircumflex
+ /atilde
+ /adieresis
+ /aring
+ /ae
+ /ccedilla
+ /egrave
+ /eacute
+ /ecircumflex
+ /edieresis
+ /igrave
+ /iacute
+ /icircumflex
+ /idieresis
+ /eth
+ /ntilde
+ /ograve
+ /oacute
+ /ocircumflex
+ /otilde
+ /odieresis
+ /divide
+ /oslash
+ /ugrave
+ /uacute
+ /ucircumflex
+ /udieresis
+ /yacute
+ /thorn
+ /ydieresis
+] def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+612.00 612.00 scale
+n
+0.0000 0.0000 m
+0.0000 1.0000 l
+1.2941 1.0000 l
+1.2941 0.0000 l
+c
+[/DeviceRGB] SCS
+Color0 SC
+fill
+[/DeviceRGB] SCS
+Color6 SC
+[0.0075 0.0045 ] 0 SD
+0.0015 SLW
+0 SLC
+0 SLJ
+n
+0.1500 0.1500 m
+1.1500 0.1500 l
+s
+n
+0.1500 0.1825 m
+1.1500 0.1825 l
+s
+n
+0.1500 0.2151 m
+1.1500 0.2151 l
+s
+n
+0.1500 0.2476 m
+1.1500 0.2476 l
+s
+n
+0.1500 0.2801 m
+1.1500 0.2801 l
+s
+n
+0.1500 0.3127 m
+1.1500 0.3127 l
+s
+n
+0.1500 0.3452 m
+1.1500 0.3452 l
+s
+n
+0.1500 0.3777 m
+1.1500 0.3777 l
+s
+n
+0.1500 0.4103 m
+1.1500 0.4103 l
+s
+n
+0.1500 0.4428 m
+1.1500 0.4428 l
+s
+n
+0.1500 0.4753 m
+1.1500 0.4753 l
+s
+n
+0.1500 0.5079 m
+1.1500 0.5079 l
+s
+n
+0.1500 0.5404 m
+1.1500 0.5404 l
+s
+n
+0.1500 0.5729 m
+1.1500 0.5729 l
+s
+n
+0.1500 0.6055 m
+1.1500 0.6055 l
+s
+n
+0.1500 0.6380 m
+1.1500 0.6380 l
+s
+n
+0.1500 0.6705 m
+1.1500 0.6705 l
+s
+n
+0.1500 0.7031 m
+1.1500 0.7031 l
+s
+n
+0.1500 0.7356 m
+1.1500 0.7356 l
+s
+n
+0.1500 0.7681 m
+1.1500 0.7681 l
+s
+n
+0.1500 0.8007 m
+1.1500 0.8007 l
+s
+n
+0.1500 0.8332 m
+1.1500 0.8332 l
+s
+n
+0.1578 0.8362 0.0033 0.0033 0 360 EARC c
+[/DeviceRGB] SCS
+Color1 SC
+fill
+[] 0 SD
+0.0015 SLW
+n 0.1578 0.8362 0.0033 0.0033 0 360 EARC s
+n
+0.1656 0.5982 0.0033 0.0033 0 360 EARC c
+fill
+n 0.1656 0.5982 0.0033 0.0033 0 360 EARC s
+n
+0.1734 0.5267 0.0033 0.0033 0 360 EARC c
+fill
+n 0.1734 0.5267 0.0033 0.0033 0 360 EARC s
+n
+0.1812 0.5134 0.0033 0.0033 0 360 EARC c
+fill
+n 0.1812 0.5134 0.0033 0.0033 0 360 EARC s
+n
+0.1891 0.5507 0.0033 0.0033 0 360 EARC c
+fill
+n 0.1891 0.5507 0.0033 0.0033 0 360 EARC s
+n
+0.1969 0.5503 0.0033 0.0033 0 360 EARC c
+fill
+n 0.1969 0.5503 0.0033 0.0033 0 360 EARC s
+n
+0.2047 0.5640 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2047 0.5640 0.0033 0.0033 0 360 EARC s
+n
+0.2125 0.5805 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2125 0.5805 0.0033 0.0033 0 360 EARC s
+n
+0.2203 0.5857 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2203 0.5857 0.0033 0.0033 0 360 EARC s
+n
+0.2281 0.5876 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2281 0.5876 0.0033 0.0033 0 360 EARC s
+n
+0.2359 0.5845 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2359 0.5845 0.0033 0.0033 0 360 EARC s
+n
+0.2437 0.5805 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2437 0.5805 0.0033 0.0033 0 360 EARC s
+n
+0.2516 0.5688 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2516 0.5688 0.0033 0.0033 0 360 EARC s
+n
+0.2594 0.5528 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2594 0.5528 0.0033 0.0033 0 360 EARC s
+n
+0.2672 0.5314 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2672 0.5314 0.0033 0.0033 0 360 EARC s
+n
+0.2750 0.5132 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2750 0.5132 0.0033 0.0033 0 360 EARC s
+n
+0.2828 0.4884 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2828 0.4884 0.0033 0.0033 0 360 EARC s
+n
+0.2906 0.4625 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2906 0.4625 0.0033 0.0033 0 360 EARC s
+n
+0.2984 0.4328 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2984 0.4328 0.0033 0.0033 0 360 EARC s
+n
+0.3062 0.4179 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3062 0.4179 0.0033 0.0033 0 360 EARC s
+n
+0.3141 0.3935 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3141 0.3935 0.0033 0.0033 0 360 EARC s
+n
+0.3219 0.3816 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3219 0.3816 0.0033 0.0033 0 360 EARC s
+n
+0.3297 0.3833 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3297 0.3833 0.0033 0.0033 0 360 EARC s
+n
+0.3375 0.3823 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3375 0.3823 0.0033 0.0033 0 360 EARC s
+n
+0.3453 0.3574 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3453 0.3574 0.0033 0.0033 0 360 EARC s
+n
+0.3531 0.3345 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3531 0.3345 0.0033 0.0033 0 360 EARC s
+n
+0.3609 0.3381 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3609 0.3381 0.0033 0.0033 0 360 EARC s
+n
+0.3687 0.3647 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3687 0.3647 0.0033 0.0033 0 360 EARC s
+n
+0.3766 0.3336 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3766 0.3336 0.0033 0.0033 0 360 EARC s
+n
+0.3844 0.3372 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3844 0.3372 0.0033 0.0033 0 360 EARC s
+n
+0.3922 0.3355 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3922 0.3355 0.0033 0.0033 0 360 EARC s
+n
+0.4000 0.4158 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4000 0.4158 0.0033 0.0033 0 360 EARC s
+n
+0.4078 0.3195 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4078 0.3195 0.0033 0.0033 0 360 EARC s
+n
+0.4156 0.3182 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4156 0.3182 0.0033 0.0033 0 360 EARC s
+n
+0.4234 0.3182 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4234 0.3182 0.0033 0.0033 0 360 EARC s
+n
+0.4312 0.3501 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4312 0.3501 0.0033 0.0033 0 360 EARC s
+n
+0.4391 0.3011 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4391 0.3011 0.0033 0.0033 0 360 EARC s
+n
+0.4469 0.3169 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4469 0.3169 0.0033 0.0033 0 360 EARC s
+n
+0.4547 0.3096 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4547 0.3096 0.0033 0.0033 0 360 EARC s
+n
+0.4625 0.3445 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4625 0.3445 0.0033 0.0033 0 360 EARC s
+n
+0.4703 0.3080 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4703 0.3080 0.0033 0.0033 0 360 EARC s
+n
+0.4781 0.3080 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4781 0.3080 0.0033 0.0033 0 360 EARC s
+n
+0.4859 0.3169 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4859 0.3169 0.0033 0.0033 0 360 EARC s
+n
+0.4937 0.3514 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4937 0.3514 0.0033 0.0033 0 360 EARC s
+n
+0.5016 0.3169 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5016 0.3169 0.0033 0.0033 0 360 EARC s
+n
+0.5094 0.2929 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5094 0.2929 0.0033 0.0033 0 360 EARC s
+n
+0.5172 0.2992 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5172 0.2992 0.0033 0.0033 0 360 EARC s
+n
+0.5250 0.3429 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5250 0.3429 0.0033 0.0033 0 360 EARC s
+n
+0.5328 0.2625 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5328 0.2625 0.0033 0.0033 0 360 EARC s
+n
+0.5406 0.3080 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5406 0.3080 0.0033 0.0033 0 360 EARC s
+n
+0.5484 0.3182 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5484 0.3182 0.0033 0.0033 0 360 EARC s
+n
+0.5562 0.3372 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5562 0.3372 0.0033 0.0033 0 360 EARC s
+n
+0.5641 0.2951 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5641 0.2951 0.0033 0.0033 0 360 EARC s
+n
+0.5719 0.2951 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5719 0.2951 0.0033 0.0033 0 360 EARC s
+n
+0.5797 0.2972 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5797 0.2972 0.0033 0.0033 0 360 EARC s
+n
+0.5875 0.3327 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5875 0.3327 0.0033 0.0033 0 360 EARC s
+n
+0.5953 0.2739 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5953 0.2739 0.0033 0.0033 0 360 EARC s
+n
+0.6031 0.3047 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6031 0.3047 0.0033 0.0033 0 360 EARC s
+n
+0.6109 0.2992 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6109 0.2992 0.0033 0.0033 0 360 EARC s
+n
+0.6187 0.3265 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6187 0.3265 0.0033 0.0033 0 360 EARC s
+n
+0.6266 0.3029 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6266 0.3029 0.0033 0.0033 0 360 EARC s
+n
+0.6344 0.2972 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6344 0.2972 0.0033 0.0033 0 360 EARC s
+n
+0.6422 0.3064 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6422 0.3064 0.0033 0.0033 0 360 EARC s
+n
+0.6500 0.3751 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6500 0.3751 0.0033 0.0033 0 360 EARC s
+n
+0.6578 0.2906 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6578 0.2906 0.0033 0.0033 0 360 EARC s
+n
+0.6656 0.2739 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6656 0.2739 0.0033 0.0033 0 360 EARC s
+n
+0.6734 0.2666 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6734 0.2666 0.0033 0.0033 0 360 EARC s
+n
+0.6812 0.3155 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6812 0.3155 0.0033 0.0033 0 360 EARC s
+n
+0.6891 0.2951 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6891 0.2951 0.0033 0.0033 0 360 EARC s
+n
+0.6969 0.2882 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6969 0.2882 0.0033 0.0033 0 360 EARC s
+n
+0.7047 0.3011 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7047 0.3011 0.0033 0.0033 0 360 EARC s
+n
+0.7125 0.3182 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7125 0.3182 0.0033 0.0033 0 360 EARC s
+n
+0.7203 0.2906 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7203 0.2906 0.0033 0.0033 0 360 EARC s
+n
+0.7281 0.2625 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7281 0.2625 0.0033 0.0033 0 360 EARC s
+n
+0.7359 0.2951 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7359 0.2951 0.0033 0.0033 0 360 EARC s
+n
+0.7437 0.3080 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7437 0.3080 0.0033 0.0033 0 360 EARC s
+n
+0.7516 0.2801 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7516 0.2801 0.0033 0.0033 0 360 EARC s
+n
+0.7594 0.2771 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7594 0.2771 0.0033 0.0033 0 360 EARC s
+n
+0.7672 0.2882 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7672 0.2882 0.0033 0.0033 0 360 EARC s
+n
+0.7750 0.3064 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7750 0.3064 0.0033 0.0033 0 360 EARC s
+n
+0.7828 0.2704 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7828 0.2704 0.0033 0.0033 0 360 EARC s
+n
+0.7906 0.2771 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7906 0.2771 0.0033 0.0033 0 360 EARC s
+n
+0.7984 0.2739 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7984 0.2739 0.0033 0.0033 0 360 EARC s
+n
+0.8062 0.3195 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8062 0.3195 0.0033 0.0033 0 360 EARC s
+n
+0.8141 0.2951 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8141 0.2951 0.0033 0.0033 0 360 EARC s
+n
+0.8219 0.2341 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8219 0.2341 0.0033 0.0033 0 360 EARC s
+n
+0.8297 0.2951 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8297 0.2951 0.0033 0.0033 0 360 EARC s
+n
+0.8375 0.2929 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8375 0.2929 0.0033 0.0033 0 360 EARC s
+n
+0.8453 0.2771 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8453 0.2771 0.0033 0.0033 0 360 EARC s
+n
+0.8531 0.2476 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8531 0.2476 0.0033 0.0033 0 360 EARC s
+n
+0.8609 0.2625 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8609 0.2625 0.0033 0.0033 0 360 EARC s
+n
+0.8687 0.2906 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8687 0.2906 0.0033 0.0033 0 360 EARC s
+n
+0.8766 0.2581 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8766 0.2581 0.0033 0.0033 0 360 EARC s
+n
+0.8844 0.2255 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8844 0.2255 0.0033 0.0033 0 360 EARC s
+n
+0.8922 0.2906 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8922 0.2906 0.0033 0.0033 0 360 EARC s
+n
+0.9000 0.3011 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9000 0.3011 0.0033 0.0033 0 360 EARC s
+n
+0.9078 0.2413 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9078 0.2413 0.0033 0.0033 0 360 EARC s
+n
+0.9156 0.2531 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9156 0.2531 0.0033 0.0033 0 360 EARC s
+n
+0.9234 0.2704 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9234 0.2704 0.0033 0.0033 0 360 EARC s
+n
+0.9312 0.3029 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9312 0.3029 0.0033 0.0033 0 360 EARC s
+n
+0.9391 0.2476 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9391 0.2476 0.0033 0.0033 0 360 EARC s
+n
+0.9469 0.2581 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9469 0.2581 0.0033 0.0033 0 360 EARC s
+n
+0.9547 0.2801 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9547 0.2801 0.0033 0.0033 0 360 EARC s
+n
+0.9625 0.2882 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9625 0.2882 0.0033 0.0033 0 360 EARC s
+n
+0.9703 0.2625 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9703 0.2625 0.0033 0.0033 0 360 EARC s
+n
+0.9781 0.2951 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9781 0.2951 0.0033 0.0033 0 360 EARC s
+n
+0.9859 0.2972 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9859 0.2972 0.0033 0.0033 0 360 EARC s
+n
+0.9937 0.3029 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9937 0.3029 0.0033 0.0033 0 360 EARC s
+n
+1.0016 0.2581 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0016 0.2581 0.0033 0.0033 0 360 EARC s
+n
+1.0094 0.2666 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0094 0.2666 0.0033 0.0033 0 360 EARC s
+n
+1.0172 0.2906 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0172 0.2906 0.0033 0.0033 0 360 EARC s
+n
+1.0250 0.2951 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0250 0.2951 0.0033 0.0033 0 360 EARC s
+n
+1.0328 0.2704 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0328 0.2704 0.0033 0.0033 0 360 EARC s
+n
+1.0406 0.2625 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0406 0.2625 0.0033 0.0033 0 360 EARC s
+n
+1.0484 0.3080 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0484 0.3080 0.0033 0.0033 0 360 EARC s
+n
+1.0562 0.2951 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0562 0.2951 0.0033 0.0033 0 360 EARC s
+n
+1.0641 0.2704 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0641 0.2704 0.0033 0.0033 0 360 EARC s
+n
+1.0719 0.2992 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0719 0.2992 0.0033 0.0033 0 360 EARC s
+n
+1.0797 0.3127 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0797 0.3127 0.0033 0.0033 0 360 EARC s
+n
+1.0875 0.3398 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0875 0.3398 0.0033 0.0033 0 360 EARC s
+n
+1.0953 0.2801 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0953 0.2801 0.0033 0.0033 0 360 EARC s
+n
+1.1031 0.2413 0.0033 0.0033 0 360 EARC c
+fill
+n 1.1031 0.2413 0.0033 0.0033 0 360 EARC s
+n
+1.1109 0.2801 0.0033 0.0033 0 360 EARC c
+fill
+n 1.1109 0.2801 0.0033 0.0033 0 360 EARC s
+n
+1.1187 0.2882 0.0033 0.0033 0 360 EARC c
+fill
+n 1.1187 0.2882 0.0033 0.0033 0 360 EARC s
+n
+1.1266 0.2739 0.0033 0.0033 0 360 EARC c
+fill
+n 1.1266 0.2739 0.0033 0.0033 0 360 EARC s
+n
+1.1344 0.2951 0.0033 0.0033 0 360 EARC c
+fill
+n 1.1344 0.2951 0.0033 0.0033 0 360 EARC s
+n
+1.1422 0.3096 0.0033 0.0033 0 360 EARC c
+fill
+n 1.1422 0.3096 0.0033 0.0033 0 360 EARC s
+n
+1.1500 0.5306 0.0033 0.0033 0 360 EARC c
+fill
+n 1.1500 0.5306 0.0033 0.0033 0 360 EARC s
+n
+0.1578 0.8316 0.0033 0.0033 0 360 EARC c
+[/DeviceRGB] SCS
+Color2 SC
+fill
+n 0.1578 0.8316 0.0033 0.0033 0 360 EARC s
+n
+0.1656 0.5625 0.0033 0.0033 0 360 EARC c
+fill
+n 0.1656 0.5625 0.0033 0.0033 0 360 EARC s
+n
+0.1734 0.5294 0.0033 0.0033 0 360 EARC c
+fill
+n 0.1734 0.5294 0.0033 0.0033 0 360 EARC s
+n
+0.1812 0.5167 0.0033 0.0033 0 360 EARC c
+fill
+n 0.1812 0.5167 0.0033 0.0033 0 360 EARC s
+n
+0.1891 0.4866 0.0033 0.0033 0 360 EARC c
+fill
+n 0.1891 0.4866 0.0033 0.0033 0 360 EARC s
+n
+0.1969 0.4664 0.0033 0.0033 0 360 EARC c
+fill
+n 0.1969 0.4664 0.0033 0.0033 0 360 EARC s
+n
+0.2047 0.4573 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2047 0.4573 0.0033 0.0033 0 360 EARC s
+n
+0.2125 0.4571 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2125 0.4571 0.0033 0.0033 0 360 EARC s
+n
+0.2203 0.4405 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2203 0.4405 0.0033 0.0033 0 360 EARC s
+n
+0.2281 0.4298 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2281 0.4298 0.0033 0.0033 0 360 EARC s
+n
+0.2359 0.4243 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2359 0.4243 0.0033 0.0033 0 360 EARC s
+n
+0.2437 0.4573 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2437 0.4573 0.0033 0.0033 0 360 EARC s
+n
+0.2516 0.4078 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2516 0.4078 0.0033 0.0033 0 360 EARC s
+n
+0.2594 0.3932 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2594 0.3932 0.0033 0.0033 0 360 EARC s
+n
+0.2672 0.4001 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2672 0.4001 0.0033 0.0033 0 360 EARC s
+n
+0.2750 0.4099 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2750 0.4099 0.0033 0.0033 0 360 EARC s
+n
+0.2828 0.3932 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2828 0.3932 0.0033 0.0033 0 360 EARC s
+n
+0.2906 0.3777 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2906 0.3777 0.0033 0.0033 0 360 EARC s
+n
+0.2984 0.3735 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2984 0.3735 0.0033 0.0033 0 360 EARC s
+n
+0.3062 0.3982 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3062 0.3982 0.0033 0.0033 0 360 EARC s
+n
+0.3141 0.3921 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3141 0.3921 0.0033 0.0033 0 360 EARC s
+n
+0.3219 0.3715 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3219 0.3715 0.0033 0.0033 0 360 EARC s
+n
+0.3297 0.3858 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3297 0.3858 0.0033 0.0033 0 360 EARC s
+n
+0.3375 0.3913 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3375 0.3913 0.0033 0.0033 0 360 EARC s
+n
+0.3453 0.3715 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3453 0.3715 0.0033 0.0033 0 360 EARC s
+n
+0.3531 0.3580 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3531 0.3580 0.0033 0.0033 0 360 EARC s
+n
+0.3609 0.3539 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3609 0.3539 0.0033 0.0033 0 360 EARC s
+n
+0.3687 0.3852 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3687 0.3852 0.0033 0.0033 0 360 EARC s
+n
+0.3766 0.3514 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3766 0.3514 0.0033 0.0033 0 360 EARC s
+n
+0.3844 0.3507 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3844 0.3507 0.0033 0.0033 0 360 EARC s
+n
+0.3922 0.3520 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3922 0.3520 0.0033 0.0033 0 360 EARC s
+n
+0.4000 0.3657 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4000 0.3657 0.0033 0.0033 0 360 EARC s
+n
+0.4078 0.3363 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4078 0.3363 0.0033 0.0033 0 360 EARC s
+n
+0.4156 0.3254 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4156 0.3254 0.0033 0.0033 0 360 EARC s
+n
+0.4234 0.3287 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4234 0.3287 0.0033 0.0033 0 360 EARC s
+n
+0.4312 0.3601 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4312 0.3601 0.0033 0.0033 0 360 EARC s
+n
+0.4391 0.3389 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4391 0.3389 0.0033 0.0033 0 360 EARC s
+n
+0.4469 0.3307 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4469 0.3307 0.0033 0.0033 0 360 EARC s
+n
+0.4547 0.3422 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4547 0.3422 0.0033 0.0033 0 360 EARC s
+n
+0.4625 0.3774 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4625 0.3774 0.0033 0.0033 0 360 EARC s
+n
+0.4703 0.3345 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4703 0.3345 0.0033 0.0033 0 360 EARC s
+n
+0.4781 0.3307 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4781 0.3307 0.0033 0.0033 0 360 EARC s
+n
+0.4859 0.3336 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4859 0.3336 0.0033 0.0033 0 360 EARC s
+n
+0.4937 0.3735 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4937 0.3735 0.0033 0.0033 0 360 EARC s
+n
+0.5016 0.3096 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5016 0.3096 0.0033 0.0033 0 360 EARC s
+n
+0.5094 0.2882 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5094 0.2882 0.0033 0.0033 0 360 EARC s
+n
+0.5172 0.3195 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5172 0.3195 0.0033 0.0033 0 360 EARC s
+n
+0.5250 0.3526 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5250 0.3526 0.0033 0.0033 0 360 EARC s
+n
+0.5328 0.3276 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5328 0.3276 0.0033 0.0033 0 360 EARC s
+n
+0.5406 0.3141 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5406 0.3141 0.0033 0.0033 0 360 EARC s
+n
+0.5484 0.3182 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5484 0.3182 0.0033 0.0033 0 360 EARC s
+n
+0.5562 0.3507 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5562 0.3507 0.0033 0.0033 0 360 EARC s
+n
+0.5641 0.3243 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5641 0.3243 0.0033 0.0033 0 360 EARC s
+n
+0.5719 0.3141 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5719 0.3141 0.0033 0.0033 0 360 EARC s
+n
+0.5797 0.3276 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5797 0.3276 0.0033 0.0033 0 360 EARC s
+n
+0.5875 0.4070 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5875 0.4070 0.0033 0.0033 0 360 EARC s
+n
+0.5953 0.3220 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5953 0.3220 0.0033 0.0033 0 360 EARC s
+n
+0.6031 0.3207 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6031 0.3207 0.0033 0.0033 0 360 EARC s
+n
+0.6109 0.3047 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6109 0.3047 0.0033 0.0033 0 360 EARC s
+n
+0.6187 0.3389 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6187 0.3389 0.0033 0.0033 0 360 EARC s
+n
+0.6266 0.3096 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6266 0.3096 0.0033 0.0033 0 360 EARC s
+n
+0.6344 0.3220 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6344 0.3220 0.0033 0.0033 0 360 EARC s
+n
+0.6422 0.3155 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6422 0.3155 0.0033 0.0033 0 360 EARC s
+n
+0.6500 0.3494 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6500 0.3494 0.0033 0.0033 0 360 EARC s
+n
+0.6578 0.3141 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6578 0.3141 0.0033 0.0033 0 360 EARC s
+n
+0.6656 0.3047 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6656 0.3047 0.0033 0.0033 0 360 EARC s
+n
+0.6734 0.2906 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6734 0.2906 0.0033 0.0033 0 360 EARC s
+n
+0.6812 0.3466 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6812 0.3466 0.0033 0.0033 0 360 EARC s
+n
+0.6891 0.3064 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6891 0.3064 0.0033 0.0033 0 360 EARC s
+n
+0.6969 0.3047 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6969 0.3047 0.0033 0.0033 0 360 EARC s
+n
+0.7047 0.3011 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7047 0.3011 0.0033 0.0033 0 360 EARC s
+n
+0.7125 0.3307 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7125 0.3307 0.0033 0.0033 0 360 EARC s
+n
+0.7203 0.2929 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7203 0.2929 0.0033 0.0033 0 360 EARC s
+n
+0.7281 0.2704 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7281 0.2704 0.0033 0.0033 0 360 EARC s
+n
+0.7359 0.3011 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7359 0.3011 0.0033 0.0033 0 360 EARC s
+n
+0.7437 0.3336 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7437 0.3336 0.0033 0.0033 0 360 EARC s
+n
+0.7516 0.3047 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7516 0.3047 0.0033 0.0033 0 360 EARC s
+n
+0.7594 0.2531 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7594 0.2531 0.0033 0.0033 0 360 EARC s
+n
+0.7672 0.2830 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7672 0.2830 0.0033 0.0033 0 360 EARC s
+n
+0.7750 0.3526 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7750 0.3526 0.0033 0.0033 0 360 EARC s
+n
+0.7828 0.3047 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7828 0.3047 0.0033 0.0033 0 360 EARC s
+n
+0.7906 0.2771 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7906 0.2771 0.0033 0.0033 0 360 EARC s
+n
+0.7984 0.2906 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7984 0.2906 0.0033 0.0033 0 360 EARC s
+n
+0.8062 0.3459 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8062 0.3459 0.0033 0.0033 0 360 EARC s
+n
+0.8141 0.2857 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8141 0.2857 0.0033 0.0033 0 360 EARC s
+n
+0.8219 0.2992 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8219 0.2992 0.0033 0.0033 0 360 EARC s
+n
+0.8297 0.2929 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8297 0.2929 0.0033 0.0033 0 360 EARC s
+n
+0.8375 0.3231 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8375 0.3231 0.0033 0.0033 0 360 EARC s
+n
+0.8453 0.2951 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8453 0.2951 0.0033 0.0033 0 360 EARC s
+n
+0.8531 0.2951 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8531 0.2951 0.0033 0.0033 0 360 EARC s
+n
+0.8609 0.2857 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8609 0.2857 0.0033 0.0033 0 360 EARC s
+n
+0.8687 0.3254 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8687 0.3254 0.0033 0.0033 0 360 EARC s
+n
+0.8766 0.3029 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8766 0.3029 0.0033 0.0033 0 360 EARC s
+n
+0.8844 0.2801 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8844 0.2801 0.0033 0.0033 0 360 EARC s
+n
+0.8922 0.3155 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8922 0.3155 0.0033 0.0033 0 360 EARC s
+n
+0.9000 0.3557 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9000 0.3557 0.0033 0.0033 0 360 EARC s
+n
+0.9078 0.2625 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9078 0.2625 0.0033 0.0033 0 360 EARC s
+n
+0.9156 0.2771 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9156 0.2771 0.0033 0.0033 0 360 EARC s
+n
+0.9234 0.2906 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9234 0.2906 0.0033 0.0033 0 360 EARC s
+n
+0.9312 0.3398 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9312 0.3398 0.0033 0.0033 0 360 EARC s
+n
+0.9391 0.2906 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9391 0.2906 0.0033 0.0033 0 360 EARC s
+n
+0.9469 0.2666 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9469 0.2666 0.0033 0.0033 0 360 EARC s
+n
+0.9547 0.2951 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9547 0.2951 0.0033 0.0033 0 360 EARC s
+n
+0.9625 0.3047 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9625 0.3047 0.0033 0.0033 0 360 EARC s
+n
+0.9703 0.3080 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9703 0.3080 0.0033 0.0033 0 360 EARC s
+n
+0.9781 0.2882 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9781 0.2882 0.0033 0.0033 0 360 EARC s
+n
+0.9859 0.3155 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9859 0.3155 0.0033 0.0033 0 360 EARC s
+n
+0.9937 0.3254 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9937 0.3254 0.0033 0.0033 0 360 EARC s
+n
+1.0016 0.2882 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0016 0.2882 0.0033 0.0033 0 360 EARC s
+n
+1.0094 0.2666 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0094 0.2666 0.0033 0.0033 0 360 EARC s
+n
+1.0172 0.2882 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0172 0.2882 0.0033 0.0033 0 360 EARC s
+n
+1.0250 0.3706 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0250 0.3706 0.0033 0.0033 0 360 EARC s
+n
+1.0328 0.2951 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0328 0.2951 0.0033 0.0033 0 360 EARC s
+n
+1.0406 0.2666 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0406 0.2666 0.0033 0.0033 0 360 EARC s
+n
+1.0484 0.2801 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0484 0.2801 0.0033 0.0033 0 360 EARC s
+n
+1.0562 0.3195 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0562 0.3195 0.0033 0.0033 0 360 EARC s
+n
+1.0641 0.2531 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0641 0.2531 0.0033 0.0033 0 360 EARC s
+n
+1.0719 0.2666 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0719 0.2666 0.0033 0.0033 0 360 EARC s
+n
+1.0797 0.2951 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0797 0.2951 0.0033 0.0033 0 360 EARC s
+n
+1.0875 0.3195 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0875 0.3195 0.0033 0.0033 0 360 EARC s
+n
+1.0953 0.3689 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0953 0.3689 0.0033 0.0033 0 360 EARC s
+n
+1.1031 0.2882 0.0033 0.0033 0 360 EARC c
+fill
+n 1.1031 0.2882 0.0033 0.0033 0 360 EARC s
+n
+1.1109 0.2801 0.0033 0.0033 0 360 EARC c
+fill
+n 1.1109 0.2801 0.0033 0.0033 0 360 EARC s
+n
+1.1187 0.3141 0.0033 0.0033 0 360 EARC c
+fill
+n 1.1187 0.3141 0.0033 0.0033 0 360 EARC s
+n
+1.1266 0.2704 0.0033 0.0033 0 360 EARC c
+fill
+n 1.1266 0.2704 0.0033 0.0033 0 360 EARC s
+n
+1.1344 0.2906 0.0033 0.0033 0 360 EARC c
+fill
+n 1.1344 0.2906 0.0033 0.0033 0 360 EARC s
+n
+1.1422 0.2857 0.0033 0.0033 0 360 EARC c
+fill
+n 1.1422 0.2857 0.0033 0.0033 0 360 EARC s
+n
+1.1500 0.5504 0.0033 0.0033 0 360 EARC c
+fill
+n 1.1500 0.5504 0.0033 0.0033 0 360 EARC s
+n
+0.1578 0.8442 0.0033 0.0033 0 360 EARC c
+[/DeviceRGB] SCS
+Color4 SC
+fill
+n 0.1578 0.8442 0.0033 0.0033 0 360 EARC s
+n
+0.1656 0.6034 0.0033 0.0033 0 360 EARC c
+fill
+n 0.1656 0.6034 0.0033 0.0033 0 360 EARC s
+n
+0.1734 0.5166 0.0033 0.0033 0 360 EARC c
+fill
+n 0.1734 0.5166 0.0033 0.0033 0 360 EARC s
+n
+0.1812 0.4847 0.0033 0.0033 0 360 EARC c
+fill
+n 0.1812 0.4847 0.0033 0.0033 0 360 EARC s
+n
+0.1891 0.5596 0.0033 0.0033 0 360 EARC c
+fill
+n 0.1891 0.5596 0.0033 0.0033 0 360 EARC s
+n
+0.1969 0.5532 0.0033 0.0033 0 360 EARC c
+fill
+n 0.1969 0.5532 0.0033 0.0033 0 360 EARC s
+n
+0.2047 0.5740 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2047 0.5740 0.0033 0.0033 0 360 EARC s
+n
+0.2125 0.5921 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2125 0.5921 0.0033 0.0033 0 360 EARC s
+n
+0.2203 0.6025 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2203 0.6025 0.0033 0.0033 0 360 EARC s
+n
+0.2281 0.6048 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2281 0.6048 0.0033 0.0033 0 360 EARC s
+n
+0.2359 0.5996 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2359 0.5996 0.0033 0.0033 0 360 EARC s
+n
+0.2437 0.5923 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2437 0.5923 0.0033 0.0033 0 360 EARC s
+n
+0.2516 0.5816 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2516 0.5816 0.0033 0.0033 0 360 EARC s
+n
+0.2594 0.5600 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2594 0.5600 0.0033 0.0033 0 360 EARC s
+n
+0.2672 0.5367 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2672 0.5367 0.0033 0.0033 0 360 EARC s
+n
+0.2750 0.5154 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2750 0.5154 0.0033 0.0033 0 360 EARC s
+n
+0.2828 0.4899 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2828 0.4899 0.0033 0.0033 0 360 EARC s
+n
+0.2906 0.4724 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2906 0.4724 0.0033 0.0033 0 360 EARC s
+n
+0.2984 0.4409 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2984 0.4409 0.0033 0.0033 0 360 EARC s
+n
+0.3062 0.4129 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3062 0.4129 0.0033 0.0033 0 360 EARC s
+n
+0.3141 0.3927 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3141 0.3927 0.0033 0.0033 0 360 EARC s
+n
+0.3219 0.3466 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3219 0.3466 0.0033 0.0033 0 360 EARC s
+n
+0.3297 0.3539 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3297 0.3539 0.0033 0.0033 0 360 EARC s
+n
+0.3375 0.3445 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3375 0.3445 0.0033 0.0033 0 360 EARC s
+n
+0.3453 0.3207 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3453 0.3207 0.0033 0.0033 0 360 EARC s
+n
+0.3531 0.2972 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3531 0.2972 0.0033 0.0033 0 360 EARC s
+n
+0.3609 0.2830 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3609 0.2830 0.0033 0.0033 0 360 EARC s
+n
+0.3687 0.3141 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3687 0.3141 0.0033 0.0033 0 360 EARC s
+n
+0.3766 0.2857 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3766 0.2857 0.0033 0.0033 0 360 EARC s
+n
+0.3844 0.2476 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3844 0.2476 0.0033 0.0033 0 360 EARC s
+n
+0.3922 0.2771 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3922 0.2771 0.0033 0.0033 0 360 EARC s
+n
+0.4000 0.3243 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4000 0.3243 0.0033 0.0033 0 360 EARC s
+n
+0.4078 0.2704 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4078 0.2704 0.0033 0.0033 0 360 EARC s
+n
+0.4156 0.2581 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4156 0.2581 0.0033 0.0033 0 360 EARC s
+n
+0.4234 0.2801 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4234 0.2801 0.0033 0.0033 0 360 EARC s
+n
+0.4312 0.2929 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4312 0.2929 0.0033 0.0033 0 360 EARC s
+n
+0.4391 0.2739 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4391 0.2739 0.0033 0.0033 0 360 EARC s
+n
+0.4469 0.2531 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4469 0.2531 0.0033 0.0033 0 360 EARC s
+n
+0.4547 0.2704 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4547 0.2704 0.0033 0.0033 0 360 EARC s
+n
+0.4625 0.2972 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4625 0.2972 0.0033 0.0033 0 360 EARC s
+n
+0.4703 0.2625 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4703 0.2625 0.0033 0.0033 0 360 EARC s
+n
+0.4781 0.2341 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4781 0.2341 0.0033 0.0033 0 360 EARC s
+n
+0.4859 0.2531 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4859 0.2531 0.0033 0.0033 0 360 EARC s
+n
+0.4937 0.3011 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4937 0.3011 0.0033 0.0033 0 360 EARC s
+n
+0.5016 0.2413 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5016 0.2413 0.0033 0.0033 0 360 EARC s
+n
+0.5094 0.2830 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5094 0.2830 0.0033 0.0033 0 360 EARC s
+n
+0.5172 0.2581 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5172 0.2581 0.0033 0.0033 0 360 EARC s
+n
+0.5250 0.2801 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5250 0.2801 0.0033 0.0033 0 360 EARC s
+n
+0.5328 0.2581 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5328 0.2581 0.0033 0.0033 0 360 EARC s
+n
+0.5406 0.2255 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5406 0.2255 0.0033 0.0033 0 360 EARC s
+n
+0.5484 0.2413 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5484 0.2413 0.0033 0.0033 0 360 EARC s
+n
+0.5562 0.2704 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5562 0.2704 0.0033 0.0033 0 360 EARC s
+n
+0.5641 0.2704 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5641 0.2704 0.0033 0.0033 0 360 EARC s
+n
+0.5719 0.2413 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5719 0.2413 0.0033 0.0033 0 360 EARC s
+n
+0.5797 0.2581 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5797 0.2581 0.0033 0.0033 0 360 EARC s
+n
+0.5875 0.3276 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5875 0.3276 0.0033 0.0033 0 360 EARC s
+n
+0.5953 0.2625 0.0033 0.0033 0 360 EARC c
+fill
+n 0.5953 0.2625 0.0033 0.0033 0 360 EARC s
+n
+0.6031 0.1825 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6031 0.1825 0.0033 0.0033 0 360 EARC s
+n
+0.6109 0.2341 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6109 0.2341 0.0033 0.0033 0 360 EARC s
+n
+0.6187 0.2801 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6187 0.2801 0.0033 0.0033 0 360 EARC s
+n
+0.6266 0.2704 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6266 0.2704 0.0033 0.0033 0 360 EARC s
+n
+0.6344 0.2476 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6344 0.2476 0.0033 0.0033 0 360 EARC s
+n
+0.6422 0.2625 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6422 0.2625 0.0033 0.0033 0 360 EARC s
+n
+0.6500 0.2739 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6500 0.2739 0.0033 0.0033 0 360 EARC s
+n
+0.6578 0.2255 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6578 0.2255 0.0033 0.0033 0 360 EARC s
+n
+0.6656 0.2255 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6656 0.2255 0.0033 0.0033 0 360 EARC s
+n
+0.6734 0.2531 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6734 0.2531 0.0033 0.0033 0 360 EARC s
+n
+0.6812 0.2857 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6812 0.2857 0.0033 0.0033 0 360 EARC s
+n
+0.6891 0.2341 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6891 0.2341 0.0033 0.0033 0 360 EARC s
+n
+0.6969 0.2151 0.0033 0.0033 0 360 EARC c
+fill
+n 0.6969 0.2151 0.0033 0.0033 0 360 EARC s
+n
+0.7047 0.2413 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7047 0.2413 0.0033 0.0033 0 360 EARC s
+n
+0.7125 0.2801 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7125 0.2801 0.0033 0.0033 0 360 EARC s
+n
+0.7203 0.2413 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7203 0.2413 0.0033 0.0033 0 360 EARC s
+n
+0.7359 0.2341 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7359 0.2341 0.0033 0.0033 0 360 EARC s
+n
+0.7437 0.2830 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7437 0.2830 0.0033 0.0033 0 360 EARC s
+n
+0.7516 0.2625 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7516 0.2625 0.0033 0.0033 0 360 EARC s
+n
+0.7594 0.2341 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7594 0.2341 0.0033 0.0033 0 360 EARC s
+n
+0.7672 0.2581 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7672 0.2581 0.0033 0.0033 0 360 EARC s
+n
+0.7750 0.2476 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7750 0.2476 0.0033 0.0033 0 360 EARC s
+n
+0.7828 0.2581 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7828 0.2581 0.0033 0.0033 0 360 EARC s
+n
+0.7906 0.2476 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7906 0.2476 0.0033 0.0033 0 360 EARC s
+n
+0.7984 0.2625 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7984 0.2625 0.0033 0.0033 0 360 EARC s
+n
+0.8062 0.3112 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8062 0.3112 0.0033 0.0033 0 360 EARC s
+n
+0.8141 0.2413 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8141 0.2413 0.0033 0.0033 0 360 EARC s
+n
+0.8219 0.2341 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8219 0.2341 0.0033 0.0033 0 360 EARC s
+n
+0.8297 0.2151 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8297 0.2151 0.0033 0.0033 0 360 EARC s
+n
+0.8375 0.2341 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8375 0.2341 0.0033 0.0033 0 360 EARC s
+n
+0.8453 0.2625 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8453 0.2625 0.0033 0.0033 0 360 EARC s
+n
+0.8531 0.2151 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8531 0.2151 0.0033 0.0033 0 360 EARC s
+n
+0.8609 0.2581 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8609 0.2581 0.0033 0.0033 0 360 EARC s
+n
+0.8687 0.2801 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8687 0.2801 0.0033 0.0033 0 360 EARC s
+n
+0.8766 0.2476 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8766 0.2476 0.0033 0.0033 0 360 EARC s
+n
+0.8844 0.1500 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8844 0.1500 0.0033 0.0033 0 360 EARC s
+n
+0.8922 0.2341 0.0033 0.0033 0 360 EARC c
+fill
+n 0.8922 0.2341 0.0033 0.0033 0 360 EARC s
+n
+0.9000 0.2906 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9000 0.2906 0.0033 0.0033 0 360 EARC s
+n
+0.9078 0.2476 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9078 0.2476 0.0033 0.0033 0 360 EARC s
+n
+0.9156 0.1825 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9156 0.1825 0.0033 0.0033 0 360 EARC s
+n
+0.9234 0.2476 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9234 0.2476 0.0033 0.0033 0 360 EARC s
+n
+0.9312 0.2857 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9312 0.2857 0.0033 0.0033 0 360 EARC s
+n
+0.9391 0.2625 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9391 0.2625 0.0033 0.0033 0 360 EARC s
+n
+0.9469 0.2341 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9469 0.2341 0.0033 0.0033 0 360 EARC s
+n
+0.9547 0.2341 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9547 0.2341 0.0033 0.0033 0 360 EARC s
+n
+0.9625 0.2341 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9625 0.2341 0.0033 0.0033 0 360 EARC s
+n
+0.9703 0.2801 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9703 0.2801 0.0033 0.0033 0 360 EARC s
+n
+0.9781 0.2255 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9781 0.2255 0.0033 0.0033 0 360 EARC s
+n
+0.9859 0.3112 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9859 0.3112 0.0033 0.0033 0 360 EARC s
+n
+0.9937 0.2951 0.0033 0.0033 0 360 EARC c
+fill
+n 0.9937 0.2951 0.0033 0.0033 0 360 EARC s
+n
+1.0016 0.2581 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0016 0.2581 0.0033 0.0033 0 360 EARC s
+n
+1.0094 0.2151 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0094 0.2151 0.0033 0.0033 0 360 EARC s
+n
+1.0172 0.2625 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0172 0.2625 0.0033 0.0033 0 360 EARC s
+n
+1.0250 0.3220 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0250 0.3220 0.0033 0.0033 0 360 EARC s
+n
+1.0328 0.2625 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0328 0.2625 0.0033 0.0033 0 360 EARC s
+n
+1.0406 0.2581 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0406 0.2581 0.0033 0.0033 0 360 EARC s
+n
+1.0484 0.2581 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0484 0.2581 0.0033 0.0033 0 360 EARC s
+n
+1.0562 0.4060 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0562 0.4060 0.0033 0.0033 0 360 EARC s
+n
+1.0641 0.3096 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0641 0.3096 0.0033 0.0033 0 360 EARC s
+n
+1.0719 0.2413 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0719 0.2413 0.0033 0.0033 0 360 EARC s
+n
+1.0797 0.3011 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0797 0.3011 0.0033 0.0033 0 360 EARC s
+n
+1.0875 0.2771 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0875 0.2771 0.0033 0.0033 0 360 EARC s
+n
+1.0953 0.3265 0.0033 0.0033 0 360 EARC c
+fill
+n 1.0953 0.3265 0.0033 0.0033 0 360 EARC s
+n
+1.1031 0.2413 0.0033 0.0033 0 360 EARC c
+fill
+n 1.1031 0.2413 0.0033 0.0033 0 360 EARC s
+n
+1.1109 0.2857 0.0033 0.0033 0 360 EARC c
+fill
+n 1.1109 0.2857 0.0033 0.0033 0 360 EARC s
+n
+1.1187 0.2882 0.0033 0.0033 0 360 EARC c
+fill
+n 1.1187 0.2882 0.0033 0.0033 0 360 EARC s
+n
+1.1266 0.2476 0.0033 0.0033 0 360 EARC c
+fill
+n 1.1266 0.2476 0.0033 0.0033 0 360 EARC s
+n
+1.1344 0.2341 0.0033 0.0033 0 360 EARC c
+fill
+n 1.1344 0.2341 0.0033 0.0033 0 360 EARC s
+n
+1.1422 0.2882 0.0033 0.0033 0 360 EARC c
+fill
+n 1.1422 0.2882 0.0033 0.0033 0 360 EARC s
+n
+1.1500 0.5349 0.0033 0.0033 0 360 EARC c
+fill
+n 1.1500 0.5349 0.0033 0.0033 0 360 EARC s
+/Times-Roman findfont
+dup length dict begin
+ {1 index /FID ne {def} {pop pop} ifelse} forall
+ /Encoding DefEncoding def
+ currentdict
+end
+/Font32 exch definefont pop
+/Font32 FFSF
+[/DeviceRGB] SCS
+Color6 SC
+0.1447 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(0) show
+GR
+/Font32 FFSF
+0.2015 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(64) show
+GR
+/Font32 FFSF
+0.2589 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(128) show
+GR
+/Font32 FFSF
+0.3210 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(192) show
+GR
+/Font32 FFSF
+0.3835 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(256) show
+GR
+/Font32 FFSF
+0.4460 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(320) show
+GR
+/Font32 FFSF
+0.5085 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(384) show
+GR
+/Font32 FFSF
+0.5714 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(448) show
+GR
+/Font32 FFSF
+0.6335 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(512) show
+GR
+/Font32 FFSF
+0.6960 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(576) show
+GR
+/Font32 FFSF
+0.7585 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(640) show
+GR
+/Font32 FFSF
+0.8210 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(704) show
+GR
+/Font32 FFSF
+0.8839 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(768) show
+GR
+/Font32 FFSF
+0.9460 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(832) show
+GR
+/Font32 FFSF
+1.0085 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(896) show
+GR
+/Font32 FFSF
+1.0710 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(960) show
+GR
+/Font32 FFSF
+1.1278 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(1024) show
+GR
+/Font32 FFSF
+0.5720 0.0951 m
+GS
+[0.0280 0.0000 0.0000 0.0280 0 0] CC
+(Blocks per IO) show
+GR
+/Font32 FFSF
+0.1310 0.1424 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(1) show
+GR
+/Font32 FFSF
+1.1600 0.1424 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(1) show
+GR
+/Font32 FFSF
+0.1294 0.1749 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(2) show
+GR
+/Font32 FFSF
+1.1600 0.1749 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(2) show
+GR
+/Font32 FFSF
+0.1294 0.2074 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(4) show
+GR
+/Font32 FFSF
+1.1600 0.2074 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(4) show
+GR
+/Font32 FFSF
+0.1302 0.2401 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(8) show
+GR
+/Font32 FFSF
+1.1600 0.2401 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(8) show
+GR
+/Font32 FFSF
+0.1180 0.2727 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(16) show
+GR
+/Font32 FFSF
+1.1600 0.2727 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(16) show
+GR
+/Font32 FFSF
+0.1180 0.3052 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(32) show
+GR
+/Font32 FFSF
+1.1600 0.3052 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(32) show
+GR
+/Font32 FFSF
+0.1180 0.3377 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(64) show
+GR
+/Font32 FFSF
+1.1600 0.3377 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(64) show
+GR
+/Font32 FFSF
+0.1078 0.3703 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(128) show
+GR
+/Font32 FFSF
+1.1600 0.3703 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(128) show
+GR
+/Font32 FFSF
+0.1071 0.4028 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(256) show
+GR
+/Font32 FFSF
+1.1600 0.4028 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(256) show
+GR
+/Font32 FFSF
+0.1071 0.4353 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(512) show
+GR
+/Font32 FFSF
+1.1600 0.4353 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(512) show
+GR
+/Font32 FFSF
+0.0957 0.4679 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(1024) show
+GR
+/Font32 FFSF
+1.1600 0.4679 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(1024) show
+GR
+/Font32 FFSF
+0.0965 0.5004 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(2048) show
+GR
+/Font32 FFSF
+1.1600 0.5004 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(2048) show
+GR
+/Font32 FFSF
+0.0957 0.5329 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(4096) show
+GR
+/Font32 FFSF
+1.1600 0.5329 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(4096) show
+GR
+/Font32 FFSF
+0.0957 0.5655 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(8192) show
+GR
+/Font32 FFSF
+1.1600 0.5655 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(8192) show
+GR
+/Font32 FFSF
+0.0847 0.5980 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(16384) show
+GR
+/Font32 FFSF
+1.1600 0.5980 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(16384) show
+GR
+/Font32 FFSF
+0.0855 0.6305 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(32768) show
+GR
+/Font32 FFSF
+1.1600 0.6305 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(32768) show
+GR
+/Font32 FFSF
+0.0847 0.6631 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(65536) show
+GR
+/Font32 FFSF
+1.1600 0.6631 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(65536) show
+GR
+/Font32 FFSF
+0.0733 0.6956 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(131072) show
+GR
+/Font32 FFSF
+1.1600 0.6956 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(131072) show
+GR
+/Font32 FFSF
+0.0733 0.7281 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(262144) show
+GR
+/Font32 FFSF
+1.1600 0.7281 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(262144) show
+GR
+/Font32 FFSF
+0.0741 0.7607 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(524288) show
+GR
+/Font32 FFSF
+1.1600 0.7607 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(524288) show
+GR
+/Font32 FFSF
+0.0624 0.7932 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(1048576) show
+GR
+/Font32 FFSF
+1.1600 0.7932 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(1048576) show
+GR
+/Font32 FFSF
+0.0624 0.8257 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(2097152) show
+GR
+/Font32 FFSF
+1.1600 0.8257 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(2097152) show
+GR
+/Font32 FFSF
+0.0461 0.3829 m
+GS
+[0.0000 0.0280 -0.0280 0.0000 0 0] CC
+(Number of IOS \(log\)) show
+GR
+n
+0.1500 0.1500 m
+0.1500 0.8500 l
+1.1500 0.8500 l
+1.1500 0.1500 l
+0.1500 0.1500 l
+c
+s
+n
+0.7000 0.8000 m
+0.7000 0.7035 l
+0.9060 0.7035 l
+0.9060 0.8000 l
+c
+[/DeviceRGB] SCS
+Color0 SC
+fill
+[/DeviceRGB] SCS
+Color1 SC
+n
+0.7000 0.8000 m
+0.7000 0.7035 l
+0.9060 0.7035 l
+0.9060 0.8000 l
+0.7000 0.8000 l
+c
+s
+/Font32 FFSF
+0.7650 0.7747 m
+GS
+[0.0221 0.0000 0.0000 0.0221 0 0] CC
+(2.6.20) show
+GR
+n
+0.7300 0.7822 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7300 0.7822 0.0033 0.0033 0 360 EARC s
+/Font32 FFSF
+0.7650 0.7490 m
+GS
+[0.0221 0.0000 0.0000 0.0221 0 0] CC
+(2.6.20-plug) show
+GR
+n
+0.7300 0.7541 0.0033 0.0033 0 360 EARC c
+[/DeviceRGB] SCS
+Color2 SC
+fill
+n 0.7300 0.7541 0.0033 0.0033 0 360 EARC s
+/Font32 FFSF
+[/DeviceRGB] SCS
+Color1 SC
+0.7650 0.7186 m
+GS
+[0.0221 0.0000 0.0000 0.0221 0 0] CC
+(2.6.20-plug-np) show
+GR
+n
+0.7300 0.7237 0.0033 0.0033 0 360 EARC c
+[/DeviceRGB] SCS
+Color4 SC
+fill
+n 0.7300 0.7237 0.0033 0.0033 0 360 EARC s
+/Font32 FFSF
+[/DeviceRGB] SCS
+Color1 SC
+0.3484 0.9190 m
+GS
+[0.0420 0.0000 0.0000 0.0420 0 0] CC
+(D Histogram Chart - AIM7 FServer) show
+GR
+/Times-Italic findfont
+dup length dict begin
+ {1 index /FID ne {def} {pop pop} ifelse} forall
+ /Encoding DefEncoding def
+ currentdict
+end
+/Font31 exch definefont pop
+/Font31 FFSF
+0.3727 0.8759 m
+GS
+[0.0280 0.0000 0.0000 0.0280 0 0] CC
+(4-way IA64 + 4xMSA1000 \(w/ 12 disks per MSA\)) show
+GR
+%%Trailer
+%%DocumentNeededResources: font Times-Italic
+%%+ font Times-Roman
+%%EOF
diff --git a/btt/doc/qhist.eps b/btt/doc/qhist.eps
new file mode 100644
index 0000000..8f45674
--- /dev/null
+++ b/btt/doc/qhist.eps
@@ -0,0 +1,1289 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: 0 0 799 635
+%%LanguageLevel: 2
+%%Creator: Grace-5.1.20
+%%CreationDate: Wed Feb 28 15:09:40 2007
+%%DocumentData: Clean8Bit
+%%Orientation: Portrait
+%%Title: Untitled
+%%For: adb
+%%DocumentNeededResources: (atend)
+%%EndComments
+%%BeginProlog
+/m {moveto} def
+/l {lineto} def
+/s {stroke} def
+/n {newpath} def
+/c {closepath} def
+/RL {rlineto} def
+/SLW {setlinewidth} def
+/GS {gsave} def
+/GR {grestore} def
+/SC {setcolor} def
+/SGRY {setgray} def
+/SRGB {setrgbcolor} def
+/SD {setdash} def
+/SLC {setlinecap} def
+/SLJ {setlinejoin} def
+/SCS {setcolorspace} def
+/FFSF {findfont setfont} def
+/CC {concat} def
+/PXL {n m 0 0 RL s} def
+/Color0 {1.0000 1.0000 1.0000} def
+/Color1 {0.0000 0.0000 0.0000} def
+/Color2 {1.0000 0.0000 0.0000} def
+/Color3 {0.0000 1.0000 0.0000} def
+/Color4 {0.0000 0.0000 1.0000} def
+/Color5 {1.0000 1.0000 0.0000} def
+/Color6 {0.7373 0.5608 0.5608} def
+/Color7 {0.8627 0.8627 0.8627} def
+/Color8 {0.5804 0.0000 0.8275} def
+/Color9 {0.0000 1.0000 1.0000} def
+/Color10 {1.0000 0.0000 1.0000} def
+/Color11 {1.0000 0.6471 0.0000} def
+/Color12 {0.4471 0.1294 0.7373} def
+/Color13 {0.4039 0.0275 0.2824} def
+/Color14 {0.2510 0.8784 0.8157} def
+/Color15 {0.0000 0.5451 0.0000} def
+/PTRN {
+ /pat_bits exch def 
+ <<
+  /PaintType 2
+  /PatternType 1 /TilingType 1
+  /BBox[0 0 16 16]
+  /XStep 16 /YStep 16
+  /PaintProc {
+   pop
+   16 16 true [-1 0 0 -1 16 16] pat_bits imagemask
+  }
+ >>
+ [0.0016 0 0 0.0016 0 0]
+ makepattern
+} def
+/Pattern0 {<0000000000000000000000000000000000000000000000000000000000000000> PTRN} bind def
+/Pattern1 {<ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff> PTRN} bind def
+/Pattern2 {<eeeeffffbbbbffffeeeeffffbbbbffffeeeeffffbbbbffffeeeeffffbbbbffff> PTRN} bind def
+/Pattern3 {<eeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbb> PTRN} bind def
+/Pattern4 {<5555aaaa5555aaaa5555aaaa5555aaaa5555aaaa5555aaaa5555aaaa5555aaaa> PTRN} bind def
+/Pattern5 {<1111444411114444111144441111444411114444111144441111444411114444> PTRN} bind def
+/Pattern6 {<1111000044440000111100004444000011110000444400001111000044440000> PTRN} bind def
+/Pattern7 {<1010000000000000010100000000000010100000000000000101000000000000> PTRN} bind def
+/Pattern8 {<0000000000000000000000000000000000000000000000000000000000000000> PTRN} bind def
+/Pattern9 {<1e1e0f0f8787c3c3e1e1f0f078783c3c1e1e0f0f8787c3c3e1e1f0f078783c3c> PTRN} bind def
+/Pattern10 {<7878f0f0e1e1c3c387870f0f1e1e3c3c7878f0f0e1e1c3c387870f0f1e1e3c3c> PTRN} bind def
+/Pattern11 {<3333333333333333333333333333333333333333333333333333333333333333> PTRN} bind def
+/Pattern12 {<ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000> PTRN} bind def
+/Pattern13 {<8181424224241818181824244242818181814242242418181818242442428181> PTRN} bind def
+/Pattern14 {<8080404020201010080804040202010180804040202010100808040402020101> PTRN} bind def
+/Pattern15 {<0101020204040808101020204040808001010202040408081010202040408080> PTRN} bind def
+/Pattern16 {<2222222222222222222222222222222222222222222222222222222222222222> PTRN} bind def
+/Pattern17 {<0000ffff000000000000ffff000000000000ffff000000000000ffff00000000> PTRN} bind def
+/Pattern18 {<2222ffff222222222222ffff222222222222ffff222222222222ffff22222222> PTRN} bind def
+/Pattern19 {<ffffffff33333333ffffffff33333333ffffffff33333333ffffffff33333333> PTRN} bind def
+/Pattern20 {<0f0f0f0f0f0f0f0ff0f0f0f0f0f0f0f00f0f0f0f0f0f0f0ff0f0f0f0f0f0f0f0> PTRN} bind def
+/Pattern21 {<ff00ff00ff00ff00ff00ff00ff00ff0000ff00ff00ff00ff00ff00ff00ff00ff> PTRN} bind def
+/Pattern22 {<8001800180018001800180018001ffffffff8001800180018001800180018001> PTRN} bind def
+/Pattern23 {<c003c003c003c003c003c003ffffffffffffffffc003c003c003c003c003c003> PTRN} bind def
+/Pattern24 {<040404040404ffff404040404040ffff040404040404ffff404040404040ffff> PTRN} bind def
+/Pattern25 {<180018001800180018001800ffffffff001800180018001800180018ffffffff> PTRN} bind def
+/Pattern26 {<1111b8b87c7c3a3a1111a3a3c7c78b8b1111b8b87c7c3a3a1111a3a3c7c78b8b> PTRN} bind def
+/Pattern27 {<101010102828c7c70101010182827c7c101010102828c7c70101010182827c7c> PTRN} bind def
+/Pattern28 {<1c1c121211112121c1c12121111112121c1c121211112121c1c1212111111212> PTRN} bind def
+/Pattern29 {<3e3e414180808080e3e31414080808083e3e414180808080e3e3141408080808> PTRN} bind def
+/Pattern30 {<4848888884848383848488884848383848488888848483838484888848483838> PTRN} bind def
+/Pattern31 {<03030404080808080c0c12122121c0c003030404080808080c0c12122121c0c0> PTRN} bind def
+/ellipsedict 8 dict def
+ellipsedict /mtrx matrix put
+/EARC {
+ ellipsedict begin
+  /endangle exch def
+  /startangle exch def
+  /yrad exch def
+  /xrad exch def
+  /y exch def
+  /x exch def
+  /savematrix mtrx currentmatrix def
+  x y translate
+  xrad yrad scale
+  0 0 1 startangle endangle arc
+  savematrix setmatrix
+ end
+} def
+/TL {
+  /kcomp exch def
+  /linewidth exch def
+  /offset exch def
+  GS
+  0 offset rmoveto
+  linewidth SLW
+  dup stringwidth exch kcomp add exch RL s
+  GR
+} def
+/KINIT
+{
+ /kvector exch def
+ /kid 0 def
+} def
+/KPROC
+{
+ pop pop
+ kvector kid get
+ 0 rmoveto
+ /kid 1 kid add def
+} def
+/DefEncoding [
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /space
+ /exclam
+ /quotedbl
+ /numbersign
+ /dollar
+ /percent
+ /ampersand
+ /quoteright
+ /parenleft
+ /parenright
+ /asterisk
+ /plus
+ /comma
+ /hyphen
+ /period
+ /slash
+ /zero
+ /one
+ /two
+ /three
+ /four
+ /five
+ /six
+ /seven
+ /eight
+ /nine
+ /colon
+ /semicolon
+ /less
+ /equal
+ /greater
+ /question
+ /at
+ /A
+ /B
+ /C
+ /D
+ /E
+ /F
+ /G
+ /H
+ /I
+ /J
+ /K
+ /L
+ /M
+ /N
+ /O
+ /P
+ /Q
+ /R
+ /S
+ /T
+ /U
+ /V
+ /W
+ /X
+ /Y
+ /Z
+ /bracketleft
+ /backslash
+ /bracketright
+ /asciicircum
+ /underscore
+ /grave
+ /a
+ /b
+ /c
+ /d
+ /e
+ /f
+ /g
+ /h
+ /i
+ /j
+ /k
+ /l
+ /m
+ /n
+ /o
+ /p
+ /q
+ /r
+ /s
+ /t
+ /u
+ /v
+ /w
+ /x
+ /y
+ /z
+ /braceleft
+ /bar
+ /braceright
+ /asciitilde
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /space
+ /exclamdown
+ /cent
+ /sterling
+ /currency
+ /yen
+ /brokenbar
+ /section
+ /dieresis
+ /copyright
+ /ordfeminine
+ /guillemotleft
+ /logicalnot
+ /hyphen
+ /registered
+ /macron
+ /degree
+ /plusminus
+ /twosuperior
+ /threesuperior
+ /acute
+ /mu
+ /paragraph
+ /periodcentered
+ /cedilla
+ /onesuperior
+ /ordmasculine
+ /guillemotright
+ /onequarter
+ /onehalf
+ /threequarters
+ /questiondown
+ /Agrave
+ /Aacute
+ /Acircumflex
+ /Atilde
+ /Adieresis
+ /Aring
+ /AE
+ /Ccedilla
+ /Egrave
+ /Eacute
+ /Ecircumflex
+ /Edieresis
+ /Igrave
+ /Iacute
+ /Icircumflex
+ /Idieresis
+ /Eth
+ /Ntilde
+ /Ograve
+ /Oacute
+ /Ocircumflex
+ /Otilde
+ /Odieresis
+ /multiply
+ /Oslash
+ /Ugrave
+ /Uacute
+ /Ucircumflex
+ /Udieresis
+ /Yacute
+ /Thorn
+ /germandbls
+ /agrave
+ /aacute
+ /acircumflex
+ /atilde
+ /adieresis
+ /aring
+ /ae
+ /ccedilla
+ /egrave
+ /eacute
+ /ecircumflex
+ /edieresis
+ /igrave
+ /iacute
+ /icircumflex
+ /idieresis
+ /eth
+ /ntilde
+ /ograve
+ /oacute
+ /ocircumflex
+ /otilde
+ /odieresis
+ /divide
+ /oslash
+ /ugrave
+ /uacute
+ /ucircumflex
+ /udieresis
+ /yacute
+ /thorn
+ /ydieresis
+] def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+612.00 612.00 scale
+n
+0.0000 0.0000 m
+0.0000 1.0000 l
+1.2941 1.0000 l
+1.2941 0.0000 l
+c
+[/DeviceRGB] SCS
+Color0 SC
+fill
+[/DeviceRGB] SCS
+Color6 SC
+[0.0075 0.0045 ] 0 SD
+0.0015 SLW
+0 SLC
+0 SLJ
+n
+0.1500 0.1500 m
+1.1500 0.1500 l
+s
+n
+0.1500 0.1805 m
+1.1500 0.1805 l
+s
+n
+0.1500 0.2111 m
+1.1500 0.2111 l
+s
+n
+0.1500 0.2416 m
+1.1500 0.2416 l
+s
+n
+0.1500 0.2721 m
+1.1500 0.2721 l
+s
+n
+0.1500 0.3026 m
+1.1500 0.3026 l
+s
+n
+0.1500 0.3332 m
+1.1500 0.3332 l
+s
+n
+0.1500 0.3637 m
+1.1500 0.3637 l
+s
+n
+0.1500 0.3942 m
+1.1500 0.3942 l
+s
+n
+0.1500 0.4247 m
+1.1500 0.4247 l
+s
+n
+0.1500 0.4553 m
+1.1500 0.4553 l
+s
+n
+0.1500 0.4858 m
+1.1500 0.4858 l
+s
+n
+0.1500 0.5163 m
+1.1500 0.5163 l
+s
+n
+0.1500 0.5468 m
+1.1500 0.5468 l
+s
+n
+0.1500 0.5774 m
+1.1500 0.5774 l
+s
+n
+0.1500 0.6079 m
+1.1500 0.6079 l
+s
+n
+0.1500 0.6384 m
+1.1500 0.6384 l
+s
+n
+0.1500 0.6689 m
+1.1500 0.6689 l
+s
+n
+0.1500 0.6995 m
+1.1500 0.6995 l
+s
+n
+0.1500 0.7300 m
+1.1500 0.7300 l
+s
+n
+0.1500 0.7605 m
+1.1500 0.7605 l
+s
+n
+0.1500 0.7910 m
+1.1500 0.7910 l
+s
+n
+0.1500 0.8216 m
+1.1500 0.8216 l
+s
+n
+0.1578 0.8176 0.0033 0.0033 0 360 EARC c
+[/DeviceRGB] SCS
+Color1 SC
+fill
+[] 0 SD
+0.0015 SLW
+n 0.1578 0.8176 0.0033 0.0033 0 360 EARC s
+n
+0.1734 0.2357 0.0033 0.0033 0 360 EARC c
+fill
+n 0.1734 0.2357 0.0033 0.0033 0 360 EARC s
+n
+0.1812 0.3644 0.0033 0.0033 0 360 EARC c
+fill
+n 0.1812 0.3644 0.0033 0.0033 0 360 EARC s
+n
+0.1891 0.1500 0.0033 0.0033 0 360 EARC c
+fill
+n 0.1891 0.1500 0.0033 0.0033 0 360 EARC s
+n
+0.2125 0.3012 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2125 0.3012 0.0033 0.0033 0 360 EARC s
+n
+0.2437 0.3040 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2437 0.3040 0.0033 0.0033 0 360 EARC s
+n
+0.2516 0.2209 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2516 0.2209 0.0033 0.0033 0 360 EARC s
+n
+0.2750 0.2416 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2750 0.2416 0.0033 0.0033 0 360 EARC s
+n
+0.3062 0.2514 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3062 0.2514 0.0033 0.0033 0 360 EARC s
+n
+0.3375 0.2773 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3375 0.2773 0.0033 0.0033 0 360 EARC s
+n
+0.3687 0.2289 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3687 0.2289 0.0033 0.0033 0 360 EARC s
+n
+0.4000 0.4140 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4000 0.4140 0.0033 0.0033 0 360 EARC s
+n
+0.1578 0.8079 0.0033 0.0033 0 360 EARC c
+[/DeviceRGB] SCS
+Color2 SC
+fill
+n 0.1578 0.8079 0.0033 0.0033 0 360 EARC s
+n
+0.1578 0.8245 0.0033 0.0033 0 360 EARC c
+[/DeviceRGB] SCS
+Color4 SC
+fill
+n 0.1578 0.8245 0.0033 0.0033 0 360 EARC s
+n
+0.1734 0.1805 0.0033 0.0033 0 360 EARC c
+fill
+n 0.1734 0.1805 0.0033 0.0033 0 360 EARC s
+n
+0.1812 0.2773 0.0033 0.0033 0 360 EARC c
+fill
+n 0.1812 0.2773 0.0033 0.0033 0 360 EARC s
+n
+0.2125 0.2594 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2125 0.2594 0.0033 0.0033 0 360 EARC s
+n
+0.2437 0.2111 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2437 0.2111 0.0033 0.0033 0 360 EARC s
+n
+0.2516 0.1500 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2516 0.1500 0.0033 0.0033 0 360 EARC s
+n
+0.2750 0.1984 0.0033 0.0033 0 360 EARC c
+fill
+n 0.2750 0.1984 0.0033 0.0033 0 360 EARC s
+n
+0.3062 0.1500 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3062 0.1500 0.0033 0.0033 0 360 EARC s
+n
+0.3375 0.2594 0.0033 0.0033 0 360 EARC c
+fill
+n 0.3375 0.2594 0.0033 0.0033 0 360 EARC s
+n
+0.4000 0.2935 0.0033 0.0033 0 360 EARC c
+fill
+n 0.4000 0.2935 0.0033 0.0033 0 360 EARC s
+/Times-Roman findfont
+dup length dict begin
+ {1 index /FID ne {def} {pop pop} ifelse} forall
+ /Encoding DefEncoding def
+ currentdict
+end
+/Font32 exch definefont pop
+/Font32 FFSF
+[/DeviceRGB] SCS
+Color6 SC
+0.1447 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(0) show
+GR
+/Font32 FFSF
+0.2015 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(64) show
+GR
+/Font32 FFSF
+0.2589 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(128) show
+GR
+/Font32 FFSF
+0.3210 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(192) show
+GR
+/Font32 FFSF
+0.3835 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(256) show
+GR
+/Font32 FFSF
+0.4460 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(320) show
+GR
+/Font32 FFSF
+0.5085 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(384) show
+GR
+/Font32 FFSF
+0.5714 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(448) show
+GR
+/Font32 FFSF
+0.6335 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(512) show
+GR
+/Font32 FFSF
+0.6960 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(576) show
+GR
+/Font32 FFSF
+0.7585 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(640) show
+GR
+/Font32 FFSF
+0.8210 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(704) show
+GR
+/Font32 FFSF
+0.8839 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(768) show
+GR
+/Font32 FFSF
+0.9460 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(832) show
+GR
+/Font32 FFSF
+1.0085 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(896) show
+GR
+/Font32 FFSF
+1.0710 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(960) show
+GR
+/Font32 FFSF
+1.1278 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(1024) show
+GR
+/Font32 FFSF
+0.5720 0.0951 m
+GS
+[0.0280 0.0000 0.0000 0.0280 0 0] CC
+(Blocks per IO) show
+GR
+[/DeviceRGB] SCS
+Color1 SC
+n
+0.1500 0.1500 m
+0.1500 0.8500 l
+s
+n
+1.1500 0.1500 m
+1.1500 0.8500 l
+s
+[/DeviceRGB] SCS
+Color6 SC
+[0.0075 0.0045 ] 0 SD
+0.0015 SLW
+n
+0.1500 0.1500 m
+0.1700 0.1500 l
+s
+n
+1.1500 0.1500 m
+1.1300 0.1500 l
+s
+n
+0.1500 0.1805 m
+0.1700 0.1805 l
+s
+n
+1.1500 0.1805 m
+1.1300 0.1805 l
+s
+n
+0.1500 0.2111 m
+0.1700 0.2111 l
+s
+n
+1.1500 0.2111 m
+1.1300 0.2111 l
+s
+n
+0.1500 0.2416 m
+0.1700 0.2416 l
+s
+n
+1.1500 0.2416 m
+1.1300 0.2416 l
+s
+n
+0.1500 0.2721 m
+0.1700 0.2721 l
+s
+n
+1.1500 0.2721 m
+1.1300 0.2721 l
+s
+n
+0.1500 0.3026 m
+0.1700 0.3026 l
+s
+n
+1.1500 0.3026 m
+1.1300 0.3026 l
+s
+n
+0.1500 0.3332 m
+0.1700 0.3332 l
+s
+n
+1.1500 0.3332 m
+1.1300 0.3332 l
+s
+n
+0.1500 0.3637 m
+0.1700 0.3637 l
+s
+n
+1.1500 0.3637 m
+1.1300 0.3637 l
+s
+n
+0.1500 0.3942 m
+0.1700 0.3942 l
+s
+n
+1.1500 0.3942 m
+1.1300 0.3942 l
+s
+n
+0.1500 0.4247 m
+0.1700 0.4247 l
+s
+n
+1.1500 0.4247 m
+1.1300 0.4247 l
+s
+n
+0.1500 0.4553 m
+0.1700 0.4553 l
+s
+n
+1.1500 0.4553 m
+1.1300 0.4553 l
+s
+n
+0.1500 0.4858 m
+0.1700 0.4858 l
+s
+n
+1.1500 0.4858 m
+1.1300 0.4858 l
+s
+n
+0.1500 0.5163 m
+0.1700 0.5163 l
+s
+n
+1.1500 0.5163 m
+1.1300 0.5163 l
+s
+n
+0.1500 0.5468 m
+0.1700 0.5468 l
+s
+n
+1.1500 0.5468 m
+1.1300 0.5468 l
+s
+n
+0.1500 0.5774 m
+0.1700 0.5774 l
+s
+n
+1.1500 0.5774 m
+1.1300 0.5774 l
+s
+n
+0.1500 0.6079 m
+0.1700 0.6079 l
+s
+n
+1.1500 0.6079 m
+1.1300 0.6079 l
+s
+n
+0.1500 0.6384 m
+0.1700 0.6384 l
+s
+n
+1.1500 0.6384 m
+1.1300 0.6384 l
+s
+n
+0.1500 0.6689 m
+0.1700 0.6689 l
+s
+n
+1.1500 0.6689 m
+1.1300 0.6689 l
+s
+n
+0.1500 0.6995 m
+0.1700 0.6995 l
+s
+n
+1.1500 0.6995 m
+1.1300 0.6995 l
+s
+n
+0.1500 0.7300 m
+0.1700 0.7300 l
+s
+n
+1.1500 0.7300 m
+1.1300 0.7300 l
+s
+n
+0.1500 0.7605 m
+0.1700 0.7605 l
+s
+n
+1.1500 0.7605 m
+1.1300 0.7605 l
+s
+n
+0.1500 0.7910 m
+0.1700 0.7910 l
+s
+n
+1.1500 0.7910 m
+1.1300 0.7910 l
+s
+n
+0.1500 0.8216 m
+0.1700 0.8216 l
+s
+n
+1.1500 0.8216 m
+1.1300 0.8216 l
+s
+/Font32 FFSF
+0.1310 0.1424 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(1) show
+GR
+/Font32 FFSF
+1.1600 0.1424 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(1) show
+GR
+/Font32 FFSF
+0.1294 0.1729 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(2) show
+GR
+/Font32 FFSF
+1.1600 0.1729 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(2) show
+GR
+/Font32 FFSF
+0.1294 0.2034 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(4) show
+GR
+/Font32 FFSF
+1.1600 0.2034 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(4) show
+GR
+/Font32 FFSF
+0.1302 0.2341 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(8) show
+GR
+/Font32 FFSF
+1.1600 0.2341 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(8) show
+GR
+/Font32 FFSF
+0.1180 0.2647 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(16) show
+GR
+/Font32 FFSF
+1.1600 0.2647 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(16) show
+GR
+/Font32 FFSF
+0.1180 0.2952 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(32) show
+GR
+/Font32 FFSF
+1.1600 0.2952 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(32) show
+GR
+/Font32 FFSF
+0.1180 0.3257 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(64) show
+GR
+/Font32 FFSF
+1.1600 0.3257 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(64) show
+GR
+/Font32 FFSF
+0.1078 0.3562 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(128) show
+GR
+/Font32 FFSF
+1.1600 0.3562 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(128) show
+GR
+/Font32 FFSF
+0.1071 0.3868 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(256) show
+GR
+/Font32 FFSF
+1.1600 0.3868 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(256) show
+GR
+/Font32 FFSF
+0.1071 0.4173 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(512) show
+GR
+/Font32 FFSF
+1.1600 0.4173 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(512) show
+GR
+/Font32 FFSF
+0.0957 0.4478 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(1024) show
+GR
+/Font32 FFSF
+1.1600 0.4478 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(1024) show
+GR
+/Font32 FFSF
+0.0965 0.4783 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(2048) show
+GR
+/Font32 FFSF
+1.1600 0.4783 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(2048) show
+GR
+/Font32 FFSF
+0.0957 0.5089 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(4096) show
+GR
+/Font32 FFSF
+1.1600 0.5089 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(4096) show
+GR
+/Font32 FFSF
+0.0957 0.5394 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(8192) show
+GR
+/Font32 FFSF
+1.1600 0.5394 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(8192) show
+GR
+/Font32 FFSF
+0.0847 0.5699 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(16384) show
+GR
+/Font32 FFSF
+1.1600 0.5699 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(16384) show
+GR
+/Font32 FFSF
+0.0855 0.6004 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(32768) show
+GR
+/Font32 FFSF
+1.1600 0.6004 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(32768) show
+GR
+/Font32 FFSF
+0.0847 0.6310 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(65536) show
+GR
+/Font32 FFSF
+1.1600 0.6310 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(65536) show
+GR
+/Font32 FFSF
+0.0733 0.6615 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(131072) show
+GR
+/Font32 FFSF
+1.1600 0.6615 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(131072) show
+GR
+/Font32 FFSF
+0.0733 0.6920 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(262144) show
+GR
+/Font32 FFSF
+1.1600 0.6920 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(262144) show
+GR
+/Font32 FFSF
+0.0741 0.7225 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(524288) show
+GR
+/Font32 FFSF
+1.1600 0.7225 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(524288) show
+GR
+/Font32 FFSF
+0.0624 0.7531 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(1048576) show
+GR
+/Font32 FFSF
+1.1600 0.7531 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(1048576) show
+GR
+/Font32 FFSF
+0.0624 0.7836 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(2097152) show
+GR
+/Font32 FFSF
+1.1600 0.7836 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(2097152) show
+GR
+/Font32 FFSF
+0.0624 0.8141 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(4194304) show
+GR
+/Font32 FFSF
+1.1600 0.8141 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(4194304) show
+GR
+/Font32 FFSF
+0.0461 0.3853 m
+GS
+[0.0000 0.0280 -0.0280 0.0000 0 0] CC
+(Number of IOs \(log\)) show
+GR
+[] 0 SD
+0.0015 SLW
+n
+0.1500 0.1500 m
+0.1500 0.8500 l
+1.1500 0.8500 l
+1.1500 0.1500 l
+0.1500 0.1500 l
+c
+s
+n
+0.7000 0.8000 m
+0.7000 0.7035 l
+0.9043 0.7035 l
+0.9043 0.8000 l
+c
+[/DeviceRGB] SCS
+Color0 SC
+fill
+[/DeviceRGB] SCS
+Color1 SC
+n
+0.7000 0.8000 m
+0.7000 0.7035 l
+0.9043 0.7035 l
+0.9043 0.8000 l
+0.7000 0.8000 l
+c
+s
+/Font32 FFSF
+0.7633 0.7747 m
+GS
+[0.0221 0.0000 0.0000 0.0221 0 0] CC
+(2.6.20) show
+GR
+n
+0.7300 0.7822 0.0033 0.0033 0 360 EARC c
+fill
+n 0.7300 0.7822 0.0033 0.0033 0 360 EARC s
+/Font32 FFSF
+0.7633 0.7490 m
+GS
+[0.0221 0.0000 0.0000 0.0221 0 0] CC
+(2.6.20-plug) show
+GR
+n
+0.7300 0.7541 0.0033 0.0033 0 360 EARC c
+[/DeviceRGB] SCS
+Color2 SC
+fill
+n 0.7300 0.7541 0.0033 0.0033 0 360 EARC s
+/Font32 FFSF
+[/DeviceRGB] SCS
+Color1 SC
+0.7633 0.7186 m
+GS
+[0.0221 0.0000 0.0000 0.0221 0 0] CC
+(2.6.20-plug-np) show
+GR
+n
+0.7300 0.7237 0.0033 0.0033 0 360 EARC c
+[/DeviceRGB] SCS
+Color4 SC
+fill
+n 0.7300 0.7237 0.0033 0.0033 0 360 EARC s
+/Font32 FFSF
+[/DeviceRGB] SCS
+Color1 SC
+0.3484 0.9190 m
+GS
+[0.0420 0.0000 0.0000 0.0420 0 0] CC
+(Q Histogram Chart - AIM7 FServer) show
+GR
+/Times-Italic findfont
+dup length dict begin
+ {1 index /FID ne {def} {pop pop} ifelse} forall
+ /Encoding DefEncoding def
+ currentdict
+end
+/Font31 exch definefont pop
+/Font31 FFSF
+0.3727 0.8759 m
+GS
+[0.0280 0.0000 0.0000 0.0280 0 0] CC
+(4-way IA64 + 4xMSA1000 \(w/ 12 disks per MSA\)) show
+GR
+%%Trailer
+%%DocumentNeededResources: font Times-Italic
+%%+ font Times-Roman
+%%EOF
diff --git a/btt/doc/sample-btt-output.tex b/btt/doc/sample-btt-output.tex
new file mode 100644
index 0000000..24fa9f5
--- /dev/null
+++ b/btt/doc/sample-btt-output.tex
@@ -0,0 +1,95 @@
+\begin{verbatim}
+==================== All Devices ====================
+
+            ALL           MIN           AVG           MAX           N
+--------------- ------------- ------------- ------------- -----------
+Q2Qdm             0.000001260   0.000078915  14.504199709      491531
+Q2Adm             0.000000398   0.001184212  43.228889856      491566
+
+Q2Q               0.000000455   0.000009032   1.811181609      491566
+Q2G               0.000000466   0.002396857   0.203392940        8756
+G2I               0.000000142   0.000000461   0.000096257        8756
+Q2M               0.000000230   0.000000433   0.000173083      482810
+I2D               0.000000999   0.407286973   0.982146009        8756
+M2D               0.000001251   0.356512650   0.982143260      482810
+D2C               0.000057729   0.037337508   2.011319687      491566
+Q2C               0.000060550   0.394797701   2.035625308      491566
+
+==================== Device Overhead ====================
+
+       DEV |       Q2G       G2I       Q2M       I2D       D2C
+---------- | --------- --------- --------- --------- ---------
+ (  8,  0) |   0.3104%   0.0004%   0.0003%  58.9079%  41.0914%
+ (  8, 32) |   0.5858%   0.0001%   0.0001%  98.3852%   1.6146%
+---------- | --------- --------- --------- --------- ---------
+   Overall |   0.0957%   0.0000%   0.0010%  16.2534%  83.6500%
+
+\end{verbatim}
+\newpage
+\begin{verbatim}
+
+==================== Device Merge Information ====================
+
+       DEV |       #Q       #D   Ratio |   BLKmin   BLKavg   BLKmax    Total
+---------- | -------- -------- ------- | -------- -------- -------- --------
+ (  8,  0) |   246812     3970    62.2 |        2      497     1024  1974490
+ (  8, 32) |   244754     4786    51.1 |        8      409      488  1958032
+---------- | -------- -------- ------- | -------- -------- -------- --------
+       DEV |       #Q       #D   Ratio |   BLKmin   BLKavg   BLKmax    Total
+     TOTAL |   491566     8756    56.1 |        2      449     1024  3932522
+
+==================== Device Q2Q Seek Information ====================
+
+       DEV |          NSEEKS            MEAN          MEDIAN | MODE
+---------- | --------------- --------------- --------------- | ---------------
+ (  9,  0) |          491532          2693.5               0 | 0(489746)
+ (  8,  0) |          246812          2682.4               0 | 0(245021)
+ (  8, 32) |          244754          1355.3               0 | 0(243795)
+---------- | --------------- --------------- --------------- | ---------------
+   Overall |          NSEEKS            MEAN          MEDIAN | MODE
+   Average |          983098          2357.6               0 | 0(978562)
+
+==================== Device D2D Seek Information ====================
+
+       DEV |          NSEEKS            MEAN          MEDIAN | MODE
+---------- | --------------- --------------- --------------- | ---------------
+ (  8,  0) |            3970        219326.9               0 | 0(2177)
+ (  8, 32) |            4786         69254.5               0 | 0(3828)
+---------- | --------------- --------------- --------------- | ---------------
+   Overall |          NSEEKS            MEAN          MEDIAN | MODE
+   Average |            8756        137297.8               0 | 0(6005)
+
+\end{verbatim}
+\newpage
+\begin{verbatim}
+
+==================== Plug Information ====================
+
+       DEV |    # Plugs # Timer Us  | % Time Q Plugged
+---------- | ---------- ----------  | ----------------
+ (  8,  0) |       1152(       137) |   0.107460846%
+ (  8, 32) |          5(         0) |   0.000175916%
+---------- | ---------- ----------  | ----------------
+   Overall |    # Plugs # Timer Us  | % Time Q Plugged
+   Average |        578(        68) |   0.053818381%
+
+==================== Active Requests At Q Information ====================
+
+       DEV |  Avg Reqs @ Q
+---------- | -------------
+ (  8,  0) |          11.1
+ (  8, 32) |         133.0
+---------- | -------------
+   Overall | Avgs Reqs @ Q
+   Average |          71.8
+
+==================== Q2D Histogram ====================
+
+       DEV | <.005 <.010 <.025 <.050 <.075 <.100 <.250 <.500 < 1.0 >=1.0
+ --------- | ===== ===== ===== ===== ===== ===== ===== ===== ===== =====
+ (  8,  0) |  80.5   3.5   1.0   1.0   0.7   0.6   4.0   5.3   3.4   0.0
+ (  8, 32) |   0.3   0.0   0.3   0.2   0.2   0.2   1.7   2.0  95.2   0.0
+========== | ===== ===== ===== ===== ===== ===== ===== ===== ===== =====
+       AVG |  40.5   1.8   0.6   0.6   0.4   0.4   2.8   3.7  49.1   0.0
+
+\end{verbatim}
diff --git a/btt/doc/seek.eps b/btt/doc/seek.eps
new file mode 100644
index 0000000..676fb5f
--- /dev/null
+++ b/btt/doc/seek.eps
@@ -0,0 +1,5628 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: 0 0 799 635
+%%LanguageLevel: 2
+%%Creator: Grace-5.1.20
+%%CreationDate: Thu Mar  1 16:34:45 2007
+%%DocumentData: Clean8Bit
+%%Orientation: Portrait
+%%Title: Untitled
+%%For: adb
+%%DocumentNeededResources: (atend)
+%%EndComments
+%%BeginProlog
+/m {moveto} def
+/l {lineto} def
+/s {stroke} def
+/n {newpath} def
+/c {closepath} def
+/RL {rlineto} def
+/SLW {setlinewidth} def
+/GS {gsave} def
+/GR {grestore} def
+/SC {setcolor} def
+/SGRY {setgray} def
+/SRGB {setrgbcolor} def
+/SD {setdash} def
+/SLC {setlinecap} def
+/SLJ {setlinejoin} def
+/SCS {setcolorspace} def
+/FFSF {findfont setfont} def
+/CC {concat} def
+/PXL {n m 0 0 RL s} def
+/Color0 {1.0000 1.0000 1.0000} def
+/Color1 {0.0000 0.0000 0.0000} def
+/Color2 {1.0000 0.0000 0.0000} def
+/Color3 {0.0000 1.0000 0.0000} def
+/Color4 {0.0000 0.0000 1.0000} def
+/Color5 {1.0000 1.0000 0.0000} def
+/Color6 {0.7373 0.5608 0.5608} def
+/Color7 {0.8627 0.8627 0.8627} def
+/Color8 {0.5804 0.0000 0.8275} def
+/Color9 {0.0000 1.0000 1.0000} def
+/Color10 {1.0000 0.0000 1.0000} def
+/Color11 {1.0000 0.6471 0.0000} def
+/Color12 {0.4471 0.1294 0.7373} def
+/Color13 {0.4039 0.0275 0.2824} def
+/Color14 {0.2510 0.8784 0.8157} def
+/Color15 {0.0000 0.5451 0.0000} def
+/PTRN {
+ /pat_bits exch def 
+ <<
+  /PaintType 2
+  /PatternType 1 /TilingType 1
+  /BBox[0 0 16 16]
+  /XStep 16 /YStep 16
+  /PaintProc {
+   pop
+   16 16 true [-1 0 0 -1 16 16] pat_bits imagemask
+  }
+ >>
+ [0.0016 0 0 0.0016 0 0]
+ makepattern
+} def
+/Pattern0 {<0000000000000000000000000000000000000000000000000000000000000000> PTRN} bind def
+/Pattern1 {<ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff> PTRN} bind def
+/Pattern2 {<eeeeffffbbbbffffeeeeffffbbbbffffeeeeffffbbbbffffeeeeffffbbbbffff> PTRN} bind def
+/Pattern3 {<eeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbb> PTRN} bind def
+/Pattern4 {<5555aaaa5555aaaa5555aaaa5555aaaa5555aaaa5555aaaa5555aaaa5555aaaa> PTRN} bind def
+/Pattern5 {<1111444411114444111144441111444411114444111144441111444411114444> PTRN} bind def
+/Pattern6 {<1111000044440000111100004444000011110000444400001111000044440000> PTRN} bind def
+/Pattern7 {<1010000000000000010100000000000010100000000000000101000000000000> PTRN} bind def
+/Pattern8 {<0000000000000000000000000000000000000000000000000000000000000000> PTRN} bind def
+/Pattern9 {<1e1e0f0f8787c3c3e1e1f0f078783c3c1e1e0f0f8787c3c3e1e1f0f078783c3c> PTRN} bind def
+/Pattern10 {<7878f0f0e1e1c3c387870f0f1e1e3c3c7878f0f0e1e1c3c387870f0f1e1e3c3c> PTRN} bind def
+/Pattern11 {<3333333333333333333333333333333333333333333333333333333333333333> PTRN} bind def
+/Pattern12 {<ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000> PTRN} bind def
+/Pattern13 {<8181424224241818181824244242818181814242242418181818242442428181> PTRN} bind def
+/Pattern14 {<8080404020201010080804040202010180804040202010100808040402020101> PTRN} bind def
+/Pattern15 {<0101020204040808101020204040808001010202040408081010202040408080> PTRN} bind def
+/Pattern16 {<2222222222222222222222222222222222222222222222222222222222222222> PTRN} bind def
+/Pattern17 {<0000ffff000000000000ffff000000000000ffff000000000000ffff00000000> PTRN} bind def
+/Pattern18 {<2222ffff222222222222ffff222222222222ffff222222222222ffff22222222> PTRN} bind def
+/Pattern19 {<ffffffff33333333ffffffff33333333ffffffff33333333ffffffff33333333> PTRN} bind def
+/Pattern20 {<0f0f0f0f0f0f0f0ff0f0f0f0f0f0f0f00f0f0f0f0f0f0f0ff0f0f0f0f0f0f0f0> PTRN} bind def
+/Pattern21 {<ff00ff00ff00ff00ff00ff00ff00ff0000ff00ff00ff00ff00ff00ff00ff00ff> PTRN} bind def
+/Pattern22 {<8001800180018001800180018001ffffffff8001800180018001800180018001> PTRN} bind def
+/Pattern23 {<c003c003c003c003c003c003ffffffffffffffffc003c003c003c003c003c003> PTRN} bind def
+/Pattern24 {<040404040404ffff404040404040ffff040404040404ffff404040404040ffff> PTRN} bind def
+/Pattern25 {<180018001800180018001800ffffffff001800180018001800180018ffffffff> PTRN} bind def
+/Pattern26 {<1111b8b87c7c3a3a1111a3a3c7c78b8b1111b8b87c7c3a3a1111a3a3c7c78b8b> PTRN} bind def
+/Pattern27 {<101010102828c7c70101010182827c7c101010102828c7c70101010182827c7c> PTRN} bind def
+/Pattern28 {<1c1c121211112121c1c12121111112121c1c121211112121c1c1212111111212> PTRN} bind def
+/Pattern29 {<3e3e414180808080e3e31414080808083e3e414180808080e3e3141408080808> PTRN} bind def
+/Pattern30 {<4848888884848383848488884848383848488888848483838484888848483838> PTRN} bind def
+/Pattern31 {<03030404080808080c0c12122121c0c003030404080808080c0c12122121c0c0> PTRN} bind def
+/ellipsedict 8 dict def
+ellipsedict /mtrx matrix put
+/EARC {
+ ellipsedict begin
+  /endangle exch def
+  /startangle exch def
+  /yrad exch def
+  /xrad exch def
+  /y exch def
+  /x exch def
+  /savematrix mtrx currentmatrix def
+  x y translate
+  xrad yrad scale
+  0 0 1 startangle endangle arc
+  savematrix setmatrix
+ end
+} def
+/TL {
+  /kcomp exch def
+  /linewidth exch def
+  /offset exch def
+  GS
+  0 offset rmoveto
+  linewidth SLW
+  dup stringwidth exch kcomp add exch RL s
+  GR
+} def
+/KINIT
+{
+ /kvector exch def
+ /kid 0 def
+} def
+/KPROC
+{
+ pop pop
+ kvector kid get
+ 0 rmoveto
+ /kid 1 kid add def
+} def
+/DefEncoding [
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /space
+ /exclam
+ /quotedbl
+ /numbersign
+ /dollar
+ /percent
+ /ampersand
+ /quoteright
+ /parenleft
+ /parenright
+ /asterisk
+ /plus
+ /comma
+ /hyphen
+ /period
+ /slash
+ /zero
+ /one
+ /two
+ /three
+ /four
+ /five
+ /six
+ /seven
+ /eight
+ /nine
+ /colon
+ /semicolon
+ /less
+ /equal
+ /greater
+ /question
+ /at
+ /A
+ /B
+ /C
+ /D
+ /E
+ /F
+ /G
+ /H
+ /I
+ /J
+ /K
+ /L
+ /M
+ /N
+ /O
+ /P
+ /Q
+ /R
+ /S
+ /T
+ /U
+ /V
+ /W
+ /X
+ /Y
+ /Z
+ /bracketleft
+ /backslash
+ /bracketright
+ /asciicircum
+ /underscore
+ /grave
+ /a
+ /b
+ /c
+ /d
+ /e
+ /f
+ /g
+ /h
+ /i
+ /j
+ /k
+ /l
+ /m
+ /n
+ /o
+ /p
+ /q
+ /r
+ /s
+ /t
+ /u
+ /v
+ /w
+ /x
+ /y
+ /z
+ /braceleft
+ /bar
+ /braceright
+ /asciitilde
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /space
+ /exclamdown
+ /cent
+ /sterling
+ /currency
+ /yen
+ /brokenbar
+ /section
+ /dieresis
+ /copyright
+ /ordfeminine
+ /guillemotleft
+ /logicalnot
+ /hyphen
+ /registered
+ /macron
+ /degree
+ /plusminus
+ /twosuperior
+ /threesuperior
+ /acute
+ /mu
+ /paragraph
+ /periodcentered
+ /cedilla
+ /onesuperior
+ /ordmasculine
+ /guillemotright
+ /onequarter
+ /onehalf
+ /threequarters
+ /questiondown
+ /Agrave
+ /Aacute
+ /Acircumflex
+ /Atilde
+ /Adieresis
+ /Aring
+ /AE
+ /Ccedilla
+ /Egrave
+ /Eacute
+ /Ecircumflex
+ /Edieresis
+ /Igrave
+ /Iacute
+ /Icircumflex
+ /Idieresis
+ /Eth
+ /Ntilde
+ /Ograve
+ /Oacute
+ /Ocircumflex
+ /Otilde
+ /Odieresis
+ /multiply
+ /Oslash
+ /Ugrave
+ /Uacute
+ /Ucircumflex
+ /Udieresis
+ /Yacute
+ /Thorn
+ /germandbls
+ /agrave
+ /aacute
+ /acircumflex
+ /atilde
+ /adieresis
+ /aring
+ /ae
+ /ccedilla
+ /egrave
+ /eacute
+ /ecircumflex
+ /edieresis
+ /igrave
+ /iacute
+ /icircumflex
+ /idieresis
+ /eth
+ /ntilde
+ /ograve
+ /oacute
+ /ocircumflex
+ /otilde
+ /odieresis
+ /divide
+ /oslash
+ /ugrave
+ /uacute
+ /ucircumflex
+ /udieresis
+ /yacute
+ /thorn
+ /ydieresis
+] def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+612.00 612.00 scale
+n
+0.0000 0.0000 m
+0.0000 1.0000 l
+1.2941 1.0000 l
+1.2941 0.0000 l
+c
+[/DeviceRGB] SCS
+Color0 SC
+fill
+[/DeviceRGB] SCS
+Color6 SC
+[0.0015 0.0045 ] 0 SD
+0.0015 SLW
+0 SLC
+0 SLJ
+n
+0.1955 0.1500 m
+0.1955 0.8500 l
+s
+n
+0.2409 0.1500 m
+0.2409 0.8500 l
+s
+n
+0.2864 0.1500 m
+0.2864 0.8500 l
+s
+n
+0.3318 0.1500 m
+0.3318 0.8500 l
+s
+n
+0.4227 0.1500 m
+0.4227 0.8500 l
+s
+n
+0.4682 0.1500 m
+0.4682 0.8500 l
+s
+n
+0.5136 0.1500 m
+0.5136 0.8500 l
+s
+n
+0.5591 0.1500 m
+0.5591 0.8500 l
+s
+n
+0.6500 0.1500 m
+0.6500 0.8500 l
+s
+n
+0.6955 0.1500 m
+0.6955 0.8500 l
+s
+n
+0.7409 0.1500 m
+0.7409 0.8500 l
+s
+n
+0.7864 0.1500 m
+0.7864 0.8500 l
+s
+n
+0.8773 0.1500 m
+0.8773 0.8500 l
+s
+n
+0.9227 0.1500 m
+0.9227 0.8500 l
+s
+n
+0.9682 0.1500 m
+0.9682 0.8500 l
+s
+n
+1.0136 0.1500 m
+1.0136 0.8500 l
+s
+n
+1.1045 0.1500 m
+1.1045 0.8500 l
+s
+n
+1.1500 0.1500 m
+1.1500 0.8500 l
+s
+[0.0075 0.0045 ] 0 SD
+0.0015 SLW
+n
+0.1500 0.1500 m
+0.1500 0.8500 l
+s
+n
+0.3773 0.1500 m
+0.3773 0.8500 l
+s
+n
+0.6045 0.1500 m
+0.6045 0.8500 l
+s
+n
+0.8318 0.1500 m
+0.8318 0.8500 l
+s
+n
+1.0591 0.1500 m
+1.0591 0.8500 l
+s
+[0.0015 0.0045 ] 0 SD
+0.0015 SLW
+n
+0.1500 0.1640 m
+1.1500 0.1640 l
+s
+n
+0.1500 0.1920 m
+1.1500 0.1920 l
+s
+n
+0.1500 0.2480 m
+1.1500 0.2480 l
+s
+n
+0.1500 0.2760 m
+1.1500 0.2760 l
+s
+n
+0.1500 0.3040 m
+1.1500 0.3040 l
+s
+n
+0.1500 0.3320 m
+1.1500 0.3320 l
+s
+n
+0.1500 0.3880 m
+1.1500 0.3880 l
+s
+n
+0.1500 0.4160 m
+1.1500 0.4160 l
+s
+n
+0.1500 0.4440 m
+1.1500 0.4440 l
+s
+n
+0.1500 0.4720 m
+1.1500 0.4720 l
+s
+n
+0.1500 0.5280 m
+1.1500 0.5280 l
+s
+n
+0.1500 0.5560 m
+1.1500 0.5560 l
+s
+n
+0.1500 0.5840 m
+1.1500 0.5840 l
+s
+n
+0.1500 0.6120 m
+1.1500 0.6120 l
+s
+n
+0.1500 0.6680 m
+1.1500 0.6680 l
+s
+n
+0.1500 0.6960 m
+1.1500 0.6960 l
+s
+n
+0.1500 0.7240 m
+1.1500 0.7240 l
+s
+n
+0.1500 0.7520 m
+1.1500 0.7520 l
+s
+n
+0.1500 0.8080 m
+1.1500 0.8080 l
+s
+n
+0.1500 0.8360 m
+1.1500 0.8360 l
+s
+[0.0075 0.0045 ] 0 SD
+0.0015 SLW
+n
+0.1500 0.2200 m
+1.1500 0.2200 l
+s
+n
+0.1500 0.3600 m
+1.1500 0.3600 l
+s
+n
+0.1500 0.5000 m
+1.1500 0.5000 l
+s
+n
+0.1500 0.6400 m
+1.1500 0.6400 l
+s
+n
+0.1500 0.7800 m
+1.1500 0.7800 l
+s
+[/DeviceRGB] SCS
+Color2 SC
+[] 0 SD
+0.0015 SLW
+n 0.1536 0.3815 0.0008 0.0008 0 360 EARC s
+n 0.1538 0.3918 0.0008 0.0008 0 360 EARC s
+n 0.1541 0.3815 0.0008 0.0008 0 360 EARC s
+n 0.1544 0.3815 0.0008 0.0008 0 360 EARC s
+n 0.1544 0.3918 0.0008 0.0008 0 360 EARC s
+n 0.1544 0.3918 0.0008 0.0008 0 360 EARC s
+n 0.1544 0.3918 0.0008 0.0008 0 360 EARC s
+n 0.1544 0.3918 0.0008 0.0008 0 360 EARC s
+n 0.1544 0.3918 0.0008 0.0008 0 360 EARC s
+n 0.1544 0.3918 0.0008 0.0008 0 360 EARC s
+n 0.1545 0.3918 0.0008 0.0008 0 360 EARC s
+n 0.1548 0.3815 0.0008 0.0008 0 360 EARC s
+n 0.1548 0.3919 0.0008 0.0008 0 360 EARC s
+n 0.1552 0.3919 0.0008 0.0008 0 360 EARC s
+n 0.1552 0.3919 0.0008 0.0008 0 360 EARC s
+n 0.1554 0.3919 0.0008 0.0008 0 360 EARC s
+n 0.1556 0.3815 0.0008 0.0008 0 360 EARC s
+n 0.1576 0.3919 0.0008 0.0008 0 360 EARC s
+n 0.1576 0.3919 0.0008 0.0008 0 360 EARC s
+n 0.1577 0.3920 0.0008 0.0008 0 360 EARC s
+n 0.1577 0.3815 0.0008 0.0008 0 360 EARC s
+n 0.1578 0.3920 0.0008 0.0008 0 360 EARC s
+n 0.1578 0.3920 0.0008 0.0008 0 360 EARC s
+n 0.1579 0.3815 0.0008 0.0008 0 360 EARC s
+n 0.1579 0.3920 0.0008 0.0008 0 360 EARC s
+n 0.1579 0.3920 0.0008 0.0008 0 360 EARC s
+n 0.1579 0.3920 0.0008 0.0008 0 360 EARC s
+n 0.1580 0.3920 0.0008 0.0008 0 360 EARC s
+n 0.1580 0.3920 0.0008 0.0008 0 360 EARC s
+n 0.1581 0.3815 0.0008 0.0008 0 360 EARC s
+n 0.1582 0.3920 0.0008 0.0008 0 360 EARC s
+n 0.1585 0.3920 0.0008 0.0008 0 360 EARC s
+n 0.1585 0.3920 0.0008 0.0008 0 360 EARC s
+n 0.1586 0.3920 0.0008 0.0008 0 360 EARC s
+n 0.1587 0.3921 0.0008 0.0008 0 360 EARC s
+n 0.1587 0.3815 0.0008 0.0008 0 360 EARC s
+n 0.1587 0.3921 0.0008 0.0008 0 360 EARC s
+n 0.1588 0.3921 0.0008 0.0008 0 360 EARC s
+n 0.1588 0.3921 0.0008 0.0008 0 360 EARC s
+n 0.1589 0.3921 0.0008 0.0008 0 360 EARC s
+n 0.1589 0.3921 0.0008 0.0008 0 360 EARC s
+n 0.1610 0.3815 0.0008 0.0008 0 360 EARC s
+n 0.1610 0.3921 0.0008 0.0008 0 360 EARC s
+n 0.1610 0.3921 0.0008 0.0008 0 360 EARC s
+n 0.1611 0.3998 0.0008 0.0008 0 360 EARC s
+n 0.1612 0.4101 0.0008 0.0008 0 360 EARC s
+n 0.1615 0.3998 0.0008 0.0008 0 360 EARC s
+n 0.1616 0.3998 0.0008 0.0008 0 360 EARC s
+n 0.1616 0.4101 0.0008 0.0008 0 360 EARC s
+n 0.1616 0.4101 0.0008 0.0008 0 360 EARC s
+n 0.1621 0.3921 0.0008 0.0008 0 360 EARC s
+n 0.1621 0.3921 0.0008 0.0008 0 360 EARC s
+n 0.1622 0.3814 0.0008 0.0008 0 360 EARC s
+n 0.1622 0.3921 0.0008 0.0008 0 360 EARC s
+n 0.1622 0.3922 0.0008 0.0008 0 360 EARC s
+n 0.1625 0.3922 0.0008 0.0008 0 360 EARC s
+n 0.1626 0.3814 0.0008 0.0008 0 360 EARC s
+n 0.1626 0.3922 0.0008 0.0008 0 360 EARC s
+n 0.1629 0.3814 0.0008 0.0008 0 360 EARC s
+n 0.1629 0.3922 0.0008 0.0008 0 360 EARC s
+n 0.1630 0.3922 0.0008 0.0008 0 360 EARC s
+n 0.1630 0.4101 0.0008 0.0008 0 360 EARC s
+n 0.1650 0.3922 0.0008 0.0008 0 360 EARC s
+n 0.1651 0.3814 0.0008 0.0008 0 360 EARC s
+n 0.1653 0.3923 0.0008 0.0008 0 360 EARC s
+n 0.1654 0.4101 0.0008 0.0008 0 360 EARC s
+n 0.1655 0.3998 0.0008 0.0008 0 360 EARC s
+n 0.1655 0.4102 0.0008 0.0008 0 360 EARC s
+n 0.1655 0.3814 0.0008 0.0008 0 360 EARC s
+n 0.1656 0.3923 0.0008 0.0008 0 360 EARC s
+n 0.1656 0.3923 0.0008 0.0008 0 360 EARC s
+n 0.1656 0.3923 0.0008 0.0008 0 360 EARC s
+n 0.1657 0.3923 0.0008 0.0008 0 360 EARC s
+n 0.1658 0.3923 0.0008 0.0008 0 360 EARC s
+n 0.1658 0.3814 0.0008 0.0008 0 360 EARC s
+n 0.1660 0.3923 0.0008 0.0008 0 360 EARC s
+n 0.1661 0.3923 0.0008 0.0008 0 360 EARC s
+n 0.1662 0.3814 0.0008 0.0008 0 360 EARC s
+n 0.1684 0.3924 0.0008 0.0008 0 360 EARC s
+n 0.1685 0.3924 0.0008 0.0008 0 360 EARC s
+n 0.1686 0.3924 0.0008 0.0008 0 360 EARC s
+n 0.1688 0.3814 0.0008 0.0008 0 360 EARC s
+n 0.1688 0.3924 0.0008 0.0008 0 360 EARC s
+n 0.1689 0.3924 0.0008 0.0008 0 360 EARC s
+n 0.1690 0.3925 0.0008 0.0008 0 360 EARC s
+n 0.1690 0.3925 0.0008 0.0008 0 360 EARC s
+n 0.1691 0.3925 0.0008 0.0008 0 360 EARC s
+n 0.1691 0.3925 0.0008 0.0008 0 360 EARC s
+n 0.1692 0.3814 0.0008 0.0008 0 360 EARC s
+n 0.1693 0.3925 0.0008 0.0008 0 360 EARC s
+n 0.1695 0.3925 0.0008 0.0008 0 360 EARC s
+n 0.1717 0.3814 0.0008 0.0008 0 360 EARC s
+n 0.1720 0.3814 0.0008 0.0008 0 360 EARC s
+n 0.1724 0.3814 0.0008 0.0008 0 360 EARC s
+n 0.1724 0.3926 0.0008 0.0008 0 360 EARC s
+n 0.1725 0.3926 0.0008 0.0008 0 360 EARC s
+n 0.1726 0.3926 0.0008 0.0008 0 360 EARC s
+n 0.1727 0.3927 0.0008 0.0008 0 360 EARC s
+n 0.1727 0.3814 0.0008 0.0008 0 360 EARC s
+n 0.1727 0.3927 0.0008 0.0008 0 360 EARC s
+n 0.1750 0.3927 0.0008 0.0008 0 360 EARC s
+n 0.1750 0.3927 0.0008 0.0008 0 360 EARC s
+n 0.1752 0.3927 0.0008 0.0008 0 360 EARC s
+n 0.1752 0.3814 0.0008 0.0008 0 360 EARC s
+n 0.1752 0.3927 0.0008 0.0008 0 360 EARC s
+n 0.1755 0.3927 0.0008 0.0008 0 360 EARC s
+n 0.1755 0.3928 0.0008 0.0008 0 360 EARC s
+n 0.1757 0.3814 0.0008 0.0008 0 360 EARC s
+n 0.1758 0.3928 0.0008 0.0008 0 360 EARC s
+n 0.1759 0.3928 0.0008 0.0008 0 360 EARC s
+n 0.1778 0.3928 0.0008 0.0008 0 360 EARC s
+n 0.1780 0.3929 0.0008 0.0008 0 360 EARC s
+n 0.1781 0.3929 0.0008 0.0008 0 360 EARC s
+n 0.1781 0.3814 0.0008 0.0008 0 360 EARC s
+n 0.1781 0.3929 0.0008 0.0008 0 360 EARC s
+n 0.1781 0.4101 0.0008 0.0008 0 360 EARC s
+n 0.1782 0.4101 0.0008 0.0008 0 360 EARC s
+n 0.1783 0.3998 0.0008 0.0008 0 360 EARC s
+n 0.1783 0.4102 0.0008 0.0008 0 360 EARC s
+n 0.1783 0.4102 0.0008 0.0008 0 360 EARC s
+n 0.1786 0.4102 0.0008 0.0008 0 360 EARC s
+n 0.1788 0.3998 0.0008 0.0008 0 360 EARC s
+n 0.1788 0.4102 0.0008 0.0008 0 360 EARC s
+n 0.1810 0.4102 0.0008 0.0008 0 360 EARC s
+n 0.1810 0.3929 0.0008 0.0008 0 360 EARC s
+n 0.1811 0.3929 0.0008 0.0008 0 360 EARC s
+n 0.1812 0.3929 0.0008 0.0008 0 360 EARC s
+n 0.1812 0.3814 0.0008 0.0008 0 360 EARC s
+n 0.1812 0.3929 0.0008 0.0008 0 360 EARC s
+n 0.1816 0.3929 0.0008 0.0008 0 360 EARC s
+n 0.1816 0.3929 0.0008 0.0008 0 360 EARC s
+n 0.1817 0.3929 0.0008 0.0008 0 360 EARC s
+n 0.1817 0.3814 0.0008 0.0008 0 360 EARC s
+n 0.1818 0.3930 0.0008 0.0008 0 360 EARC s
+n 0.1819 0.3930 0.0008 0.0008 0 360 EARC s
+n 0.1820 0.3814 0.0008 0.0008 0 360 EARC s
+n 0.1820 0.3930 0.0008 0.0008 0 360 EARC s
+n 0.1824 0.3930 0.0008 0.0008 0 360 EARC s
+n 0.1824 0.3930 0.0008 0.0008 0 360 EARC s
+n 0.1824 0.4102 0.0008 0.0008 0 360 EARC s
+n 0.1824 0.3814 0.0008 0.0008 0 360 EARC s
+n 0.1824 0.3930 0.0008 0.0008 0 360 EARC s
+n 0.1824 0.3930 0.0008 0.0008 0 360 EARC s
+n 0.1825 0.3930 0.0008 0.0008 0 360 EARC s
+n 0.1825 0.3930 0.0008 0.0008 0 360 EARC s
+n 0.1841 0.3930 0.0008 0.0008 0 360 EARC s
+n 0.1842 0.3930 0.0008 0.0008 0 360 EARC s
+n 0.1842 0.4102 0.0008 0.0008 0 360 EARC s
+n 0.1843 0.4102 0.0008 0.0008 0 360 EARC s
+n 0.1843 0.3998 0.0008 0.0008 0 360 EARC s
+n 0.1845 0.4102 0.0008 0.0008 0 360 EARC s
+n 0.1845 0.4102 0.0008 0.0008 0 360 EARC s
+n 0.1847 0.3998 0.0008 0.0008 0 360 EARC s
+n 0.1850 0.4103 0.0008 0.0008 0 360 EARC s
+n 0.1852 0.3998 0.0008 0.0008 0 360 EARC s
+n 0.1869 0.4104 0.0008 0.0008 0 360 EARC s
+n 0.1869 0.3998 0.0008 0.0008 0 360 EARC s
+n 0.1871 0.3998 0.0008 0.0008 0 360 EARC s
+n 0.1872 0.4104 0.0008 0.0008 0 360 EARC s
+n 0.1873 0.4104 0.0008 0.0008 0 360 EARC s
+n 0.1873 0.4104 0.0008 0.0008 0 360 EARC s
+n 0.1873 0.4105 0.0008 0.0008 0 360 EARC s
+n 0.1874 0.3998 0.0008 0.0008 0 360 EARC s
+n 0.1874 0.4105 0.0008 0.0008 0 360 EARC s
+n 0.1876 0.4105 0.0008 0.0008 0 360 EARC s
+n 0.1877 0.4105 0.0008 0.0008 0 360 EARC s
+n 0.1877 0.4105 0.0008 0.0008 0 360 EARC s
+n 0.1877 0.3998 0.0008 0.0008 0 360 EARC s
+n 0.1878 0.4105 0.0008 0.0008 0 360 EARC s
+n 0.1889 0.3998 0.0008 0.0008 0 360 EARC s
+n 0.1896 0.3998 0.0008 0.0008 0 360 EARC s
+n 0.1913 0.4107 0.0008 0.0008 0 360 EARC s
+n 0.1915 0.3998 0.0008 0.0008 0 360 EARC s
+n 0.1917 0.4107 0.0008 0.0008 0 360 EARC s
+n 0.1918 0.3998 0.0008 0.0008 0 360 EARC s
+n 0.1919 0.3998 0.0008 0.0008 0 360 EARC s
+n 0.1920 0.4108 0.0008 0.0008 0 360 EARC s
+n 0.1920 0.4108 0.0008 0.0008 0 360 EARC s
+n 0.1921 0.3998 0.0008 0.0008 0 360 EARC s
+n 0.1922 0.4108 0.0008 0.0008 0 360 EARC s
+n 0.1924 0.4108 0.0008 0.0008 0 360 EARC s
+n 0.1924 0.4108 0.0008 0.0008 0 360 EARC s
+n 0.1924 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.1925 0.4108 0.0008 0.0008 0 360 EARC s
+n 0.1925 0.4108 0.0008 0.0008 0 360 EARC s
+n 0.1925 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.1925 0.4108 0.0008 0.0008 0 360 EARC s
+n 0.1926 0.4108 0.0008 0.0008 0 360 EARC s
+n 0.1926 0.4108 0.0008 0.0008 0 360 EARC s
+n 0.1928 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.1941 0.4109 0.0008 0.0008 0 360 EARC s
+n 0.1941 0.4109 0.0008 0.0008 0 360 EARC s
+n 0.1941 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.1941 0.4109 0.0008 0.0008 0 360 EARC s
+n 0.1942 0.4109 0.0008 0.0008 0 360 EARC s
+n 0.1943 0.4109 0.0008 0.0008 0 360 EARC s
+n 0.1944 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.1944 0.4109 0.0008 0.0008 0 360 EARC s
+n 0.1944 0.4109 0.0008 0.0008 0 360 EARC s
+n 0.1945 0.4109 0.0008 0.0008 0 360 EARC s
+n 0.1946 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.1946 0.4109 0.0008 0.0008 0 360 EARC s
+n 0.1950 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.1950 0.4110 0.0008 0.0008 0 360 EARC s
+n 0.1951 0.4110 0.0008 0.0008 0 360 EARC s
+n 0.1953 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.1953 0.4110 0.0008 0.0008 0 360 EARC s
+n 0.1954 0.4110 0.0008 0.0008 0 360 EARC s
+n 0.1955 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.1971 0.4111 0.0008 0.0008 0 360 EARC s
+n 0.1972 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.1972 0.4111 0.0008 0.0008 0 360 EARC s
+n 0.1972 0.4111 0.0008 0.0008 0 360 EARC s
+n 0.1974 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.1976 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.1977 0.4111 0.0008 0.0008 0 360 EARC s
+n 0.1979 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.1980 0.4112 0.0008 0.0008 0 360 EARC s
+n 0.1982 0.4112 0.0008 0.0008 0 360 EARC s
+n 0.1982 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.1982 0.4112 0.0008 0.0008 0 360 EARC s
+n 0.1983 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.2000 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.2001 0.4113 0.0008 0.0008 0 360 EARC s
+n 0.2002 0.4113 0.0008 0.0008 0 360 EARC s
+n 0.2003 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.2003 0.4113 0.0008 0.0008 0 360 EARC s
+n 0.2005 0.4113 0.0008 0.0008 0 360 EARC s
+n 0.2005 0.4113 0.0008 0.0008 0 360 EARC s
+n 0.2006 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.2006 0.4113 0.0008 0.0008 0 360 EARC s
+n 0.2007 0.4113 0.0008 0.0008 0 360 EARC s
+n 0.2008 0.4114 0.0008 0.0008 0 360 EARC s
+n 0.2008 0.4114 0.0008 0.0008 0 360 EARC s
+n 0.2008 0.4114 0.0008 0.0008 0 360 EARC s
+n 0.2009 0.4114 0.0008 0.0008 0 360 EARC s
+n 0.2009 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.2026 0.4114 0.0008 0.0008 0 360 EARC s
+n 0.2026 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.2028 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.2028 0.4114 0.0008 0.0008 0 360 EARC s
+n 0.2030 0.4114 0.0008 0.0008 0 360 EARC s
+n 0.2030 0.4114 0.0008 0.0008 0 360 EARC s
+n 0.2030 0.3997 0.0008 0.0008 0 360 EARC s
+n 0.2031 0.4115 0.0008 0.0008 0 360 EARC s
+n 0.2033 0.4115 0.0008 0.0008 0 360 EARC s
+n 0.2033 0.4115 0.0008 0.0008 0 360 EARC s
+n 0.2034 0.4181 0.0008 0.0008 0 360 EARC s
+n 0.2035 0.4284 0.0008 0.0008 0 360 EARC s
+n 0.2038 0.4181 0.0008 0.0008 0 360 EARC s
+n 0.2039 0.4181 0.0008 0.0008 0 360 EARC s
+n 0.2039 0.4284 0.0008 0.0008 0 360 EARC s
+n 0.2039 0.4364 0.0008 0.0008 0 360 EARC s
+n 0.2044 0.4467 0.0008 0.0008 0 360 EARC s
+n 0.2046 0.4364 0.0008 0.0008 0 360 EARC s
+n 0.2048 0.4364 0.0008 0.0008 0 360 EARC s
+n 0.2048 0.4467 0.0008 0.0008 0 360 EARC s
+n 0.2048 0.4467 0.0008 0.0008 0 360 EARC s
+n 0.2052 0.4467 0.0008 0.0008 0 360 EARC s
+n 0.2053 0.4468 0.0008 0.0008 0 360 EARC s
+n 0.2053 0.4364 0.0008 0.0008 0 360 EARC s
+n 0.2054 0.4468 0.0008 0.0008 0 360 EARC s
+n 0.2056 0.4364 0.0008 0.0008 0 360 EARC s
+n 0.2056 0.4468 0.0008 0.0008 0 360 EARC s
+n 0.2056 0.4468 0.0008 0.0008 0 360 EARC s
+n 0.2056 0.4468 0.0008 0.0008 0 360 EARC s
+n 0.2070 0.4468 0.0008 0.0008 0 360 EARC s
+n 0.2070 0.4468 0.0008 0.0008 0 360 EARC s
+n 0.2070 0.4468 0.0008 0.0008 0 360 EARC s
+n 0.2070 0.4364 0.0008 0.0008 0 360 EARC s
+n 0.2070 0.4468 0.0008 0.0008 0 360 EARC s
+n 0.2071 0.4468 0.0008 0.0008 0 360 EARC s
+n 0.2072 0.4468 0.0008 0.0008 0 360 EARC s
+n 0.2074 0.4469 0.0008 0.0008 0 360 EARC s
+n 0.2075 0.4364 0.0008 0.0008 0 360 EARC s
+n 0.2075 0.4469 0.0008 0.0008 0 360 EARC s
+n 0.2078 0.4469 0.0008 0.0008 0 360 EARC s
+n 0.2078 0.4469 0.0008 0.0008 0 360 EARC s
+n 0.2079 0.4469 0.0008 0.0008 0 360 EARC s
+n 0.2079 0.4469 0.0008 0.0008 0 360 EARC s
+n 0.2079 0.4364 0.0008 0.0008 0 360 EARC s
+n 0.2079 0.4469 0.0008 0.0008 0 360 EARC s
+n 0.2079 0.4469 0.0008 0.0008 0 360 EARC s
+n 0.2079 0.4469 0.0008 0.0008 0 360 EARC s
+n 0.2080 0.4469 0.0008 0.0008 0 360 EARC s
+n 0.2080 0.4469 0.0008 0.0008 0 360 EARC s
+n 0.2081 0.4364 0.0008 0.0008 0 360 EARC s
+n 0.2081 0.4470 0.0008 0.0008 0 360 EARC s
+n 0.2098 0.4470 0.0008 0.0008 0 360 EARC s
+n 0.2099 0.4470 0.0008 0.0008 0 360 EARC s
+n 0.2100 0.4364 0.0008 0.0008 0 360 EARC s
+n 0.2100 0.4470 0.0008 0.0008 0 360 EARC s
+n 0.2101 0.4470 0.0008 0.0008 0 360 EARC s
+n 0.2101 0.4470 0.0008 0.0008 0 360 EARC s
+n 0.2101 0.4470 0.0008 0.0008 0 360 EARC s
+n 0.2101 0.4470 0.0008 0.0008 0 360 EARC s
+n 0.2102 0.4364 0.0008 0.0008 0 360 EARC s
+n 0.2103 0.4470 0.0008 0.0008 0 360 EARC s
+n 0.2105 0.4364 0.0008 0.0008 0 360 EARC s
+n 0.2106 0.4471 0.0008 0.0008 0 360 EARC s
+n 0.2108 0.4471 0.0008 0.0008 0 360 EARC s
+n 0.2108 0.4364 0.0008 0.0008 0 360 EARC s
+n 0.2109 0.4471 0.0008 0.0008 0 360 EARC s
+n 0.2109 0.4471 0.0008 0.0008 0 360 EARC s
+n 0.2109 0.4471 0.0008 0.0008 0 360 EARC s
+n 0.2109 0.4471 0.0008 0.0008 0 360 EARC s
+n 0.2110 0.4364 0.0008 0.0008 0 360 EARC s
+n 0.2110 0.4471 0.0008 0.0008 0 360 EARC s
+n 0.2114 0.4471 0.0008 0.0008 0 360 EARC s
+n 0.2114 0.4471 0.0008 0.0008 0 360 EARC s
+n 0.2114 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2115 0.4651 0.0008 0.0008 0 360 EARC s
+n 0.2117 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2118 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2118 0.4651 0.0008 0.0008 0 360 EARC s
+n 0.2128 0.4651 0.0008 0.0008 0 360 EARC s
+n 0.2130 0.4651 0.0008 0.0008 0 360 EARC s
+n 0.2130 0.4651 0.0008 0.0008 0 360 EARC s
+n 0.2130 0.4651 0.0008 0.0008 0 360 EARC s
+n 0.2131 0.4651 0.0008 0.0008 0 360 EARC s
+n 0.2131 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2131 0.4651 0.0008 0.0008 0 360 EARC s
+n 0.2134 0.4651 0.0008 0.0008 0 360 EARC s
+n 0.2134 0.4651 0.0008 0.0008 0 360 EARC s
+n 0.2134 0.4651 0.0008 0.0008 0 360 EARC s
+n 0.2134 0.4651 0.0008 0.0008 0 360 EARC s
+n 0.2134 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2134 0.4651 0.0008 0.0008 0 360 EARC s
+n 0.2135 0.4651 0.0008 0.0008 0 360 EARC s
+n 0.2135 0.4651 0.0008 0.0008 0 360 EARC s
+n 0.2137 0.4651 0.0008 0.0008 0 360 EARC s
+n 0.2138 0.4651 0.0008 0.0008 0 360 EARC s
+n 0.2138 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2141 0.4652 0.0008 0.0008 0 360 EARC s
+n 0.2141 0.4652 0.0008 0.0008 0 360 EARC s
+n 0.2142 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2161 0.4652 0.0008 0.0008 0 360 EARC s
+n 0.2162 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2167 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2168 0.4653 0.0008 0.0008 0 360 EARC s
+n 0.2168 0.4653 0.0008 0.0008 0 360 EARC s
+n 0.2169 0.4653 0.0008 0.0008 0 360 EARC s
+n 0.2169 0.4653 0.0008 0.0008 0 360 EARC s
+n 0.2169 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2169 0.4653 0.0008 0.0008 0 360 EARC s
+n 0.2171 0.4653 0.0008 0.0008 0 360 EARC s
+n 0.2172 0.4654 0.0008 0.0008 0 360 EARC s
+n 0.2172 0.4654 0.0008 0.0008 0 360 EARC s
+n 0.2187 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2190 0.4654 0.0008 0.0008 0 360 EARC s
+n 0.2191 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2191 0.4654 0.0008 0.0008 0 360 EARC s
+n 0.2195 0.4655 0.0008 0.0008 0 360 EARC s
+n 0.2195 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2195 0.4655 0.0008 0.0008 0 360 EARC s
+n 0.2195 0.4655 0.0008 0.0008 0 360 EARC s
+n 0.2195 0.4655 0.0008 0.0008 0 360 EARC s
+n 0.2197 0.4655 0.0008 0.0008 0 360 EARC s
+n 0.2197 0.4655 0.0008 0.0008 0 360 EARC s
+n 0.2198 0.4731 0.0008 0.0008 0 360 EARC s
+n 0.2200 0.4834 0.0008 0.0008 0 360 EARC s
+n 0.2202 0.4731 0.0008 0.0008 0 360 EARC s
+n 0.2203 0.4731 0.0008 0.0008 0 360 EARC s
+n 0.2203 0.4834 0.0008 0.0008 0 360 EARC s
+n 0.2204 0.4834 0.0008 0.0008 0 360 EARC s
+n 0.2205 0.4834 0.0008 0.0008 0 360 EARC s
+n 0.2205 0.4834 0.0008 0.0008 0 360 EARC s
+n 0.2205 0.4834 0.0008 0.0008 0 360 EARC s
+n 0.2215 0.4731 0.0008 0.0008 0 360 EARC s
+n 0.2216 0.4834 0.0008 0.0008 0 360 EARC s
+n 0.2217 0.4655 0.0008 0.0008 0 360 EARC s
+n 0.2217 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2218 0.4655 0.0008 0.0008 0 360 EARC s
+n 0.2220 0.4656 0.0008 0.0008 0 360 EARC s
+n 0.2221 0.4656 0.0008 0.0008 0 360 EARC s
+n 0.2222 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2224 0.4656 0.0008 0.0008 0 360 EARC s
+n 0.2246 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2246 0.4657 0.0008 0.0008 0 360 EARC s
+n 0.2247 0.4657 0.0008 0.0008 0 360 EARC s
+n 0.2249 0.4657 0.0008 0.0008 0 360 EARC s
+n 0.2249 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2251 0.4657 0.0008 0.0008 0 360 EARC s
+n 0.2253 0.4657 0.0008 0.0008 0 360 EARC s
+n 0.2253 0.4657 0.0008 0.0008 0 360 EARC s
+n 0.2254 0.4657 0.0008 0.0008 0 360 EARC s
+n 0.2254 0.4657 0.0008 0.0008 0 360 EARC s
+n 0.2254 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2254 0.4657 0.0008 0.0008 0 360 EARC s
+n 0.2257 0.4657 0.0008 0.0008 0 360 EARC s
+n 0.2257 0.4657 0.0008 0.0008 0 360 EARC s
+n 0.2257 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2258 0.4658 0.0008 0.0008 0 360 EARC s
+n 0.2272 0.4658 0.0008 0.0008 0 360 EARC s
+n 0.2272 0.4658 0.0008 0.0008 0 360 EARC s
+n 0.2273 0.4658 0.0008 0.0008 0 360 EARC s
+n 0.2275 0.4658 0.0008 0.0008 0 360 EARC s
+n 0.2276 0.4658 0.0008 0.0008 0 360 EARC s
+n 0.2276 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2276 0.4658 0.0008 0.0008 0 360 EARC s
+n 0.2280 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2280 0.4659 0.0008 0.0008 0 360 EARC s
+n 0.2281 0.4659 0.0008 0.0008 0 360 EARC s
+n 0.2281 0.4659 0.0008 0.0008 0 360 EARC s
+n 0.2282 0.4659 0.0008 0.0008 0 360 EARC s
+n 0.2283 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2283 0.4659 0.0008 0.0008 0 360 EARC s
+n 0.2286 0.4659 0.0008 0.0008 0 360 EARC s
+n 0.2287 0.4659 0.0008 0.0008 0 360 EARC s
+n 0.2287 0.4659 0.0008 0.0008 0 360 EARC s
+n 0.2287 0.4659 0.0008 0.0008 0 360 EARC s
+n 0.2287 0.4659 0.0008 0.0008 0 360 EARC s
+n 0.2287 0.4659 0.0008 0.0008 0 360 EARC s
+n 0.2287 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2287 0.4659 0.0008 0.0008 0 360 EARC s
+n 0.2288 0.4659 0.0008 0.0008 0 360 EARC s
+n 0.2288 0.4659 0.0008 0.0008 0 360 EARC s
+n 0.2303 0.4659 0.0008 0.0008 0 360 EARC s
+n 0.2303 0.4659 0.0008 0.0008 0 360 EARC s
+n 0.2303 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2305 0.4660 0.0008 0.0008 0 360 EARC s
+n 0.2307 0.4660 0.0008 0.0008 0 360 EARC s
+n 0.2308 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2311 0.4660 0.0008 0.0008 0 360 EARC s
+n 0.2311 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2311 0.4661 0.0008 0.0008 0 360 EARC s
+n 0.2313 0.4661 0.0008 0.0008 0 360 EARC s
+n 0.2314 0.4661 0.0008 0.0008 0 360 EARC s
+n 0.2328 0.4661 0.0008 0.0008 0 360 EARC s
+n 0.2329 0.4661 0.0008 0.0008 0 360 EARC s
+n 0.2330 0.4661 0.0008 0.0008 0 360 EARC s
+n 0.2331 0.4661 0.0008 0.0008 0 360 EARC s
+n 0.2333 0.4662 0.0008 0.0008 0 360 EARC s
+n 0.2353 0.4663 0.0008 0.0008 0 360 EARC s
+n 0.2354 0.4663 0.0008 0.0008 0 360 EARC s
+n 0.2355 0.4663 0.0008 0.0008 0 360 EARC s
+n 0.2375 0.4664 0.0008 0.0008 0 360 EARC s
+n 0.2377 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2377 0.4664 0.0008 0.0008 0 360 EARC s
+n 0.2381 0.4664 0.0008 0.0008 0 360 EARC s
+n 0.2381 0.4664 0.0008 0.0008 0 360 EARC s
+n 0.2381 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2383 0.4665 0.0008 0.0008 0 360 EARC s
+n 0.2385 0.4665 0.0008 0.0008 0 360 EARC s
+n 0.2385 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2385 0.4665 0.0008 0.0008 0 360 EARC s
+n 0.2389 0.4665 0.0008 0.0008 0 360 EARC s
+n 0.2389 0.4665 0.0008 0.0008 0 360 EARC s
+n 0.2389 0.4665 0.0008 0.0008 0 360 EARC s
+n 0.2399 0.4665 0.0008 0.0008 0 360 EARC s
+n 0.2399 0.4547 0.0008 0.0008 0 360 EARC s
+n 0.2400 0.4665 0.0008 0.0008 0 360 EARC s
+n 0.2400 0.4665 0.0008 0.0008 0 360 EARC s
+n 0.2400 0.4834 0.0008 0.0008 0 360 EARC s
+n 0.2401 0.4834 0.0008 0.0008 0 360 EARC s
+n 0.2401 0.4834 0.0008 0.0008 0 360 EARC s
+n 0.2402 0.4730 0.0008 0.0008 0 360 EARC s
+n 0.2405 0.4834 0.0008 0.0008 0 360 EARC s
+n 0.2405 0.4834 0.0008 0.0008 0 360 EARC s
+n 0.2406 0.4834 0.0008 0.0008 0 360 EARC s
+n 0.2406 0.4914 0.0008 0.0008 0 360 EARC s
+n 0.2410 0.5017 0.0008 0.0008 0 360 EARC s
+n 0.2411 0.4914 0.0008 0.0008 0 360 EARC s
+n 0.2414 0.4914 0.0008 0.0008 0 360 EARC s
+n 0.2414 0.5017 0.0008 0.0008 0 360 EARC s
+n 0.2414 0.5017 0.0008 0.0008 0 360 EARC s
+n 0.2414 0.5017 0.0008 0.0008 0 360 EARC s
+n 0.2414 0.5017 0.0008 0.0008 0 360 EARC s
+n 0.2414 0.5017 0.0008 0.0008 0 360 EARC s
+n 0.2414 0.5017 0.0008 0.0008 0 360 EARC s
+n 0.2415 0.5017 0.0008 0.0008 0 360 EARC s
+n 0.2415 0.5017 0.0008 0.0008 0 360 EARC s
+n 0.2415 0.4914 0.0008 0.0008 0 360 EARC s
+n 0.2415 0.5017 0.0008 0.0008 0 360 EARC s
+n 0.2415 0.5017 0.0008 0.0008 0 360 EARC s
+n 0.2415 0.5017 0.0008 0.0008 0 360 EARC s
+n 0.2419 0.5017 0.0008 0.0008 0 360 EARC s
+n 0.2420 0.5017 0.0008 0.0008 0 360 EARC s
+n 0.2420 0.5017 0.0008 0.0008 0 360 EARC s
+n 0.2421 0.4914 0.0008 0.0008 0 360 EARC s
+n 0.2421 0.5018 0.0008 0.0008 0 360 EARC s
+n 0.2423 0.4834 0.0008 0.0008 0 360 EARC s
+n 0.2423 0.4834 0.0008 0.0008 0 360 EARC s
+n 0.2425 0.4730 0.0008 0.0008 0 360 EARC s
+n 0.2425 0.4835 0.0008 0.0008 0 360 EARC s
+n 0.2429 0.5018 0.0008 0.0008 0 360 EARC s
+n 0.2432 0.5018 0.0008 0.0008 0 360 EARC s
+n 0.2434 0.5018 0.0008 0.0008 0 360 EARC s
+n 0.2434 0.4914 0.0008 0.0008 0 360 EARC s
+n 0.2434 0.5018 0.0008 0.0008 0 360 EARC s
+n 0.2437 0.5018 0.0008 0.0008 0 360 EARC s
+n 0.2438 0.5018 0.0008 0.0008 0 360 EARC s
+n 0.2438 0.5018 0.0008 0.0008 0 360 EARC s
+n 0.2438 0.5018 0.0008 0.0008 0 360 EARC s
+n 0.2438 0.5018 0.0008 0.0008 0 360 EARC s
+n 0.2438 0.5018 0.0008 0.0008 0 360 EARC s
+n 0.2438 0.5097 0.0008 0.0008 0 360 EARC s
+n 0.2439 0.5200 0.0008 0.0008 0 360 EARC s
+n 0.2441 0.5097 0.0008 0.0008 0 360 EARC s
+n 0.2444 0.5097 0.0008 0.0008 0 360 EARC s
+n 0.2444 0.5200 0.0008 0.0008 0 360 EARC s
+n 0.2445 0.5200 0.0008 0.0008 0 360 EARC s
+n 0.2445 0.5200 0.0008 0.0008 0 360 EARC s
+n 0.2445 0.5097 0.0008 0.0008 0 360 EARC s
+n 0.2467 0.5097 0.0008 0.0008 0 360 EARC s
+n 0.2468 0.5202 0.0008 0.0008 0 360 EARC s
+n 0.2470 0.5202 0.0008 0.0008 0 360 EARC s
+n 0.2471 0.5202 0.0008 0.0008 0 360 EARC s
+n 0.2471 0.5202 0.0008 0.0008 0 360 EARC s
+n 0.2471 0.5202 0.0008 0.0008 0 360 EARC s
+n 0.2471 0.5097 0.0008 0.0008 0 360 EARC s
+n 0.2472 0.4834 0.0008 0.0008 0 360 EARC s
+n 0.2472 0.5202 0.0008 0.0008 0 360 EARC s
+n 0.2474 0.5202 0.0008 0.0008 0 360 EARC s
+n 0.2474 0.5202 0.0008 0.0008 0 360 EARC s
+n 0.2474 0.5280 0.0008 0.0008 0 360 EARC s
+n 0.2475 0.5384 0.0008 0.0008 0 360 EARC s
+n 0.2477 0.5280 0.0008 0.0008 0 360 EARC s
+n 0.2480 0.5280 0.0008 0.0008 0 360 EARC s
+n 0.2481 0.5384 0.0008 0.0008 0 360 EARC s
+n 0.2481 0.5384 0.0008 0.0008 0 360 EARC s
+n 0.2481 0.5384 0.0008 0.0008 0 360 EARC s
+n 0.2481 0.5384 0.0008 0.0008 0 360 EARC s
+n 0.2481 0.5280 0.0008 0.0008 0 360 EARC s
+n 0.2482 0.5384 0.0008 0.0008 0 360 EARC s
+n 0.2482 0.5464 0.0008 0.0008 0 360 EARC s
+n 0.2486 0.5567 0.0008 0.0008 0 360 EARC s
+n 0.2488 0.5464 0.0008 0.0008 0 360 EARC s
+n 0.2489 0.5464 0.0008 0.0008 0 360 EARC s
+n 0.2489 0.5567 0.0008 0.0008 0 360 EARC s
+n 0.2490 0.5567 0.0008 0.0008 0 360 EARC s
+n 0.2494 0.5464 0.0008 0.0008 0 360 EARC s
+n 0.2512 0.5464 0.0008 0.0008 0 360 EARC s
+n 0.2513 0.5568 0.0008 0.0008 0 360 EARC s
+n 0.2515 0.5568 0.0008 0.0008 0 360 EARC s
+n 0.2516 0.5568 0.0008 0.0008 0 360 EARC s
+n 0.2516 0.5464 0.0008 0.0008 0 360 EARC s
+n 0.2516 0.5569 0.0008 0.0008 0 360 EARC s
+n 0.2518 0.5569 0.0008 0.0008 0 360 EARC s
+n 0.2519 0.5569 0.0008 0.0008 0 360 EARC s
+n 0.2519 0.5464 0.0008 0.0008 0 360 EARC s
+n 0.2519 0.5569 0.0008 0.0008 0 360 EARC s
+n 0.2520 0.5464 0.0008 0.0008 0 360 EARC s
+n 0.2520 0.5569 0.0008 0.0008 0 360 EARC s
+n 0.2521 0.5647 0.0008 0.0008 0 360 EARC s
+n 0.2522 0.5751 0.0008 0.0008 0 360 EARC s
+n 0.2524 0.5647 0.0008 0.0008 0 360 EARC s
+n 0.2525 0.5647 0.0008 0.0008 0 360 EARC s
+n 0.2525 0.5751 0.0008 0.0008 0 360 EARC s
+n 0.2526 0.5751 0.0008 0.0008 0 360 EARC s
+n 0.2526 0.5751 0.0008 0.0008 0 360 EARC s
+n 0.2526 0.5751 0.0008 0.0008 0 360 EARC s
+n 0.2526 0.5647 0.0008 0.0008 0 360 EARC s
+n 0.2526 0.5751 0.0008 0.0008 0 360 EARC s
+n 0.2539 0.5647 0.0008 0.0008 0 360 EARC s
+n 0.2539 0.5751 0.0008 0.0008 0 360 EARC s
+n 0.2539 0.5751 0.0008 0.0008 0 360 EARC s
+n 0.2540 0.5751 0.0008 0.0008 0 360 EARC s
+n 0.2540 0.5751 0.0008 0.0008 0 360 EARC s
+n 0.2541 0.5647 0.0008 0.0008 0 360 EARC s
+n 0.2541 0.5751 0.0008 0.0008 0 360 EARC s
+n 0.2542 0.5751 0.0008 0.0008 0 360 EARC s
+n 0.2542 0.5751 0.0008 0.0008 0 360 EARC s
+n 0.2543 0.5647 0.0008 0.0008 0 360 EARC s
+n 0.2545 0.5647 0.0008 0.0008 0 360 EARC s
+n 0.2546 0.5752 0.0008 0.0008 0 360 EARC s
+n 0.2547 0.5831 0.0008 0.0008 0 360 EARC s
+n 0.2549 0.5934 0.0008 0.0008 0 360 EARC s
+n 0.2551 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2552 0.6117 0.0008 0.0008 0 360 EARC s
+n 0.2552 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2555 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2556 0.6117 0.0008 0.0008 0 360 EARC s
+n 0.2556 0.6118 0.0008 0.0008 0 360 EARC s
+n 0.2556 0.6118 0.0008 0.0008 0 360 EARC s
+n 0.2556 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2556 0.6118 0.0008 0.0008 0 360 EARC s
+n 0.2557 0.6118 0.0008 0.0008 0 360 EARC s
+n 0.2561 0.6118 0.0008 0.0008 0 360 EARC s
+n 0.2562 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2562 0.6118 0.0008 0.0008 0 360 EARC s
+n 0.2565 0.6118 0.0008 0.0008 0 360 EARC s
+n 0.2565 0.6118 0.0008 0.0008 0 360 EARC s
+n 0.2565 0.6118 0.0008 0.0008 0 360 EARC s
+n 0.2565 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2565 0.6118 0.0008 0.0008 0 360 EARC s
+n 0.2577 0.6118 0.0008 0.0008 0 360 EARC s
+n 0.2578 0.6118 0.0008 0.0008 0 360 EARC s
+n 0.2578 0.6118 0.0008 0.0008 0 360 EARC s
+n 0.2578 0.6118 0.0008 0.0008 0 360 EARC s
+n 0.2578 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2578 0.6118 0.0008 0.0008 0 360 EARC s
+n 0.2579 0.6118 0.0008 0.0008 0 360 EARC s
+n 0.2581 0.6118 0.0008 0.0008 0 360 EARC s
+n 0.2581 0.6119 0.0008 0.0008 0 360 EARC s
+n 0.2582 0.6119 0.0008 0.0008 0 360 EARC s
+n 0.2582 0.6119 0.0008 0.0008 0 360 EARC s
+n 0.2582 0.6119 0.0008 0.0008 0 360 EARC s
+n 0.2582 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2582 0.6119 0.0008 0.0008 0 360 EARC s
+n 0.2585 0.6119 0.0008 0.0008 0 360 EARC s
+n 0.2585 0.6119 0.0008 0.0008 0 360 EARC s
+n 0.2585 0.6119 0.0008 0.0008 0 360 EARC s
+n 0.2585 0.6119 0.0008 0.0008 0 360 EARC s
+n 0.2586 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2586 0.6119 0.0008 0.0008 0 360 EARC s
+n 0.2586 0.6119 0.0008 0.0008 0 360 EARC s
+n 0.2587 0.6119 0.0008 0.0008 0 360 EARC s
+n 0.2590 0.6120 0.0008 0.0008 0 360 EARC s
+n 0.2605 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2607 0.6120 0.0008 0.0008 0 360 EARC s
+n 0.2608 0.6120 0.0008 0.0008 0 360 EARC s
+n 0.2609 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2611 0.6121 0.0008 0.0008 0 360 EARC s
+n 0.2613 0.6121 0.0008 0.0008 0 360 EARC s
+n 0.2614 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2614 0.6121 0.0008 0.0008 0 360 EARC s
+n 0.2626 0.6121 0.0008 0.0008 0 360 EARC s
+n 0.2627 0.6121 0.0008 0.0008 0 360 EARC s
+n 0.2627 0.6121 0.0008 0.0008 0 360 EARC s
+n 0.2628 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2629 0.6122 0.0008 0.0008 0 360 EARC s
+n 0.2632 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2633 0.6122 0.0008 0.0008 0 360 EARC s
+n 0.2637 0.6123 0.0008 0.0008 0 360 EARC s
+n 0.2654 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2657 0.6123 0.0008 0.0008 0 360 EARC s
+n 0.2659 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2659 0.6124 0.0008 0.0008 0 360 EARC s
+n 0.2680 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2680 0.6124 0.0008 0.0008 0 360 EARC s
+n 0.2681 0.6124 0.0008 0.0008 0 360 EARC s
+n 0.2682 0.6124 0.0008 0.0008 0 360 EARC s
+n 0.2683 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2683 0.6124 0.0008 0.0008 0 360 EARC s
+n 0.2687 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2687 0.6125 0.0008 0.0008 0 360 EARC s
+n 0.2687 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2690 0.6125 0.0008 0.0008 0 360 EARC s
+n 0.2691 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2691 0.6125 0.0008 0.0008 0 360 EARC s
+n 0.2694 0.6197 0.0008 0.0008 0 360 EARC s
+n 0.2695 0.6301 0.0008 0.0008 0 360 EARC s
+n 0.2697 0.6197 0.0008 0.0008 0 360 EARC s
+n 0.2700 0.6197 0.0008 0.0008 0 360 EARC s
+n 0.2700 0.6301 0.0008 0.0008 0 360 EARC s
+n 0.2701 0.6301 0.0008 0.0008 0 360 EARC s
+n 0.2701 0.6301 0.0008 0.0008 0 360 EARC s
+n 0.2701 0.6197 0.0008 0.0008 0 360 EARC s
+n 0.2701 0.6301 0.0008 0.0008 0 360 EARC s
+n 0.2706 0.6301 0.0008 0.0008 0 360 EARC s
+n 0.2706 0.6125 0.0008 0.0008 0 360 EARC s
+n 0.2706 0.6125 0.0008 0.0008 0 360 EARC s
+n 0.2707 0.6126 0.0008 0.0008 0 360 EARC s
+n 0.2707 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2719 0.6126 0.0008 0.0008 0 360 EARC s
+n 0.2720 0.6126 0.0008 0.0008 0 360 EARC s
+n 0.2720 0.6126 0.0008 0.0008 0 360 EARC s
+n 0.2721 0.6126 0.0008 0.0008 0 360 EARC s
+n 0.2721 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2723 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2724 0.6126 0.0008 0.0008 0 360 EARC s
+n 0.2725 0.6126 0.0008 0.0008 0 360 EARC s
+n 0.2725 0.6126 0.0008 0.0008 0 360 EARC s
+n 0.2726 0.6127 0.0008 0.0008 0 360 EARC s
+n 0.2728 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2729 0.6127 0.0008 0.0008 0 360 EARC s
+n 0.2729 0.6127 0.0008 0.0008 0 360 EARC s
+n 0.2746 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2747 0.6127 0.0008 0.0008 0 360 EARC s
+n 0.2748 0.6128 0.0008 0.0008 0 360 EARC s
+n 0.2749 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2750 0.6128 0.0008 0.0008 0 360 EARC s
+n 0.2752 0.6128 0.0008 0.0008 0 360 EARC s
+n 0.2752 0.6128 0.0008 0.0008 0 360 EARC s
+n 0.2752 0.6128 0.0008 0.0008 0 360 EARC s
+n 0.2753 0.6301 0.0008 0.0008 0 360 EARC s
+n 0.2754 0.6301 0.0008 0.0008 0 360 EARC s
+n 0.2754 0.6301 0.0008 0.0008 0 360 EARC s
+n 0.2754 0.6301 0.0008 0.0008 0 360 EARC s
+n 0.2754 0.6301 0.0008 0.0008 0 360 EARC s
+n 0.2754 0.6301 0.0008 0.0008 0 360 EARC s
+n 0.2768 0.6301 0.0008 0.0008 0 360 EARC s
+n 0.2770 0.6128 0.0008 0.0008 0 360 EARC s
+n 0.2770 0.6128 0.0008 0.0008 0 360 EARC s
+n 0.2770 0.6128 0.0008 0.0008 0 360 EARC s
+n 0.2770 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2771 0.6128 0.0008 0.0008 0 360 EARC s
+n 0.2771 0.6128 0.0008 0.0008 0 360 EARC s
+n 0.2771 0.6128 0.0008 0.0008 0 360 EARC s
+n 0.2772 0.6129 0.0008 0.0008 0 360 EARC s
+n 0.2772 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2772 0.6129 0.0008 0.0008 0 360 EARC s
+n 0.2774 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2774 0.6129 0.0008 0.0008 0 360 EARC s
+n 0.2775 0.6129 0.0008 0.0008 0 360 EARC s
+n 0.2776 0.6129 0.0008 0.0008 0 360 EARC s
+n 0.2776 0.6129 0.0008 0.0008 0 360 EARC s
+n 0.2778 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2797 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2798 0.6130 0.0008 0.0008 0 360 EARC s
+n 0.2802 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2802 0.6131 0.0008 0.0008 0 360 EARC s
+n 0.2803 0.6131 0.0008 0.0008 0 360 EARC s
+n 0.2804 0.6131 0.0008 0.0008 0 360 EARC s
+n 0.2805 0.6301 0.0008 0.0008 0 360 EARC s
+n 0.2805 0.6197 0.0008 0.0008 0 360 EARC s
+n 0.2820 0.6197 0.0008 0.0008 0 360 EARC s
+n 0.2821 0.6302 0.0008 0.0008 0 360 EARC s
+n 0.2822 0.6302 0.0008 0.0008 0 360 EARC s
+n 0.2822 0.6302 0.0008 0.0008 0 360 EARC s
+n 0.2822 0.6197 0.0008 0.0008 0 360 EARC s
+n 0.2823 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2826 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2830 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2845 0.6132 0.0008 0.0008 0 360 EARC s
+n 0.2847 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2848 0.6133 0.0008 0.0008 0 360 EARC s
+n 0.2851 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2853 0.6133 0.0008 0.0008 0 360 EARC s
+n 0.2853 0.6133 0.0008 0.0008 0 360 EARC s
+n 0.2854 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2855 0.6134 0.0008 0.0008 0 360 EARC s
+n 0.2857 0.6134 0.0008 0.0008 0 360 EARC s
+n 0.2871 0.6134 0.0008 0.0008 0 360 EARC s
+n 0.2871 0.6134 0.0008 0.0008 0 360 EARC s
+n 0.2872 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2872 0.6134 0.0008 0.0008 0 360 EARC s
+n 0.2872 0.6134 0.0008 0.0008 0 360 EARC s
+n 0.2876 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2878 0.6135 0.0008 0.0008 0 360 EARC s
+n 0.2880 0.6135 0.0008 0.0008 0 360 EARC s
+n 0.2880 0.6014 0.0008 0.0008 0 360 EARC s
+n 0.2880 0.6135 0.0008 0.0008 0 360 EARC s
+n 0.2884 0.6135 0.0008 0.0008 0 360 EARC s
+n 0.2884 0.6135 0.0008 0.0008 0 360 EARC s
+n 0.2884 0.6135 0.0008 0.0008 0 360 EARC s
+n 0.2884 0.6135 0.0008 0.0008 0 360 EARC s
+n 0.2884 0.6302 0.0008 0.0008 0 360 EARC s
+n 0.2884 0.6302 0.0008 0.0008 0 360 EARC s
+n 0.2885 0.6302 0.0008 0.0008 0 360 EARC s
+n 0.2885 0.6197 0.0008 0.0008 0 360 EARC s
+n 0.2886 0.6302 0.0008 0.0008 0 360 EARC s
+n 0.2886 0.6302 0.0008 0.0008 0 360 EARC s
+n 0.2886 0.6302 0.0008 0.0008 0 360 EARC s
+n 0.2897 0.6302 0.0008 0.0008 0 360 EARC s
+n 0.2897 0.6380 0.0008 0.0008 0 360 EARC s
+n 0.2898 0.6484 0.0008 0.0008 0 360 EARC s
+n 0.2900 0.6380 0.0008 0.0008 0 360 EARC s
+n 0.2902 0.6380 0.0008 0.0008 0 360 EARC s
+n 0.2902 0.6484 0.0008 0.0008 0 360 EARC s
+n 0.2902 0.6484 0.0008 0.0008 0 360 EARC s
+n 0.2902 0.6484 0.0008 0.0008 0 360 EARC s
+n 0.2902 0.6484 0.0008 0.0008 0 360 EARC s
+n 0.2903 0.6484 0.0008 0.0008 0 360 EARC s
+n 0.2907 0.6380 0.0008 0.0008 0 360 EARC s
+n 0.2907 0.6484 0.0008 0.0008 0 360 EARC s
+n 0.2910 0.6484 0.0008 0.0008 0 360 EARC s
+n 0.2910 0.6564 0.0008 0.0008 0 360 EARC s
+n 0.2912 0.6667 0.0008 0.0008 0 360 EARC s
+n 0.2915 0.6564 0.0008 0.0008 0 360 EARC s
+n 0.2916 0.6564 0.0008 0.0008 0 360 EARC s
+n 0.2916 0.6667 0.0008 0.0008 0 360 EARC s
+n 0.2916 0.6667 0.0008 0.0008 0 360 EARC s
+n 0.2916 0.6667 0.0008 0.0008 0 360 EARC s
+n 0.2917 0.6667 0.0008 0.0008 0 360 EARC s
+n 0.2917 0.6667 0.0008 0.0008 0 360 EARC s
+n 0.2921 0.6564 0.0008 0.0008 0 360 EARC s
+n 0.2921 0.6667 0.0008 0.0008 0 360 EARC s
+n 0.2925 0.6667 0.0008 0.0008 0 360 EARC s
+n 0.2925 0.6667 0.0008 0.0008 0 360 EARC s
+n 0.2925 0.6747 0.0008 0.0008 0 360 EARC s
+n 0.2927 0.6851 0.0008 0.0008 0 360 EARC s
+n 0.2929 0.6747 0.0008 0.0008 0 360 EARC s
+n 0.2931 0.6747 0.0008 0.0008 0 360 EARC s
+n 0.2931 0.6851 0.0008 0.0008 0 360 EARC s
+n 0.2931 0.6851 0.0008 0.0008 0 360 EARC s
+n 0.2931 0.6851 0.0008 0.0008 0 360 EARC s
+n 0.2931 0.6851 0.0008 0.0008 0 360 EARC s
+n 0.2931 0.6851 0.0008 0.0008 0 360 EARC s
+n 0.2931 0.6851 0.0008 0.0008 0 360 EARC s
+n 0.2931 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.2935 0.7034 0.0008 0.0008 0 360 EARC s
+n 0.2937 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.2938 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.2939 0.7034 0.0008 0.0008 0 360 EARC s
+n 0.2939 0.7034 0.0008 0.0008 0 360 EARC s
+n 0.2942 0.7034 0.0008 0.0008 0 360 EARC s
+n 0.2944 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.2944 0.7035 0.0008 0.0008 0 360 EARC s
+n 0.2946 0.7035 0.0008 0.0008 0 360 EARC s
+n 0.2946 0.7035 0.0008 0.0008 0 360 EARC s
+n 0.2947 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.2947 0.7035 0.0008 0.0008 0 360 EARC s
+n 0.2948 0.7035 0.0008 0.0008 0 360 EARC s
+n 0.2949 0.7035 0.0008 0.0008 0 360 EARC s
+n 0.2949 0.7035 0.0008 0.0008 0 360 EARC s
+n 0.2949 0.7035 0.0008 0.0008 0 360 EARC s
+n 0.2949 0.7035 0.0008 0.0008 0 360 EARC s
+n 0.2949 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.2950 0.7035 0.0008 0.0008 0 360 EARC s
+n 0.2952 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.2968 0.7036 0.0008 0.0008 0 360 EARC s
+n 0.2968 0.7036 0.0008 0.0008 0 360 EARC s
+n 0.2968 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.2969 0.7036 0.0008 0.0008 0 360 EARC s
+n 0.2969 0.7036 0.0008 0.0008 0 360 EARC s
+n 0.2971 0.7036 0.0008 0.0008 0 360 EARC s
+n 0.2971 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.2971 0.7036 0.0008 0.0008 0 360 EARC s
+n 0.2974 0.7036 0.0008 0.0008 0 360 EARC s
+n 0.2975 0.7036 0.0008 0.0008 0 360 EARC s
+n 0.2975 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.2975 0.7036 0.0008 0.0008 0 360 EARC s
+n 0.2975 0.7036 0.0008 0.0008 0 360 EARC s
+n 0.2975 0.7036 0.0008 0.0008 0 360 EARC s
+n 0.2975 0.7036 0.0008 0.0008 0 360 EARC s
+n 0.2975 0.7036 0.0008 0.0008 0 360 EARC s
+n 0.2976 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.2977 0.7037 0.0008 0.0008 0 360 EARC s
+n 0.2979 0.7037 0.0008 0.0008 0 360 EARC s
+n 0.2979 0.7037 0.0008 0.0008 0 360 EARC s
+n 0.2979 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.2979 0.7037 0.0008 0.0008 0 360 EARC s
+n 0.2982 0.7037 0.0008 0.0008 0 360 EARC s
+n 0.2982 0.7037 0.0008 0.0008 0 360 EARC s
+n 0.2983 0.7037 0.0008 0.0008 0 360 EARC s
+n 0.2983 0.7037 0.0008 0.0008 0 360 EARC s
+n 0.2983 0.7037 0.0008 0.0008 0 360 EARC s
+n 0.2983 0.7037 0.0008 0.0008 0 360 EARC s
+n 0.2983 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.3000 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.3003 0.7038 0.0008 0.0008 0 360 EARC s
+n 0.3005 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.3005 0.7038 0.0008 0.0008 0 360 EARC s
+n 0.3008 0.7038 0.0008 0.0008 0 360 EARC s
+n 0.3009 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.3009 0.7038 0.0008 0.0008 0 360 EARC s
+n 0.3009 0.7039 0.0008 0.0008 0 360 EARC s
+n 0.3023 0.7039 0.0008 0.0008 0 360 EARC s
+n 0.3023 0.7039 0.0008 0.0008 0 360 EARC s
+n 0.3024 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.3024 0.7039 0.0008 0.0008 0 360 EARC s
+n 0.3025 0.7039 0.0008 0.0008 0 360 EARC s
+n 0.3025 0.7039 0.0008 0.0008 0 360 EARC s
+n 0.3027 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.3029 0.7040 0.0008 0.0008 0 360 EARC s
+n 0.3049 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.3051 0.7040 0.0008 0.0008 0 360 EARC s
+n 0.3053 0.7041 0.0008 0.0008 0 360 EARC s
+n 0.3053 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.3055 0.7041 0.0008 0.0008 0 360 EARC s
+n 0.3056 0.7041 0.0008 0.0008 0 360 EARC s
+n 0.3056 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.3056 0.7041 0.0008 0.0008 0 360 EARC s
+n 0.3057 0.7041 0.0008 0.0008 0 360 EARC s
+n 0.3057 0.7041 0.0008 0.0008 0 360 EARC s
+n 0.3057 0.7041 0.0008 0.0008 0 360 EARC s
+n 0.3058 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.3059 0.7041 0.0008 0.0008 0 360 EARC s
+n 0.3062 0.7042 0.0008 0.0008 0 360 EARC s
+n 0.3062 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.3077 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.3078 0.7042 0.0008 0.0008 0 360 EARC s
+n 0.3081 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.3081 0.7042 0.0008 0.0008 0 360 EARC s
+n 0.3084 0.7042 0.0008 0.0008 0 360 EARC s
+n 0.3084 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.3084 0.7042 0.0008 0.0008 0 360 EARC s
+n 0.3085 0.7042 0.0008 0.0008 0 360 EARC s
+n 0.3085 0.7042 0.0008 0.0008 0 360 EARC s
+n 0.3085 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.3085 0.7042 0.0008 0.0008 0 360 EARC s
+n 0.3086 0.7043 0.0008 0.0008 0 360 EARC s
+n 0.3086 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.3086 0.7043 0.0008 0.0008 0 360 EARC s
+n 0.3088 0.7043 0.0008 0.0008 0 360 EARC s
+n 0.3088 0.7043 0.0008 0.0008 0 360 EARC s
+n 0.3088 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.3089 0.7043 0.0008 0.0008 0 360 EARC s
+n 0.3092 0.7043 0.0008 0.0008 0 360 EARC s
+n 0.3092 0.7043 0.0008 0.0008 0 360 EARC s
+n 0.3092 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.3092 0.7043 0.0008 0.0008 0 360 EARC s
+n 0.3092 0.7043 0.0008 0.0008 0 360 EARC s
+n 0.3093 0.7043 0.0008 0.0008 0 360 EARC s
+n 0.3093 0.7043 0.0008 0.0008 0 360 EARC s
+n 0.3093 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.3093 0.7043 0.0008 0.0008 0 360 EARC s
+n 0.3093 0.7043 0.0008 0.0008 0 360 EARC s
+n 0.3094 0.6931 0.0008 0.0008 0 360 EARC s
+n 0.3094 0.7044 0.0008 0.0008 0 360 EARC s
+n 0.3096 0.7044 0.0008 0.0008 0 360 EARC s
+n 0.3096 0.7044 0.0008 0.0008 0 360 EARC s
+n 0.3096 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3096 0.7044 0.0008 0.0008 0 360 EARC s
+n 0.3099 0.7044 0.0008 0.0008 0 360 EARC s
+n 0.3099 0.7044 0.0008 0.0008 0 360 EARC s
+n 0.3115 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3117 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3117 0.7044 0.0008 0.0008 0 360 EARC s
+n 0.3118 0.7044 0.0008 0.0008 0 360 EARC s
+n 0.3119 0.7044 0.0008 0.0008 0 360 EARC s
+n 0.3120 0.7045 0.0008 0.0008 0 360 EARC s
+n 0.3120 0.7045 0.0008 0.0008 0 360 EARC s
+n 0.3120 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3123 0.7045 0.0008 0.0008 0 360 EARC s
+n 0.3123 0.7045 0.0008 0.0008 0 360 EARC s
+n 0.3129 0.7045 0.0008 0.0008 0 360 EARC s
+n 0.3129 0.7045 0.0008 0.0008 0 360 EARC s
+n 0.3129 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3130 0.7045 0.0008 0.0008 0 360 EARC s
+n 0.3132 0.7045 0.0008 0.0008 0 360 EARC s
+n 0.3133 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3155 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3155 0.7046 0.0008 0.0008 0 360 EARC s
+n 0.3157 0.7046 0.0008 0.0008 0 360 EARC s
+n 0.3157 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3157 0.7046 0.0008 0.0008 0 360 EARC s
+n 0.3160 0.7046 0.0008 0.0008 0 360 EARC s
+n 0.3160 0.7046 0.0008 0.0008 0 360 EARC s
+n 0.3160 0.7046 0.0008 0.0008 0 360 EARC s
+n 0.3160 0.7046 0.0008 0.0008 0 360 EARC s
+n 0.3161 0.7046 0.0008 0.0008 0 360 EARC s
+n 0.3161 0.7047 0.0008 0.0008 0 360 EARC s
+n 0.3161 0.7047 0.0008 0.0008 0 360 EARC s
+n 0.3161 0.7047 0.0008 0.0008 0 360 EARC s
+n 0.3161 0.7047 0.0008 0.0008 0 360 EARC s
+n 0.3161 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3162 0.7047 0.0008 0.0008 0 360 EARC s
+n 0.3162 0.7047 0.0008 0.0008 0 360 EARC s
+n 0.3163 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3163 0.7047 0.0008 0.0008 0 360 EARC s
+n 0.3166 0.7047 0.0008 0.0008 0 360 EARC s
+n 0.3181 0.7047 0.0008 0.0008 0 360 EARC s
+n 0.3182 0.7047 0.0008 0.0008 0 360 EARC s
+n 0.3183 0.7048 0.0008 0.0008 0 360 EARC s
+n 0.3184 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3186 0.7048 0.0008 0.0008 0 360 EARC s
+n 0.3188 0.7048 0.0008 0.0008 0 360 EARC s
+n 0.3189 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3190 0.7049 0.0008 0.0008 0 360 EARC s
+n 0.3204 0.7049 0.0008 0.0008 0 360 EARC s
+n 0.3205 0.7049 0.0008 0.0008 0 360 EARC s
+n 0.3205 0.7049 0.0008 0.0008 0 360 EARC s
+n 0.3206 0.7049 0.0008 0.0008 0 360 EARC s
+n 0.3206 0.7049 0.0008 0.0008 0 360 EARC s
+n 0.3207 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3208 0.7049 0.0008 0.0008 0 360 EARC s
+n 0.3211 0.7049 0.0008 0.0008 0 360 EARC s
+n 0.3213 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3213 0.7050 0.0008 0.0008 0 360 EARC s
+n 0.3231 0.7050 0.0008 0.0008 0 360 EARC s
+n 0.3233 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3233 0.7051 0.0008 0.0008 0 360 EARC s
+n 0.3237 0.7051 0.0008 0.0008 0 360 EARC s
+n 0.3238 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3240 0.7051 0.0008 0.0008 0 360 EARC s
+n 0.3257 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3257 0.7052 0.0008 0.0008 0 360 EARC s
+n 0.3258 0.7052 0.0008 0.0008 0 360 EARC s
+n 0.3260 0.7052 0.0008 0.0008 0 360 EARC s
+n 0.3261 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3263 0.7053 0.0008 0.0008 0 360 EARC s
+n 0.3265 0.7053 0.0008 0.0008 0 360 EARC s
+n 0.3265 0.7053 0.0008 0.0008 0 360 EARC s
+n 0.3280 0.7053 0.0008 0.0008 0 360 EARC s
+n 0.3280 0.7053 0.0008 0.0008 0 360 EARC s
+n 0.3283 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3288 0.7054 0.0008 0.0008 0 360 EARC s
+n 0.3289 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3307 0.7054 0.0008 0.0008 0 360 EARC s
+n 0.3307 0.7055 0.0008 0.0008 0 360 EARC s
+n 0.3308 0.7055 0.0008 0.0008 0 360 EARC s
+n 0.3309 0.7055 0.0008 0.0008 0 360 EARC s
+n 0.3310 0.7055 0.0008 0.0008 0 360 EARC s
+n 0.3311 0.7055 0.0008 0.0008 0 360 EARC s
+n 0.3312 0.7055 0.0008 0.0008 0 360 EARC s
+n 0.3313 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3314 0.7055 0.0008 0.0008 0 360 EARC s
+n 0.3315 0.7056 0.0008 0.0008 0 360 EARC s
+n 0.3334 0.7056 0.0008 0.0008 0 360 EARC s
+n 0.3335 0.7056 0.0008 0.0008 0 360 EARC s
+n 0.3336 0.7056 0.0008 0.0008 0 360 EARC s
+n 0.3338 0.7056 0.0008 0.0008 0 360 EARC s
+n 0.3340 0.7056 0.0008 0.0008 0 360 EARC s
+n 0.3340 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3342 0.7057 0.0008 0.0008 0 360 EARC s
+n 0.3343 0.7057 0.0008 0.0008 0 360 EARC s
+n 0.3343 0.7057 0.0008 0.0008 0 360 EARC s
+n 0.3360 0.7057 0.0008 0.0008 0 360 EARC s
+n 0.3362 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3363 0.7058 0.0008 0.0008 0 360 EARC s
+n 0.3365 0.7058 0.0008 0.0008 0 360 EARC s
+n 0.3366 0.7058 0.0008 0.0008 0 360 EARC s
+n 0.3366 0.7058 0.0008 0.0008 0 360 EARC s
+n 0.3367 0.7058 0.0008 0.0008 0 360 EARC s
+n 0.3384 0.7058 0.0008 0.0008 0 360 EARC s
+n 0.3385 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3387 0.7059 0.0008 0.0008 0 360 EARC s
+n 0.3390 0.7059 0.0008 0.0008 0 360 EARC s
+n 0.3391 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3392 0.7059 0.0008 0.0008 0 360 EARC s
+n 0.3395 0.7060 0.0008 0.0008 0 360 EARC s
+n 0.3410 0.7060 0.0008 0.0008 0 360 EARC s
+n 0.3411 0.7060 0.0008 0.0008 0 360 EARC s
+n 0.3412 0.7060 0.0008 0.0008 0 360 EARC s
+n 0.3414 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3414 0.7060 0.0008 0.0008 0 360 EARC s
+n 0.3416 0.7060 0.0008 0.0008 0 360 EARC s
+n 0.3417 0.7060 0.0008 0.0008 0 360 EARC s
+n 0.3419 0.7061 0.0008 0.0008 0 360 EARC s
+n 0.3420 0.7061 0.0008 0.0008 0 360 EARC s
+n 0.3436 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3437 0.7061 0.0008 0.0008 0 360 EARC s
+n 0.3438 0.7062 0.0008 0.0008 0 360 EARC s
+n 0.3440 0.7062 0.0008 0.0008 0 360 EARC s
+n 0.3442 0.7062 0.0008 0.0008 0 360 EARC s
+n 0.3442 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3458 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3463 0.7063 0.0008 0.0008 0 360 EARC s
+n 0.3465 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3466 0.7064 0.0008 0.0008 0 360 EARC s
+n 0.3468 0.7064 0.0008 0.0008 0 360 EARC s
+n 0.3484 0.7064 0.0008 0.0008 0 360 EARC s
+n 0.3486 0.7064 0.0008 0.0008 0 360 EARC s
+n 0.3488 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3489 0.7065 0.0008 0.0008 0 360 EARC s
+n 0.3490 0.7065 0.0008 0.0008 0 360 EARC s
+n 0.3492 0.7065 0.0008 0.0008 0 360 EARC s
+n 0.3492 0.7065 0.0008 0.0008 0 360 EARC s
+n 0.3493 0.7065 0.0008 0.0008 0 360 EARC s
+n 0.3493 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3512 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3512 0.7066 0.0008 0.0008 0 360 EARC s
+n 0.3516 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3517 0.7066 0.0008 0.0008 0 360 EARC s
+n 0.3518 0.7066 0.0008 0.0008 0 360 EARC s
+n 0.3518 0.7066 0.0008 0.0008 0 360 EARC s
+n 0.3536 0.7067 0.0008 0.0008 0 360 EARC s
+n 0.3538 0.7067 0.0008 0.0008 0 360 EARC s
+n 0.3539 0.7067 0.0008 0.0008 0 360 EARC s
+n 0.3539 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3539 0.7067 0.0008 0.0008 0 360 EARC s
+n 0.3543 0.7068 0.0008 0.0008 0 360 EARC s
+n 0.3544 0.7068 0.0008 0.0008 0 360 EARC s
+n 0.3562 0.7068 0.0008 0.0008 0 360 EARC s
+n 0.3563 0.7068 0.0008 0.0008 0 360 EARC s
+n 0.3564 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3565 0.7068 0.0008 0.0008 0 360 EARC s
+n 0.3568 0.7069 0.0008 0.0008 0 360 EARC s
+n 0.3570 0.7069 0.0008 0.0008 0 360 EARC s
+n 0.3571 0.7069 0.0008 0.0008 0 360 EARC s
+n 0.3571 0.7069 0.0008 0.0008 0 360 EARC s
+n 0.3572 0.7069 0.0008 0.0008 0 360 EARC s
+n 0.3572 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3591 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3592 0.7070 0.0008 0.0008 0 360 EARC s
+n 0.3595 0.7070 0.0008 0.0008 0 360 EARC s
+n 0.3596 0.7071 0.0008 0.0008 0 360 EARC s
+n 0.3597 0.7071 0.0008 0.0008 0 360 EARC s
+n 0.3613 0.7071 0.0008 0.0008 0 360 EARC s
+n 0.3614 0.7071 0.0008 0.0008 0 360 EARC s
+n 0.3617 0.7071 0.0008 0.0008 0 360 EARC s
+n 0.3619 0.7072 0.0008 0.0008 0 360 EARC s
+n 0.3620 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3621 0.7072 0.0008 0.0008 0 360 EARC s
+n 0.3622 0.7072 0.0008 0.0008 0 360 EARC s
+n 0.3639 0.7072 0.0008 0.0008 0 360 EARC s
+n 0.3640 0.7073 0.0008 0.0008 0 360 EARC s
+n 0.3641 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3645 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3647 0.7073 0.0008 0.0008 0 360 EARC s
+n 0.3648 0.7073 0.0008 0.0008 0 360 EARC s
+n 0.3648 0.7073 0.0008 0.0008 0 360 EARC s
+n 0.3649 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3664 0.7074 0.0008 0.0008 0 360 EARC s
+n 0.3664 0.7074 0.0008 0.0008 0 360 EARC s
+n 0.3665 0.7074 0.0008 0.0008 0 360 EARC s
+n 0.3665 0.7074 0.0008 0.0008 0 360 EARC s
+n 0.3666 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3667 0.7074 0.0008 0.0008 0 360 EARC s
+n 0.3667 0.7074 0.0008 0.0008 0 360 EARC s
+n 0.3668 0.7074 0.0008 0.0008 0 360 EARC s
+n 0.3670 0.7074 0.0008 0.0008 0 360 EARC s
+n 0.3670 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3671 0.7075 0.0008 0.0008 0 360 EARC s
+n 0.3672 0.7075 0.0008 0.0008 0 360 EARC s
+n 0.3672 0.7075 0.0008 0.0008 0 360 EARC s
+n 0.3688 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3689 0.7075 0.0008 0.0008 0 360 EARC s
+n 0.3694 0.7076 0.0008 0.0008 0 360 EARC s
+n 0.3695 0.7076 0.0008 0.0008 0 360 EARC s
+n 0.3696 0.7076 0.0008 0.0008 0 360 EARC s
+n 0.3698 0.7076 0.0008 0.0008 0 360 EARC s
+n 0.3698 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3712 0.7076 0.0008 0.0008 0 360 EARC s
+n 0.3715 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3718 0.7077 0.0008 0.0008 0 360 EARC s
+n 0.3719 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3720 0.7077 0.0008 0.0008 0 360 EARC s
+n 0.3722 0.7078 0.0008 0.0008 0 360 EARC s
+n 0.3722 0.7078 0.0008 0.0008 0 360 EARC s
+n 0.3722 0.7078 0.0008 0.0008 0 360 EARC s
+n 0.3722 0.7078 0.0008 0.0008 0 360 EARC s
+n 0.3740 0.7078 0.0008 0.0008 0 360 EARC s
+n 0.3740 0.7078 0.0008 0.0008 0 360 EARC s
+n 0.3742 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3742 0.7078 0.0008 0.0008 0 360 EARC s
+n 0.3744 0.7079 0.0008 0.0008 0 360 EARC s
+n 0.3745 0.7079 0.0008 0.0008 0 360 EARC s
+n 0.3746 0.7079 0.0008 0.0008 0 360 EARC s
+n 0.3748 0.7079 0.0008 0.0008 0 360 EARC s
+n 0.3748 0.6930 0.0008 0.0008 0 360 EARC s
+n 0.3768 0.7113 0.0008 0.0008 0 360 EARC s
+n 0.3769 0.7216 0.0008 0.0008 0 360 EARC s
+n 0.3771 0.7113 0.0008 0.0008 0 360 EARC s
+n 0.3773 0.7113 0.0008 0.0008 0 360 EARC s
+n 0.3773 0.7216 0.0008 0.0008 0 360 EARC s
+n 0.3773 0.7216 0.0008 0.0008 0 360 EARC s
+n 0.3774 0.7216 0.0008 0.0008 0 360 EARC s
+n 0.3775 0.7217 0.0008 0.0008 0 360 EARC s
+n 0.3776 0.7113 0.0008 0.0008 0 360 EARC s
+n 0.3777 0.7217 0.0008 0.0008 0 360 EARC s
+n 0.3779 0.7217 0.0008 0.0008 0 360 EARC s
+n 0.3794 0.7217 0.0008 0.0008 0 360 EARC s
+n 0.3795 0.7217 0.0008 0.0008 0 360 EARC s
+n 0.3796 0.7217 0.0008 0.0008 0 360 EARC s
+n 0.3797 0.7218 0.0008 0.0008 0 360 EARC s
+n 0.3799 0.7218 0.0008 0.0008 0 360 EARC s
+n 0.3799 0.7218 0.0008 0.0008 0 360 EARC s
+n 0.3799 0.7218 0.0008 0.0008 0 360 EARC s
+n 0.3800 0.7218 0.0008 0.0008 0 360 EARC s
+n 0.3802 0.7113 0.0008 0.0008 0 360 EARC s
+n 0.3802 0.7218 0.0008 0.0008 0 360 EARC s
+n 0.3818 0.7219 0.0008 0.0008 0 360 EARC s
+n 0.3820 0.7219 0.0008 0.0008 0 360 EARC s
+n 0.3820 0.7296 0.0008 0.0008 0 360 EARC s
+n 0.3823 0.7399 0.0008 0.0008 0 360 EARC s
+n 0.3824 0.7296 0.0008 0.0008 0 360 EARC s
+n 0.3826 0.7296 0.0008 0.0008 0 360 EARC s
+n 0.3827 0.7400 0.0008 0.0008 0 360 EARC s
+n 0.3828 0.7296 0.0008 0.0008 0 360 EARC s
+n 0.3828 0.7400 0.0008 0.0008 0 360 EARC s
+n 0.3832 0.7400 0.0008 0.0008 0 360 EARC s
+n 0.3833 0.7401 0.0008 0.0008 0 360 EARC s
+n 0.3848 0.7296 0.0008 0.0008 0 360 EARC s
+n 0.3848 0.7401 0.0008 0.0008 0 360 EARC s
+n 0.3849 0.7401 0.0008 0.0008 0 360 EARC s
+n 0.3855 0.7401 0.0008 0.0008 0 360 EARC s
+n 0.3856 0.7296 0.0008 0.0008 0 360 EARC s
+n 0.3856 0.7402 0.0008 0.0008 0 360 EARC s
+n 0.3873 0.7402 0.0008 0.0008 0 360 EARC s
+n 0.3874 0.7402 0.0008 0.0008 0 360 EARC s
+n 0.3874 0.7480 0.0008 0.0008 0 360 EARC s
+n 0.3876 0.7583 0.0008 0.0008 0 360 EARC s
+n 0.3878 0.7480 0.0008 0.0008 0 360 EARC s
+n 0.3879 0.7480 0.0008 0.0008 0 360 EARC s
+n 0.3880 0.7583 0.0008 0.0008 0 360 EARC s
+n 0.3880 0.7583 0.0008 0.0008 0 360 EARC s
+n 0.3885 0.7583 0.0008 0.0008 0 360 EARC s
+n 0.3885 0.7583 0.0008 0.0008 0 360 EARC s
+n 0.3885 0.7583 0.0008 0.0008 0 360 EARC s
+n 0.3885 0.7480 0.0008 0.0008 0 360 EARC s
+n 0.3886 0.7584 0.0008 0.0008 0 360 EARC s
+n 0.3888 0.7584 0.0008 0.0008 0 360 EARC s
+n 0.3889 0.7480 0.0008 0.0008 0 360 EARC s
+n 0.3904 0.7584 0.0008 0.0008 0 360 EARC s
+n 0.3906 0.7584 0.0008 0.0008 0 360 EARC s
+n 0.3906 0.7480 0.0008 0.0008 0 360 EARC s
+n 0.3907 0.7584 0.0008 0.0008 0 360 EARC s
+n 0.3910 0.7480 0.0008 0.0008 0 360 EARC s
+n 0.3910 0.7585 0.0008 0.0008 0 360 EARC s
+n 0.3913 0.7585 0.0008 0.0008 0 360 EARC s
+n 0.3914 0.7480 0.0008 0.0008 0 360 EARC s
+n 0.3914 0.7585 0.0008 0.0008 0 360 EARC s
+n 0.3918 0.7585 0.0008 0.0008 0 360 EARC s
+n 0.3918 0.7585 0.0008 0.0008 0 360 EARC s
+n 0.3931 0.7586 0.0008 0.0008 0 360 EARC s
+n 0.3932 0.7480 0.0008 0.0008 0 360 EARC s
+n 0.3932 0.7586 0.0008 0.0008 0 360 EARC s
+n 0.3933 0.7586 0.0008 0.0008 0 360 EARC s
+n 0.3933 0.7586 0.0008 0.0008 0 360 EARC s
+n 0.3934 0.7586 0.0008 0.0008 0 360 EARC s
+n 0.3936 0.7586 0.0008 0.0008 0 360 EARC s
+n 0.3936 0.7586 0.0008 0.0008 0 360 EARC s
+n 0.3937 0.7480 0.0008 0.0008 0 360 EARC s
+n 0.3938 0.7587 0.0008 0.0008 0 360 EARC s
+n 0.3940 0.7587 0.0008 0.0008 0 360 EARC s
+n 0.3954 0.7480 0.0008 0.0008 0 360 EARC s
+n 0.3955 0.7587 0.0008 0.0008 0 360 EARC s
+n 0.3957 0.7588 0.0008 0.0008 0 360 EARC s
+n 0.3958 0.7480 0.0008 0.0008 0 360 EARC s
+n 0.3958 0.7588 0.0008 0.0008 0 360 EARC s
+n 0.3979 0.7589 0.0008 0.0008 0 360 EARC s
+n 0.3980 0.7480 0.0008 0.0008 0 360 EARC s
+n 0.3984 0.7589 0.0008 0.0008 0 360 EARC s
+n 0.3986 0.7590 0.0008 0.0008 0 360 EARC s
+n 0.3987 0.7480 0.0008 0.0008 0 360 EARC s
+n 0.4002 0.7590 0.0008 0.0008 0 360 EARC s
+n 0.4005 0.7480 0.0008 0.0008 0 360 EARC s
+n 0.4005 0.7590 0.0008 0.0008 0 360 EARC s
+n 0.4006 0.7590 0.0008 0.0008 0 360 EARC s
+n 0.4010 0.7480 0.0008 0.0008 0 360 EARC s
+n 0.4011 0.7591 0.0008 0.0008 0 360 EARC s
+n 0.4012 0.7591 0.0008 0.0008 0 360 EARC s
+n 0.4013 0.7591 0.0008 0.0008 0 360 EARC s
+n 0.4029 0.7592 0.0008 0.0008 0 360 EARC s
+n 0.4030 0.7592 0.0008 0.0008 0 360 EARC s
+n 0.4031 0.7592 0.0008 0.0008 0 360 EARC s
+n 0.4032 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4033 0.7592 0.0008 0.0008 0 360 EARC s
+n 0.4034 0.7592 0.0008 0.0008 0 360 EARC s
+n 0.4034 0.7592 0.0008 0.0008 0 360 EARC s
+n 0.4035 0.7592 0.0008 0.0008 0 360 EARC s
+n 0.4036 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4037 0.7592 0.0008 0.0008 0 360 EARC s
+n 0.4040 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4040 0.7593 0.0008 0.0008 0 360 EARC s
+n 0.4041 0.7593 0.0008 0.0008 0 360 EARC s
+n 0.4058 0.7593 0.0008 0.0008 0 360 EARC s
+n 0.4059 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4062 0.7593 0.0008 0.0008 0 360 EARC s
+n 0.4064 0.7593 0.0008 0.0008 0 360 EARC s
+n 0.4064 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4066 0.7594 0.0008 0.0008 0 360 EARC s
+n 0.4083 0.7594 0.0008 0.0008 0 360 EARC s
+n 0.4084 0.7594 0.0008 0.0008 0 360 EARC s
+n 0.4085 0.7595 0.0008 0.0008 0 360 EARC s
+n 0.4086 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4086 0.7595 0.0008 0.0008 0 360 EARC s
+n 0.4088 0.7595 0.0008 0.0008 0 360 EARC s
+n 0.4088 0.7595 0.0008 0.0008 0 360 EARC s
+n 0.4089 0.7595 0.0008 0.0008 0 360 EARC s
+n 0.4089 0.7595 0.0008 0.0008 0 360 EARC s
+n 0.4089 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4090 0.7595 0.0008 0.0008 0 360 EARC s
+n 0.4090 0.7595 0.0008 0.0008 0 360 EARC s
+n 0.4092 0.7595 0.0008 0.0008 0 360 EARC s
+n 0.4092 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4092 0.7596 0.0008 0.0008 0 360 EARC s
+n 0.4109 0.7596 0.0008 0.0008 0 360 EARC s
+n 0.4110 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4112 0.7596 0.0008 0.0008 0 360 EARC s
+n 0.4114 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4116 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4133 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4135 0.7598 0.0008 0.0008 0 360 EARC s
+n 0.4136 0.7598 0.0008 0.0008 0 360 EARC s
+n 0.4136 0.7598 0.0008 0.0008 0 360 EARC s
+n 0.4137 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4140 0.7598 0.0008 0.0008 0 360 EARC s
+n 0.4140 0.7598 0.0008 0.0008 0 360 EARC s
+n 0.4141 0.7598 0.0008 0.0008 0 360 EARC s
+n 0.4142 0.7598 0.0008 0.0008 0 360 EARC s
+n 0.4142 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4158 0.7599 0.0008 0.0008 0 360 EARC s
+n 0.4160 0.7599 0.0008 0.0008 0 360 EARC s
+n 0.4160 0.7599 0.0008 0.0008 0 360 EARC s
+n 0.4162 0.7599 0.0008 0.0008 0 360 EARC s
+n 0.4164 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4165 0.7600 0.0008 0.0008 0 360 EARC s
+n 0.4167 0.7600 0.0008 0.0008 0 360 EARC s
+n 0.4167 0.7600 0.0008 0.0008 0 360 EARC s
+n 0.4168 0.7600 0.0008 0.0008 0 360 EARC s
+n 0.4183 0.7600 0.0008 0.0008 0 360 EARC s
+n 0.4183 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4184 0.7600 0.0008 0.0008 0 360 EARC s
+n 0.4185 0.7600 0.0008 0.0008 0 360 EARC s
+n 0.4187 0.7601 0.0008 0.0008 0 360 EARC s
+n 0.4188 0.7601 0.0008 0.0008 0 360 EARC s
+n 0.4190 0.7601 0.0008 0.0008 0 360 EARC s
+n 0.4190 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4190 0.7601 0.0008 0.0008 0 360 EARC s
+n 0.4193 0.7601 0.0008 0.0008 0 360 EARC s
+n 0.4194 0.7602 0.0008 0.0008 0 360 EARC s
+n 0.4209 0.7602 0.0008 0.0008 0 360 EARC s
+n 0.4211 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4211 0.7602 0.0008 0.0008 0 360 EARC s
+n 0.4214 0.7602 0.0008 0.0008 0 360 EARC s
+n 0.4214 0.7602 0.0008 0.0008 0 360 EARC s
+n 0.4215 0.7602 0.0008 0.0008 0 360 EARC s
+n 0.4215 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4218 0.7603 0.0008 0.0008 0 360 EARC s
+n 0.4219 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4219 0.7603 0.0008 0.0008 0 360 EARC s
+n 0.4233 0.7603 0.0008 0.0008 0 360 EARC s
+n 0.4237 0.7604 0.0008 0.0008 0 360 EARC s
+n 0.4239 0.7604 0.0008 0.0008 0 360 EARC s
+n 0.4240 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4242 0.7604 0.0008 0.0008 0 360 EARC s
+n 0.4258 0.7604 0.0008 0.0008 0 360 EARC s
+n 0.4258 0.7605 0.0008 0.0008 0 360 EARC s
+n 0.4260 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4260 0.7605 0.0008 0.0008 0 360 EARC s
+n 0.4263 0.7605 0.0008 0.0008 0 360 EARC s
+n 0.4265 0.7605 0.0008 0.0008 0 360 EARC s
+n 0.4265 0.7605 0.0008 0.0008 0 360 EARC s
+n 0.4266 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4267 0.7606 0.0008 0.0008 0 360 EARC s
+n 0.4284 0.7606 0.0008 0.0008 0 360 EARC s
+n 0.4286 0.7606 0.0008 0.0008 0 360 EARC s
+n 0.4288 0.7607 0.0008 0.0008 0 360 EARC s
+n 0.4289 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4290 0.7607 0.0008 0.0008 0 360 EARC s
+n 0.4307 0.7607 0.0008 0.0008 0 360 EARC s
+n 0.4308 0.7607 0.0008 0.0008 0 360 EARC s
+n 0.4308 0.7607 0.0008 0.0008 0 360 EARC s
+n 0.4308 0.7607 0.0008 0.0008 0 360 EARC s
+n 0.4308 0.7607 0.0008 0.0008 0 360 EARC s
+n 0.4310 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4310 0.7608 0.0008 0.0008 0 360 EARC s
+n 0.4313 0.7608 0.0008 0.0008 0 360 EARC s
+n 0.4315 0.7608 0.0008 0.0008 0 360 EARC s
+n 0.4317 0.7609 0.0008 0.0008 0 360 EARC s
+n 0.4333 0.7609 0.0008 0.0008 0 360 EARC s
+n 0.4334 0.7609 0.0008 0.0008 0 360 EARC s
+n 0.4335 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4336 0.7609 0.0008 0.0008 0 360 EARC s
+n 0.4338 0.7609 0.0008 0.0008 0 360 EARC s
+n 0.4338 0.7609 0.0008 0.0008 0 360 EARC s
+n 0.4339 0.7609 0.0008 0.0008 0 360 EARC s
+n 0.4339 0.7609 0.0008 0.0008 0 360 EARC s
+n 0.4339 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4340 0.7610 0.0008 0.0008 0 360 EARC s
+n 0.4342 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4359 0.7610 0.0008 0.0008 0 360 EARC s
+n 0.4361 0.7610 0.0008 0.0008 0 360 EARC s
+n 0.4361 0.7610 0.0008 0.0008 0 360 EARC s
+n 0.4362 0.7611 0.0008 0.0008 0 360 EARC s
+n 0.4362 0.7611 0.0008 0.0008 0 360 EARC s
+n 0.4363 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4363 0.7611 0.0008 0.0008 0 360 EARC s
+n 0.4368 0.7611 0.0008 0.0008 0 360 EARC s
+n 0.4369 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4387 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4390 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4390 0.7612 0.0008 0.0008 0 360 EARC s
+n 0.4391 0.7612 0.0008 0.0008 0 360 EARC s
+n 0.4392 0.7612 0.0008 0.0008 0 360 EARC s
+n 0.4395 0.7613 0.0008 0.0008 0 360 EARC s
+n 0.4395 0.7613 0.0008 0.0008 0 360 EARC s
+n 0.4396 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4396 0.7613 0.0008 0.0008 0 360 EARC s
+n 0.4396 0.7632 0.0008 0.0008 0 360 EARC s
+n 0.4412 0.7613 0.0008 0.0008 0 360 EARC s
+n 0.4414 0.7613 0.0008 0.0008 0 360 EARC s
+n 0.4416 0.7613 0.0008 0.0008 0 360 EARC s
+n 0.4417 0.7614 0.0008 0.0008 0 360 EARC s
+n 0.4418 0.7614 0.0008 0.0008 0 360 EARC s
+n 0.4420 0.7614 0.0008 0.0008 0 360 EARC s
+n 0.4421 0.7614 0.0008 0.0008 0 360 EARC s
+n 0.4422 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4422 0.7614 0.0008 0.0008 0 360 EARC s
+n 0.4441 0.7615 0.0008 0.0008 0 360 EARC s
+n 0.4442 0.7615 0.0008 0.0008 0 360 EARC s
+n 0.4444 0.7615 0.0008 0.0008 0 360 EARC s
+n 0.4446 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4446 0.7615 0.0008 0.0008 0 360 EARC s
+n 0.4464 0.7616 0.0008 0.0008 0 360 EARC s
+n 0.4466 0.7616 0.0008 0.0008 0 360 EARC s
+n 0.4467 0.7616 0.0008 0.0008 0 360 EARC s
+n 0.4469 0.7617 0.0008 0.0008 0 360 EARC s
+n 0.4470 0.7617 0.0008 0.0008 0 360 EARC s
+n 0.4470 0.7617 0.0008 0.0008 0 360 EARC s
+n 0.4486 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4487 0.7617 0.0008 0.0008 0 360 EARC s
+n 0.4489 0.7617 0.0008 0.0008 0 360 EARC s
+n 0.4490 0.7618 0.0008 0.0008 0 360 EARC s
+n 0.4492 0.7618 0.0008 0.0008 0 360 EARC s
+n 0.4494 0.7618 0.0008 0.0008 0 360 EARC s
+n 0.4495 0.7618 0.0008 0.0008 0 360 EARC s
+n 0.4495 0.7618 0.0008 0.0008 0 360 EARC s
+n 0.4511 0.7618 0.0008 0.0008 0 360 EARC s
+n 0.4512 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4513 0.7619 0.0008 0.0008 0 360 EARC s
+n 0.4514 0.7619 0.0008 0.0008 0 360 EARC s
+n 0.4514 0.7619 0.0008 0.0008 0 360 EARC s
+n 0.4516 0.7619 0.0008 0.0008 0 360 EARC s
+n 0.4535 0.7620 0.0008 0.0008 0 360 EARC s
+n 0.4536 0.7620 0.0008 0.0008 0 360 EARC s
+n 0.4536 0.7620 0.0008 0.0008 0 360 EARC s
+n 0.4537 0.7620 0.0008 0.0008 0 360 EARC s
+n 0.4540 0.7620 0.0008 0.0008 0 360 EARC s
+n 0.4541 0.7621 0.0008 0.0008 0 360 EARC s
+n 0.4543 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4543 0.7621 0.0008 0.0008 0 360 EARC s
+n 0.4546 0.7621 0.0008 0.0008 0 360 EARC s
+n 0.4560 0.7621 0.0008 0.0008 0 360 EARC s
+n 0.4561 0.7621 0.0008 0.0008 0 360 EARC s
+n 0.4564 0.7622 0.0008 0.0008 0 360 EARC s
+n 0.4565 0.7622 0.0008 0.0008 0 360 EARC s
+n 0.4565 0.7622 0.0008 0.0008 0 360 EARC s
+n 0.4566 0.7622 0.0008 0.0008 0 360 EARC s
+n 0.4567 0.7622 0.0008 0.0008 0 360 EARC s
+n 0.4568 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4568 0.7622 0.0008 0.0008 0 360 EARC s
+n 0.4569 0.7622 0.0008 0.0008 0 360 EARC s
+n 0.4586 0.7622 0.0008 0.0008 0 360 EARC s
+n 0.4587 0.7622 0.0008 0.0008 0 360 EARC s
+n 0.4590 0.7623 0.0008 0.0008 0 360 EARC s
+n 0.4590 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4591 0.7623 0.0008 0.0008 0 360 EARC s
+n 0.4593 0.7623 0.0008 0.0008 0 360 EARC s
+n 0.4593 0.7623 0.0008 0.0008 0 360 EARC s
+n 0.4596 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4611 0.7624 0.0008 0.0008 0 360 EARC s
+n 0.4613 0.7624 0.0008 0.0008 0 360 EARC s
+n 0.4614 0.7624 0.0008 0.0008 0 360 EARC s
+n 0.4616 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4616 0.7624 0.0008 0.0008 0 360 EARC s
+n 0.4619 0.7625 0.0008 0.0008 0 360 EARC s
+n 0.4620 0.7625 0.0008 0.0008 0 360 EARC s
+n 0.4637 0.7625 0.0008 0.0008 0 360 EARC s
+n 0.4638 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4639 0.7625 0.0008 0.0008 0 360 EARC s
+n 0.4640 0.7625 0.0008 0.0008 0 360 EARC s
+n 0.4643 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4645 0.7626 0.0008 0.0008 0 360 EARC s
+n 0.4646 0.7626 0.0008 0.0008 0 360 EARC s
+n 0.4646 0.7626 0.0008 0.0008 0 360 EARC s
+n 0.4647 0.7626 0.0008 0.0008 0 360 EARC s
+n 0.4665 0.7627 0.0008 0.0008 0 360 EARC s
+n 0.4668 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4668 0.7628 0.0008 0.0008 0 360 EARC s
+n 0.4671 0.7628 0.0008 0.0008 0 360 EARC s
+n 0.4671 0.7628 0.0008 0.0008 0 360 EARC s
+n 0.4686 0.7628 0.0008 0.0008 0 360 EARC s
+n 0.4687 0.7628 0.0008 0.0008 0 360 EARC s
+n 0.4688 0.7628 0.0008 0.0008 0 360 EARC s
+n 0.4689 0.7628 0.0008 0.0008 0 360 EARC s
+n 0.4689 0.7628 0.0008 0.0008 0 360 EARC s
+n 0.4690 0.7628 0.0008 0.0008 0 360 EARC s
+n 0.4691 0.7628 0.0008 0.0008 0 360 EARC s
+n 0.4692 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4693 0.7629 0.0008 0.0008 0 360 EARC s
+n 0.4695 0.7629 0.0008 0.0008 0 360 EARC s
+n 0.4696 0.7629 0.0008 0.0008 0 360 EARC s
+n 0.4713 0.7629 0.0008 0.0008 0 360 EARC s
+n 0.4717 0.7630 0.0008 0.0008 0 360 EARC s
+n 0.4719 0.7630 0.0008 0.0008 0 360 EARC s
+n 0.4720 0.7662 0.0008 0.0008 0 360 EARC s
+n 0.4721 0.7765 0.0008 0.0008 0 360 EARC s
+n 0.4723 0.7662 0.0008 0.0008 0 360 EARC s
+n 0.4725 0.7662 0.0008 0.0008 0 360 EARC s
+n 0.4725 0.7765 0.0008 0.0008 0 360 EARC s
+n 0.4725 0.7765 0.0008 0.0008 0 360 EARC s
+n 0.4736 0.7766 0.0008 0.0008 0 360 EARC s
+n 0.4737 0.7766 0.0008 0.0008 0 360 EARC s
+n 0.4738 0.7766 0.0008 0.0008 0 360 EARC s
+n 0.4740 0.7766 0.0008 0.0008 0 360 EARC s
+n 0.4740 0.7662 0.0008 0.0008 0 360 EARC s
+n 0.4740 0.7766 0.0008 0.0008 0 360 EARC s
+n 0.4744 0.7766 0.0008 0.0008 0 360 EARC s
+n 0.4745 0.7767 0.0008 0.0008 0 360 EARC s
+n 0.4761 0.7767 0.0008 0.0008 0 360 EARC s
+n 0.4763 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4764 0.7767 0.0008 0.0008 0 360 EARC s
+n 0.4766 0.7767 0.0008 0.0008 0 360 EARC s
+n 0.4767 0.7767 0.0008 0.0008 0 360 EARC s
+n 0.4768 0.7662 0.0008 0.0008 0 360 EARC s
+n 0.4768 0.7768 0.0008 0.0008 0 360 EARC s
+n 0.4770 0.7768 0.0008 0.0008 0 360 EARC s
+n 0.4770 0.7768 0.0008 0.0008 0 360 EARC s
+n 0.4770 0.7768 0.0008 0.0008 0 360 EARC s
+n 0.4771 0.7630 0.0008 0.0008 0 360 EARC s
+n 0.4788 0.7630 0.0008 0.0008 0 360 EARC s
+n 0.4789 0.7630 0.0008 0.0008 0 360 EARC s
+n 0.4790 0.7631 0.0008 0.0008 0 360 EARC s
+n 0.4792 0.7631 0.0008 0.0008 0 360 EARC s
+n 0.4793 0.7631 0.0008 0.0008 0 360 EARC s
+n 0.4795 0.7631 0.0008 0.0008 0 360 EARC s
+n 0.4796 0.7631 0.0008 0.0008 0 360 EARC s
+n 0.4813 0.7632 0.0008 0.0008 0 360 EARC s
+n 0.4814 0.7479 0.0008 0.0008 0 360 EARC s
+n 0.4814 0.7632 0.0008 0.0008 0 360 EARC s
+n 0.4816 0.7632 0.0008 0.0008 0 360 EARC s
+n 0.4818 0.7632 0.0008 0.0008 0 360 EARC s
+n 0.4818 0.7632 0.0008 0.0008 0 360 EARC s
+n 0.4836 0.7633 0.0008 0.0008 0 360 EARC s
+n 0.4838 0.7633 0.0008 0.0008 0 360 EARC s
+n 0.4839 0.7768 0.0008 0.0008 0 360 EARC s
+n 0.4839 0.7768 0.0008 0.0008 0 360 EARC s
+n 0.4839 0.7768 0.0008 0.0008 0 360 EARC s
+n 0.4840 0.7768 0.0008 0.0008 0 360 EARC s
+n 0.4841 0.7768 0.0008 0.0008 0 360 EARC s
+n 0.4842 0.7662 0.0008 0.0008 0 360 EARC s
+n 0.4842 0.7768 0.0008 0.0008 0 360 EARC s
+n 0.4843 0.7769 0.0008 0.0008 0 360 EARC s
+n 0.4845 0.7769 0.0008 0.0008 0 360 EARC s
+n 0.4846 0.7769 0.0008 0.0008 0 360 EARC s
+n 0.4861 0.7769 0.0008 0.0008 0 360 EARC s
+n 0.4862 0.7769 0.0008 0.0008 0 360 EARC s
+n 0.4862 0.7769 0.0008 0.0008 0 360 EARC s
+n 0.4863 0.7769 0.0008 0.0008 0 360 EARC s
+n 0.4865 0.7770 0.0008 0.0008 0 360 EARC s
+n 0.4866 0.7770 0.0008 0.0008 0 360 EARC s
+n 0.4867 0.7770 0.0008 0.0008 0 360 EARC s
+n 0.4868 0.7770 0.0008 0.0008 0 360 EARC s
+n 0.4869 0.7770 0.0008 0.0008 0 360 EARC s
+n 0.4870 0.7633 0.0008 0.0008 0 360 EARC s
+n 0.4887 0.7633 0.0008 0.0008 0 360 EARC s
+n 0.4888 0.7634 0.0008 0.0008 0 360 EARC s
+n 0.4890 0.7634 0.0008 0.0008 0 360 EARC s
+n 0.4890 0.7634 0.0008 0.0008 0 360 EARC s
+n 0.4891 0.7634 0.0008 0.0008 0 360 EARC s
+n 0.4892 0.7634 0.0008 0.0008 0 360 EARC s
+n 0.4892 0.7770 0.0008 0.0008 0 360 EARC s
+n 0.4892 0.7662 0.0008 0.0008 0 360 EARC s
+n 0.4893 0.7770 0.0008 0.0008 0 360 EARC s
+n 0.4894 0.7770 0.0008 0.0008 0 360 EARC s
+n 0.4911 0.7770 0.0008 0.0008 0 360 EARC s
+n 0.4913 0.7771 0.0008 0.0008 0 360 EARC s
+n 0.4914 0.7771 0.0008 0.0008 0 360 EARC s
+n 0.4915 0.7662 0.0008 0.0008 0 360 EARC s
+n 0.4917 0.7771 0.0008 0.0008 0 360 EARC s
+n 0.4922 0.7772 0.0008 0.0008 0 360 EARC s
+n 0.4937 0.7772 0.0008 0.0008 0 360 EARC s
+n 0.4939 0.7772 0.0008 0.0008 0 360 EARC s
+n 0.4940 0.7662 0.0008 0.0008 0 360 EARC s
+n 0.4941 0.7772 0.0008 0.0008 0 360 EARC s
+n 0.4942 0.7772 0.0008 0.0008 0 360 EARC s
+n 0.4944 0.7773 0.0008 0.0008 0 360 EARC s
+n 0.4945 0.7773 0.0008 0.0008 0 360 EARC s
+n 0.4946 0.7773 0.0008 0.0008 0 360 EARC s
+n 0.4961 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.4962 0.7773 0.0008 0.0008 0 360 EARC s
+n 0.4963 0.7773 0.0008 0.0008 0 360 EARC s
+n 0.4965 0.7774 0.0008 0.0008 0 360 EARC s
+n 0.4966 0.7774 0.0008 0.0008 0 360 EARC s
+n 0.4969 0.7774 0.0008 0.0008 0 360 EARC s
+n 0.4986 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.4986 0.7774 0.0008 0.0008 0 360 EARC s
+n 0.4990 0.7775 0.0008 0.0008 0 360 EARC s
+n 0.4991 0.7775 0.0008 0.0008 0 360 EARC s
+n 0.4993 0.7775 0.0008 0.0008 0 360 EARC s
+n 0.4993 0.7775 0.0008 0.0008 0 360 EARC s
+n 0.4996 0.7776 0.0008 0.0008 0 360 EARC s
+n 0.5012 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5013 0.7776 0.0008 0.0008 0 360 EARC s
+n 0.5013 0.7776 0.0008 0.0008 0 360 EARC s
+n 0.5015 0.7776 0.0008 0.0008 0 360 EARC s
+n 0.5017 0.7777 0.0008 0.0008 0 360 EARC s
+n 0.5019 0.7777 0.0008 0.0008 0 360 EARC s
+n 0.5021 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5038 0.7777 0.0008 0.0008 0 360 EARC s
+n 0.5039 0.7777 0.0008 0.0008 0 360 EARC s
+n 0.5040 0.7777 0.0008 0.0008 0 360 EARC s
+n 0.5041 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5043 0.7778 0.0008 0.0008 0 360 EARC s
+n 0.5044 0.7778 0.0008 0.0008 0 360 EARC s
+n 0.5046 0.7778 0.0008 0.0008 0 360 EARC s
+n 0.5047 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5047 0.7778 0.0008 0.0008 0 360 EARC s
+n 0.5050 0.7778 0.0008 0.0008 0 360 EARC s
+n 0.5050 0.7778 0.0008 0.0008 0 360 EARC s
+n 0.5065 0.7779 0.0008 0.0008 0 360 EARC s
+n 0.5066 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5068 0.7779 0.0008 0.0008 0 360 EARC s
+n 0.5070 0.7779 0.0008 0.0008 0 360 EARC s
+n 0.5088 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5089 0.7780 0.0008 0.0008 0 360 EARC s
+n 0.5089 0.7780 0.0008 0.0008 0 360 EARC s
+n 0.5090 0.7780 0.0008 0.0008 0 360 EARC s
+n 0.5091 0.7780 0.0008 0.0008 0 360 EARC s
+n 0.5092 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5097 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5114 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5115 0.7781 0.0008 0.0008 0 360 EARC s
+n 0.5117 0.7781 0.0008 0.0008 0 360 EARC s
+n 0.5117 0.7782 0.0008 0.0008 0 360 EARC s
+n 0.5117 0.7782 0.0008 0.0008 0 360 EARC s
+n 0.5118 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5121 0.7782 0.0008 0.0008 0 360 EARC s
+n 0.5121 0.7782 0.0008 0.0008 0 360 EARC s
+n 0.5121 0.7782 0.0008 0.0008 0 360 EARC s
+n 0.5122 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5125 0.7782 0.0008 0.0008 0 360 EARC s
+n 0.5126 0.7782 0.0008 0.0008 0 360 EARC s
+n 0.5126 0.7782 0.0008 0.0008 0 360 EARC s
+n 0.5126 0.7782 0.0008 0.0008 0 360 EARC s
+n 0.5127 0.7783 0.0008 0.0008 0 360 EARC s
+n 0.5128 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5143 0.7783 0.0008 0.0008 0 360 EARC s
+n 0.5146 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5149 0.7784 0.0008 0.0008 0 360 EARC s
+n 0.5151 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5153 0.7784 0.0008 0.0008 0 360 EARC s
+n 0.5167 0.7784 0.0008 0.0008 0 360 EARC s
+n 0.5170 0.7785 0.0008 0.0008 0 360 EARC s
+n 0.5172 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5172 0.7785 0.0008 0.0008 0 360 EARC s
+n 0.5175 0.7785 0.0008 0.0008 0 360 EARC s
+n 0.5176 0.7785 0.0008 0.0008 0 360 EARC s
+n 0.5177 0.7785 0.0008 0.0008 0 360 EARC s
+n 0.5177 0.7785 0.0008 0.0008 0 360 EARC s
+n 0.5179 0.7785 0.0008 0.0008 0 360 EARC s
+n 0.5196 0.7786 0.0008 0.0008 0 360 EARC s
+n 0.5196 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5196 0.7786 0.0008 0.0008 0 360 EARC s
+n 0.5198 0.7786 0.0008 0.0008 0 360 EARC s
+n 0.5199 0.7786 0.0008 0.0008 0 360 EARC s
+n 0.5202 0.7787 0.0008 0.0008 0 360 EARC s
+n 0.5202 0.7787 0.0008 0.0008 0 360 EARC s
+n 0.5202 0.7787 0.0008 0.0008 0 360 EARC s
+n 0.5219 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5220 0.7787 0.0008 0.0008 0 360 EARC s
+n 0.5220 0.7807 0.0008 0.0008 0 360 EARC s
+n 0.5222 0.7787 0.0008 0.0008 0 360 EARC s
+n 0.5222 0.7787 0.0008 0.0008 0 360 EARC s
+n 0.5223 0.7788 0.0008 0.0008 0 360 EARC s
+n 0.5224 0.7788 0.0008 0.0008 0 360 EARC s
+n 0.5226 0.7788 0.0008 0.0008 0 360 EARC s
+n 0.5227 0.7788 0.0008 0.0008 0 360 EARC s
+n 0.5228 0.7788 0.0008 0.0008 0 360 EARC s
+n 0.5246 0.7788 0.0008 0.0008 0 360 EARC s
+n 0.5248 0.7789 0.0008 0.0008 0 360 EARC s
+n 0.5248 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5249 0.7789 0.0008 0.0008 0 360 EARC s
+n 0.5250 0.7789 0.0008 0.0008 0 360 EARC s
+n 0.5253 0.7789 0.0008 0.0008 0 360 EARC s
+n 0.5253 0.7789 0.0008 0.0008 0 360 EARC s
+n 0.5254 0.7790 0.0008 0.0008 0 360 EARC s
+n 0.5270 0.7790 0.0008 0.0008 0 360 EARC s
+n 0.5277 0.7791 0.0008 0.0008 0 360 EARC s
+n 0.5292 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5292 0.7791 0.0008 0.0008 0 360 EARC s
+n 0.5293 0.7791 0.0008 0.0008 0 360 EARC s
+n 0.5294 0.7791 0.0008 0.0008 0 360 EARC s
+n 0.5295 0.7791 0.0008 0.0008 0 360 EARC s
+n 0.5295 0.7791 0.0008 0.0008 0 360 EARC s
+n 0.5299 0.7792 0.0008 0.0008 0 360 EARC s
+n 0.5301 0.7792 0.0008 0.0008 0 360 EARC s
+n 0.5301 0.7792 0.0008 0.0008 0 360 EARC s
+n 0.5318 0.7793 0.0008 0.0008 0 360 EARC s
+n 0.5319 0.7793 0.0008 0.0008 0 360 EARC s
+n 0.5321 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5321 0.7793 0.0008 0.0008 0 360 EARC s
+n 0.5322 0.7793 0.0008 0.0008 0 360 EARC s
+n 0.5324 0.7793 0.0008 0.0008 0 360 EARC s
+n 0.5341 0.7794 0.0008 0.0008 0 360 EARC s
+n 0.5345 0.7794 0.0008 0.0008 0 360 EARC s
+n 0.5346 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5347 0.7794 0.0008 0.0008 0 360 EARC s
+n 0.5350 0.7795 0.0008 0.0008 0 360 EARC s
+n 0.5351 0.7795 0.0008 0.0008 0 360 EARC s
+n 0.5367 0.7795 0.0008 0.0008 0 360 EARC s
+n 0.5367 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5368 0.7795 0.0008 0.0008 0 360 EARC s
+n 0.5369 0.7795 0.0008 0.0008 0 360 EARC s
+n 0.5371 0.7796 0.0008 0.0008 0 360 EARC s
+n 0.5373 0.7796 0.0008 0.0008 0 360 EARC s
+n 0.5375 0.7796 0.0008 0.0008 0 360 EARC s
+n 0.5376 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5376 0.7796 0.0008 0.0008 0 360 EARC s
+n 0.5393 0.7796 0.0008 0.0008 0 360 EARC s
+n 0.5394 0.7796 0.0008 0.0008 0 360 EARC s
+n 0.5395 0.7797 0.0008 0.0008 0 360 EARC s
+n 0.5397 0.7797 0.0008 0.0008 0 360 EARC s
+n 0.5399 0.7797 0.0008 0.0008 0 360 EARC s
+n 0.5400 0.7797 0.0008 0.0008 0 360 EARC s
+n 0.5402 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5418 0.7798 0.0008 0.0008 0 360 EARC s
+n 0.5419 0.7798 0.0008 0.0008 0 360 EARC s
+n 0.5421 0.7798 0.0008 0.0008 0 360 EARC s
+n 0.5422 0.7798 0.0008 0.0008 0 360 EARC s
+n 0.5423 0.7798 0.0008 0.0008 0 360 EARC s
+n 0.5426 0.7799 0.0008 0.0008 0 360 EARC s
+n 0.5442 0.7799 0.0008 0.0008 0 360 EARC s
+n 0.5443 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5443 0.7799 0.0008 0.0008 0 360 EARC s
+n 0.5443 0.7799 0.0008 0.0008 0 360 EARC s
+n 0.5445 0.7799 0.0008 0.0008 0 360 EARC s
+n 0.5445 0.7800 0.0008 0.0008 0 360 EARC s
+n 0.5447 0.7800 0.0008 0.0008 0 360 EARC s
+n 0.5448 0.7800 0.0008 0.0008 0 360 EARC s
+n 0.5449 0.7800 0.0008 0.0008 0 360 EARC s
+n 0.5449 0.7800 0.0008 0.0008 0 360 EARC s
+n 0.5450 0.7800 0.0008 0.0008 0 360 EARC s
+n 0.5451 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5451 0.7800 0.0008 0.0008 0 360 EARC s
+n 0.5469 0.7801 0.0008 0.0008 0 360 EARC s
+n 0.5471 0.7801 0.0008 0.0008 0 360 EARC s
+n 0.5471 0.7801 0.0008 0.0008 0 360 EARC s
+n 0.5473 0.7801 0.0008 0.0008 0 360 EARC s
+n 0.5474 0.7801 0.0008 0.0008 0 360 EARC s
+n 0.5475 0.7801 0.0008 0.0008 0 360 EARC s
+n 0.5477 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5478 0.7802 0.0008 0.0008 0 360 EARC s
+n 0.5494 0.7802 0.0008 0.0008 0 360 EARC s
+n 0.5497 0.7802 0.0008 0.0008 0 360 EARC s
+n 0.5498 0.7802 0.0008 0.0008 0 360 EARC s
+n 0.5499 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5499 0.7803 0.0008 0.0008 0 360 EARC s
+n 0.5502 0.7803 0.0008 0.0008 0 360 EARC s
+n 0.5502 0.7803 0.0008 0.0008 0 360 EARC s
+n 0.5503 0.7803 0.0008 0.0008 0 360 EARC s
+n 0.5518 0.7803 0.0008 0.0008 0 360 EARC s
+n 0.5519 0.7804 0.0008 0.0008 0 360 EARC s
+n 0.5520 0.7804 0.0008 0.0008 0 360 EARC s
+n 0.5521 0.7804 0.0008 0.0008 0 360 EARC s
+n 0.5523 0.7804 0.0008 0.0008 0 360 EARC s
+n 0.5524 0.7804 0.0008 0.0008 0 360 EARC s
+n 0.5525 0.7804 0.0008 0.0008 0 360 EARC s
+n 0.5525 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5544 0.7805 0.0008 0.0008 0 360 EARC s
+n 0.5546 0.7805 0.0008 0.0008 0 360 EARC s
+n 0.5547 0.7805 0.0008 0.0008 0 360 EARC s
+n 0.5548 0.7805 0.0008 0.0008 0 360 EARC s
+n 0.5549 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5550 0.7806 0.0008 0.0008 0 360 EARC s
+n 0.5552 0.7806 0.0008 0.0008 0 360 EARC s
+n 0.5569 0.7806 0.0008 0.0008 0 360 EARC s
+n 0.5571 0.7806 0.0008 0.0008 0 360 EARC s
+n 0.5573 0.7806 0.0008 0.0008 0 360 EARC s
+n 0.5574 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5576 0.7807 0.0008 0.0008 0 360 EARC s
+n 0.5579 0.7807 0.0008 0.0008 0 360 EARC s
+n 0.5580 0.7807 0.0008 0.0008 0 360 EARC s
+n 0.5597 0.7807 0.0008 0.0008 0 360 EARC s
+n 0.5598 0.7807 0.0008 0.0008 0 360 EARC s
+n 0.5599 0.7808 0.0008 0.0008 0 360 EARC s
+n 0.5600 0.7808 0.0008 0.0008 0 360 EARC s
+n 0.5600 0.7077 0.0008 0.0008 0 360 EARC s
+n 0.5603 0.7077 0.0008 0.0008 0 360 EARC s
+n 0.5604 0.7077 0.0008 0.0008 0 360 EARC s
+n 0.5604 0.6927 0.0008 0.0008 0 360 EARC s
+n 0.5607 0.7077 0.0008 0.0008 0 360 EARC s
+n 0.5608 0.7808 0.0008 0.0008 0 360 EARC s
+n 0.5608 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5608 0.7078 0.0008 0.0008 0 360 EARC s
+n 0.5626 0.7078 0.0008 0.0008 0 360 EARC s
+n 0.5626 0.7078 0.0008 0.0008 0 360 EARC s
+n 0.5628 0.7808 0.0008 0.0008 0 360 EARC s
+n 0.5629 0.6927 0.0008 0.0008 0 360 EARC s
+n 0.5630 0.7078 0.0008 0.0008 0 360 EARC s
+n 0.5631 0.7078 0.0008 0.0008 0 360 EARC s
+n 0.5633 0.7079 0.0008 0.0008 0 360 EARC s
+n 0.5652 0.7808 0.0008 0.0008 0 360 EARC s
+n 0.5652 0.7808 0.0008 0.0008 0 360 EARC s
+n 0.5652 0.7808 0.0008 0.0008 0 360 EARC s
+n 0.5652 0.7808 0.0008 0.0008 0 360 EARC s
+n 0.5654 0.7808 0.0008 0.0008 0 360 EARC s
+n 0.5655 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5655 0.7808 0.0008 0.0008 0 360 EARC s
+n 0.5658 0.7808 0.0008 0.0008 0 360 EARC s
+n 0.5658 0.7808 0.0008 0.0008 0 360 EARC s
+n 0.5675 0.7809 0.0008 0.0008 0 360 EARC s
+n 0.5677 0.7809 0.0008 0.0008 0 360 EARC s
+n 0.5678 0.7809 0.0008 0.0008 0 360 EARC s
+n 0.5678 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5678 0.7809 0.0008 0.0008 0 360 EARC s
+n 0.5681 0.7810 0.0008 0.0008 0 360 EARC s
+n 0.5681 0.7810 0.0008 0.0008 0 360 EARC s
+n 0.5682 0.7810 0.0008 0.0008 0 360 EARC s
+n 0.5684 0.7810 0.0008 0.0008 0 360 EARC s
+n 0.5685 0.7661 0.0008 0.0008 0 360 EARC s
+n 0.5685 0.7810 0.0008 0.0008 0 360 EARC s
+n 0.5687 0.7810 0.0008 0.0008 0 360 EARC s
+n 0.5702 0.7810 0.0008 0.0008 0 360 EARC s
+n 0.5703 0.7811 0.0008 0.0008 0 360 EARC s
+n 0.5704 0.7811 0.0008 0.0008 0 360 EARC s
+n 0.5705 0.7811 0.0008 0.0008 0 360 EARC s
+n 0.5705 0.7811 0.0008 0.0008 0 360 EARC s
+n 0.5706 0.7811 0.0008 0.0008 0 360 EARC s
+n 0.5708 0.7811 0.0008 0.0008 0 360 EARC s
+n 0.5709 0.7811 0.0008 0.0008 0 360 EARC s
+n 0.5710 0.7844 0.0008 0.0008 0 360 EARC s
+n 0.5712 0.7947 0.0008 0.0008 0 360 EARC s
+n 0.5713 0.7844 0.0008 0.0008 0 360 EARC s
+n 0.5715 0.7844 0.0008 0.0008 0 360 EARC s
+n 0.5716 0.7947 0.0008 0.0008 0 360 EARC s
+n 0.5728 0.7947 0.0008 0.0008 0 360 EARC s
+n 0.5732 0.7844 0.0008 0.0008 0 360 EARC s
+n 0.5734 0.7948 0.0008 0.0008 0 360 EARC s
+n 0.5736 0.7948 0.0008 0.0008 0 360 EARC s
+n 0.5737 0.7949 0.0008 0.0008 0 360 EARC s
+n 0.5737 0.7949 0.0008 0.0008 0 360 EARC s
+n 0.5752 0.7949 0.0008 0.0008 0 360 EARC s
+n 0.5753 0.7844 0.0008 0.0008 0 360 EARC s
+n 0.5756 0.7949 0.0008 0.0008 0 360 EARC s
+n 0.5757 0.7950 0.0008 0.0008 0 360 EARC s
+n 0.5758 0.7844 0.0008 0.0008 0 360 EARC s
+n 0.5758 0.7950 0.0008 0.0008 0 360 EARC s
+n 0.5776 0.7950 0.0008 0.0008 0 360 EARC s
+n 0.5797 0.7952 0.0008 0.0008 0 360 EARC s
+n 0.5820 0.7953 0.0008 0.0008 0 360 EARC s
+n 0.5822 0.7953 0.0008 0.0008 0 360 EARC s
+n 0.5823 0.7953 0.0008 0.0008 0 360 EARC s
+n 0.5825 0.7953 0.0008 0.0008 0 360 EARC s
+n 0.5826 0.7953 0.0008 0.0008 0 360 EARC s
+n 0.5826 0.7844 0.0008 0.0008 0 360 EARC s
+n 0.5826 0.7953 0.0008 0.0008 0 360 EARC s
+n 0.5843 0.7954 0.0008 0.0008 0 360 EARC s
+n 0.5844 0.7844 0.0008 0.0008 0 360 EARC s
+n 0.5845 0.7954 0.0008 0.0008 0 360 EARC s
+n 0.5846 0.7954 0.0008 0.0008 0 360 EARC s
+n 0.5846 0.7955 0.0008 0.0008 0 360 EARC s
+n 0.5848 0.7955 0.0008 0.0008 0 360 EARC s
+n 0.5850 0.7955 0.0008 0.0008 0 360 EARC s
+n 0.5851 0.7955 0.0008 0.0008 0 360 EARC s
+n 0.5864 0.7955 0.0008 0.0008 0 360 EARC s
+n 0.5865 0.7956 0.0008 0.0008 0 360 EARC s
+n 0.5866 0.7844 0.0008 0.0008 0 360 EARC s
+n 0.5867 0.7956 0.0008 0.0008 0 360 EARC s
+n 0.5888 0.7844 0.0008 0.0008 0 360 EARC s
+n 0.5888 0.7957 0.0008 0.0008 0 360 EARC s
+n 0.5890 0.7957 0.0008 0.0008 0 360 EARC s
+n 0.5891 0.7957 0.0008 0.0008 0 360 EARC s
+n 0.5893 0.7958 0.0008 0.0008 0 360 EARC s
+n 0.5910 0.7958 0.0008 0.0008 0 360 EARC s
+n 0.5912 0.7844 0.0008 0.0008 0 360 EARC s
+n 0.5916 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.5916 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.5917 0.7844 0.0008 0.0008 0 360 EARC s
+n 0.5918 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.5921 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.5921 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.5921 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.5936 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.5938 0.7960 0.0008 0.0008 0 360 EARC s
+n 0.5940 0.7960 0.0008 0.0008 0 360 EARC s
+n 0.5941 0.7960 0.0008 0.0008 0 360 EARC s
+n 0.5942 0.7960 0.0008 0.0008 0 360 EARC s
+n 0.5942 0.7844 0.0008 0.0008 0 360 EARC s
+n 0.5944 0.7960 0.0008 0.0008 0 360 EARC s
+n 0.5945 0.7960 0.0008 0.0008 0 360 EARC s
+n 0.5945 0.7961 0.0008 0.0008 0 360 EARC s
+n 0.5956 0.7961 0.0008 0.0008 0 360 EARC s
+n 0.5957 0.7844 0.0008 0.0008 0 360 EARC s
+n 0.5957 0.7961 0.0008 0.0008 0 360 EARC s
+n 0.5958 0.7961 0.0008 0.0008 0 360 EARC s
+n 0.5959 0.7961 0.0008 0.0008 0 360 EARC s
+n 0.5959 0.7961 0.0008 0.0008 0 360 EARC s
+n 0.5960 0.7961 0.0008 0.0008 0 360 EARC s
+n 0.5961 0.7961 0.0008 0.0008 0 360 EARC s
+n 0.5961 0.7962 0.0008 0.0008 0 360 EARC s
+n 0.5981 0.7962 0.0008 0.0008 0 360 EARC s
+n 0.5982 0.7844 0.0008 0.0008 0 360 EARC s
+n 0.5985 0.7963 0.0008 0.0008 0 360 EARC s
+n 0.5987 0.7963 0.0008 0.0008 0 360 EARC s
+n 0.5987 0.7844 0.0008 0.0008 0 360 EARC s
+n 0.5987 0.7963 0.0008 0.0008 0 360 EARC s
+n 0.5990 0.7963 0.0008 0.0008 0 360 EARC s
+n 0.5990 0.7963 0.0008 0.0008 0 360 EARC s
+n 0.5991 0.7963 0.0008 0.0008 0 360 EARC s
+n 0.5999 0.7963 0.0008 0.0008 0 360 EARC s
+n 0.6001 0.7964 0.0008 0.0008 0 360 EARC s
+n 0.6002 0.7844 0.0008 0.0008 0 360 EARC s
+n 0.6002 0.7964 0.0008 0.0008 0 360 EARC s
+n 0.6005 0.7964 0.0008 0.0008 0 360 EARC s
+n 0.6005 0.7964 0.0008 0.0008 0 360 EARC s
+n 0.6005 0.7964 0.0008 0.0008 0 360 EARC s
+n 0.6006 0.7964 0.0008 0.0008 0 360 EARC s
+n 0.6006 0.7964 0.0008 0.0008 0 360 EARC s
+n 0.6007 0.7964 0.0008 0.0008 0 360 EARC s
+n 0.6009 0.7964 0.0008 0.0008 0 360 EARC s
+n 0.6010 0.7965 0.0008 0.0008 0 360 EARC s
+n 0.6010 0.7965 0.0008 0.0008 0 360 EARC s
+n 0.6026 0.7965 0.0008 0.0008 0 360 EARC s
+n 0.6028 0.7843 0.0008 0.0008 0 360 EARC s
+n 0.6028 0.7965 0.0008 0.0008 0 360 EARC s
+n 0.6030 0.7965 0.0008 0.0008 0 360 EARC s
+n 0.6030 0.7965 0.0008 0.0008 0 360 EARC s
+n 0.6030 0.7966 0.0008 0.0008 0 360 EARC s
+n 0.6032 0.7966 0.0008 0.0008 0 360 EARC s
+n 0.6034 0.7843 0.0008 0.0008 0 360 EARC s
+n 0.6034 0.7966 0.0008 0.0008 0 360 EARC s
+n 0.6049 0.7966 0.0008 0.0008 0 360 EARC s
+n 0.6050 0.7966 0.0008 0.0008 0 360 EARC s
+n 0.6050 0.7966 0.0008 0.0008 0 360 EARC s
+n 0.6052 0.7967 0.0008 0.0008 0 360 EARC s
+n 0.6054 0.7843 0.0008 0.0008 0 360 EARC s
+n 0.6054 0.7967 0.0008 0.0008 0 360 EARC s
+n 0.6057 0.7967 0.0008 0.0008 0 360 EARC s
+n 0.6057 0.7967 0.0008 0.0008 0 360 EARC s
+n 0.6057 0.7967 0.0008 0.0008 0 360 EARC s
+n 0.6057 0.7967 0.0008 0.0008 0 360 EARC s
+n 0.6058 0.7968 0.0008 0.0008 0 360 EARC s
+n 0.6072 0.7968 0.0008 0.0008 0 360 EARC s
+n 0.6077 0.7968 0.0008 0.0008 0 360 EARC s
+n 0.6081 0.7843 0.0008 0.0008 0 360 EARC s
+n 0.6100 0.7969 0.0008 0.0008 0 360 EARC s
+n 0.6101 0.7969 0.0008 0.0008 0 360 EARC s
+n 0.6102 0.7969 0.0008 0.0008 0 360 EARC s
+n 0.6102 0.7969 0.0008 0.0008 0 360 EARC s
+n 0.6102 0.7843 0.0008 0.0008 0 360 EARC s
+n 0.6103 0.7970 0.0008 0.0008 0 360 EARC s
+n 0.6105 0.7970 0.0008 0.0008 0 360 EARC s
+n 0.6105 0.8027 0.0008 0.0008 0 360 EARC s
+n 0.6106 0.8130 0.0008 0.0008 0 360 EARC s
+n 0.6108 0.8027 0.0008 0.0008 0 360 EARC s
+n 0.6112 0.8027 0.0008 0.0008 0 360 EARC s
+n 0.6112 0.7970 0.0008 0.0008 0 360 EARC s
+n 0.6113 0.7970 0.0008 0.0008 0 360 EARC s
+n 0.6113 0.7843 0.0008 0.0008 0 360 EARC s
+n 0.6114 0.7970 0.0008 0.0008 0 360 EARC s
+n 0.6130 0.7970 0.0008 0.0008 0 360 EARC s
+n 0.6133 0.7843 0.0008 0.0008 0 360 EARC s
+n 0.6134 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.6136 0.7843 0.0008 0.0008 0 360 EARC s
+n 0.6136 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.6137 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.6137 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.6139 0.7843 0.0008 0.0008 0 360 EARC s
+n 0.6141 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.6157 0.7972 0.0008 0.0008 0 360 EARC s
+n 0.6159 0.7843 0.0008 0.0008 0 360 EARC s
+n 0.6159 0.7972 0.0008 0.0008 0 360 EARC s
+n 0.6160 0.7972 0.0008 0.0008 0 360 EARC s
+n 0.6162 0.7972 0.0008 0.0008 0 360 EARC s
+n 0.6164 0.7972 0.0008 0.0008 0 360 EARC s
+n 0.6183 0.7973 0.0008 0.0008 0 360 EARC s
+n 0.6183 0.7843 0.0008 0.0008 0 360 EARC s
+n 0.6184 0.7973 0.0008 0.0008 0 360 EARC s
+n 0.6185 0.7973 0.0008 0.0008 0 360 EARC s
+n 0.6186 0.7973 0.0008 0.0008 0 360 EARC s
+n 0.6186 0.7973 0.0008 0.0008 0 360 EARC s
+n 0.6187 0.7974 0.0008 0.0008 0 360 EARC s
+n 0.6187 0.7974 0.0008 0.0008 0 360 EARC s
+n 0.6188 0.7843 0.0008 0.0008 0 360 EARC s
+n 0.6188 0.7974 0.0008 0.0008 0 360 EARC s
+n 0.6189 0.7974 0.0008 0.0008 0 360 EARC s
+n 0.6189 0.7974 0.0008 0.0008 0 360 EARC s
+n 0.6191 0.7843 0.0008 0.0008 0 360 EARC s
+n 0.6192 0.7974 0.0008 0.0008 0 360 EARC s
+n 0.6194 0.7974 0.0008 0.0008 0 360 EARC s
+n 0.6194 0.7974 0.0008 0.0008 0 360 EARC s
+n 0.6210 0.7975 0.0008 0.0008 0 360 EARC s
+n 0.6210 0.7843 0.0008 0.0008 0 360 EARC s
+n 0.6211 0.7975 0.0008 0.0008 0 360 EARC s
+n 0.6212 0.7975 0.0008 0.0008 0 360 EARC s
+n 0.6214 0.7975 0.0008 0.0008 0 360 EARC s
+n 0.6216 0.7843 0.0008 0.0008 0 360 EARC s
+n 0.6217 0.7975 0.0008 0.0008 0 360 EARC s
+n 0.6220 0.7975 0.0008 0.0008 0 360 EARC s
+n 0.6220 0.7976 0.0008 0.0008 0 360 EARC s
+n 0.6221 0.7976 0.0008 0.0008 0 360 EARC s
+n 0.6237 0.7976 0.0008 0.0008 0 360 EARC s
+n 0.6238 0.7976 0.0008 0.0008 0 360 EARC s
+n 0.6239 0.7976 0.0008 0.0008 0 360 EARC s
+n 0.6240 0.7843 0.0008 0.0008 0 360 EARC s
+n 0.6240 0.7976 0.0008 0.0008 0 360 EARC s
+n 0.6242 0.7976 0.0008 0.0008 0 360 EARC s
+n 0.6242 0.7976 0.0008 0.0008 0 360 EARC s
+n 0.6244 0.7977 0.0008 0.0008 0 360 EARC s
+n 0.6246 0.7977 0.0008 0.0008 0 360 EARC s
+n 0.6246 0.7843 0.0008 0.0008 0 360 EARC s
+n 0.6255 0.7974 0.0008 0.0008 0 360 EARC s
+n 0.6366 0.7966 0.0008 0.0008 0 360 EARC s
+n 0.6366 0.7832 0.0008 0.0008 0 360 EARC s
+n 0.6383 0.7966 0.0008 0.0008 0 360 EARC s
+n 0.6384 0.7966 0.0008 0.0008 0 360 EARC s
+n 0.6386 0.8119 0.0008 0.0008 0 360 EARC s
+n 0.6388 0.8015 0.0008 0.0008 0 360 EARC s
+n 0.6390 0.8119 0.0008 0.0008 0 360 EARC s
+n 0.6392 0.7832 0.0008 0.0008 0 360 EARC s
+n 0.6393 0.7967 0.0008 0.0008 0 360 EARC s
+n 0.6397 0.7832 0.0008 0.0008 0 360 EARC s
+n 0.6398 0.7967 0.0008 0.0008 0 360 EARC s
+n 0.6412 0.7967 0.0008 0.0008 0 360 EARC s
+n 0.6413 0.7968 0.0008 0.0008 0 360 EARC s
+n 0.6413 0.7832 0.0008 0.0008 0 360 EARC s
+n 0.6413 0.7968 0.0008 0.0008 0 360 EARC s
+n 0.6414 0.7968 0.0008 0.0008 0 360 EARC s
+n 0.6415 0.7968 0.0008 0.0008 0 360 EARC s
+n 0.6416 0.7832 0.0008 0.0008 0 360 EARC s
+n 0.6416 0.7968 0.0008 0.0008 0 360 EARC s
+n 0.6420 0.7968 0.0008 0.0008 0 360 EARC s
+n 0.6420 0.7968 0.0008 0.0008 0 360 EARC s
+n 0.6420 0.7969 0.0008 0.0008 0 360 EARC s
+n 0.6420 0.7969 0.0008 0.0008 0 360 EARC s
+n 0.6421 0.7969 0.0008 0.0008 0 360 EARC s
+n 0.6436 0.7969 0.0008 0.0008 0 360 EARC s
+n 0.6437 0.7969 0.0008 0.0008 0 360 EARC s
+n 0.6437 0.7832 0.0008 0.0008 0 360 EARC s
+n 0.6437 0.7969 0.0008 0.0008 0 360 EARC s
+n 0.6439 0.7969 0.0008 0.0008 0 360 EARC s
+n 0.6441 0.7832 0.0008 0.0008 0 360 EARC s
+n 0.6444 0.7970 0.0008 0.0008 0 360 EARC s
+n 0.6460 0.7832 0.0008 0.0008 0 360 EARC s
+n 0.6460 0.7970 0.0008 0.0008 0 360 EARC s
+n 0.6461 0.7970 0.0008 0.0008 0 360 EARC s
+n 0.6462 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.6463 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.6465 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.6466 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.6467 0.7832 0.0008 0.0008 0 360 EARC s
+n 0.6468 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.6484 0.7972 0.0008 0.0008 0 360 EARC s
+n 0.6485 0.7972 0.0008 0.0008 0 360 EARC s
+n 0.6486 0.7832 0.0008 0.0008 0 360 EARC s
+n 0.6486 0.7972 0.0008 0.0008 0 360 EARC s
+n 0.6487 0.7972 0.0008 0.0008 0 360 EARC s
+n 0.6487 0.7972 0.0008 0.0008 0 360 EARC s
+n 0.6489 0.7972 0.0008 0.0008 0 360 EARC s
+n 0.6490 0.7832 0.0008 0.0008 0 360 EARC s
+n 0.6490 0.7973 0.0008 0.0008 0 360 EARC s
+n 0.6493 0.7973 0.0008 0.0008 0 360 EARC s
+n 0.6508 0.7973 0.0008 0.0008 0 360 EARC s
+n 0.6511 0.7973 0.0008 0.0008 0 360 EARC s
+n 0.6512 0.7832 0.0008 0.0008 0 360 EARC s
+n 0.6513 0.7973 0.0008 0.0008 0 360 EARC s
+n 0.6516 0.7974 0.0008 0.0008 0 360 EARC s
+n 0.6516 0.7974 0.0008 0.0008 0 360 EARC s
+n 0.6518 0.7974 0.0008 0.0008 0 360 EARC s
+n 0.6528 0.7832 0.0008 0.0008 0 360 EARC s
+n 0.6531 0.7975 0.0008 0.0008 0 360 EARC s
+n 0.6536 0.7975 0.0008 0.0008 0 360 EARC s
+n 0.6554 0.7976 0.0008 0.0008 0 360 EARC s
+n 0.6573 0.7978 0.0008 0.0008 0 360 EARC s
+n 0.6592 0.7832 0.0008 0.0008 0 360 EARC s
+n 0.6592 0.7979 0.0008 0.0008 0 360 EARC s
+n 0.6593 0.7979 0.0008 0.0008 0 360 EARC s
+n 0.6593 0.7979 0.0008 0.0008 0 360 EARC s
+n 0.6594 0.7979 0.0008 0.0008 0 360 EARC s
+n 0.6595 0.7979 0.0008 0.0008 0 360 EARC s
+n 0.6596 0.7979 0.0008 0.0008 0 360 EARC s
+n 0.6612 0.7979 0.0008 0.0008 0 360 EARC s
+n 0.6613 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.6614 0.7832 0.0008 0.0008 0 360 EARC s
+n 0.6616 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.6616 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.6621 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.6622 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.6622 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.6623 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.6623 0.7832 0.0008 0.0008 0 360 EARC s
+n 0.6624 0.7981 0.0008 0.0008 0 360 EARC s
+n 0.6637 0.7981 0.0008 0.0008 0 360 EARC s
+n 0.6639 0.7832 0.0008 0.0008 0 360 EARC s
+n 0.6639 0.7981 0.0008 0.0008 0 360 EARC s
+n 0.6640 0.7981 0.0008 0.0008 0 360 EARC s
+n 0.6641 0.7981 0.0008 0.0008 0 360 EARC s
+n 0.6644 0.7832 0.0008 0.0008 0 360 EARC s
+n 0.6644 0.7982 0.0008 0.0008 0 360 EARC s
+n 0.6646 0.7982 0.0008 0.0008 0 360 EARC s
+n 0.6695 0.8110 0.0008 0.0008 0 360 EARC s
+n 0.6750 0.8108 0.0008 0.0008 0 360 EARC s
+n 0.6758 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6759 0.8108 0.0008 0.0008 0 360 EARC s
+n 0.6762 0.8108 0.0008 0.0008 0 360 EARC s
+n 0.6763 0.8108 0.0008 0.0008 0 360 EARC s
+n 0.6767 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6767 0.8108 0.0008 0.0008 0 360 EARC s
+n 0.6769 0.7821 0.0008 0.0008 0 360 EARC s
+n 0.6772 0.8108 0.0008 0.0008 0 360 EARC s
+n 0.6775 0.8109 0.0008 0.0008 0 360 EARC s
+n 0.6776 0.8109 0.0008 0.0008 0 360 EARC s
+n 0.6780 0.8109 0.0008 0.0008 0 360 EARC s
+n 0.6791 0.8109 0.0008 0.0008 0 360 EARC s
+n 0.6792 0.8109 0.0008 0.0008 0 360 EARC s
+n 0.6795 0.8110 0.0008 0.0008 0 360 EARC s
+n 0.6796 0.8110 0.0008 0.0008 0 360 EARC s
+n 0.6797 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6797 0.8110 0.0008 0.0008 0 360 EARC s
+n 0.6800 0.8110 0.0008 0.0008 0 360 EARC s
+n 0.6800 0.8110 0.0008 0.0008 0 360 EARC s
+n 0.6815 0.8110 0.0008 0.0008 0 360 EARC s
+n 0.6816 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6816 0.8110 0.0008 0.0008 0 360 EARC s
+n 0.6817 0.8110 0.0008 0.0008 0 360 EARC s
+n 0.6819 0.8111 0.0008 0.0008 0 360 EARC s
+n 0.6819 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6820 0.8111 0.0008 0.0008 0 360 EARC s
+n 0.6822 0.8111 0.0008 0.0008 0 360 EARC s
+n 0.6823 0.8111 0.0008 0.0008 0 360 EARC s
+n 0.6823 0.8111 0.0008 0.0008 0 360 EARC s
+n 0.6824 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6824 0.8111 0.0008 0.0008 0 360 EARC s
+n 0.6828 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6840 0.8112 0.0008 0.0008 0 360 EARC s
+n 0.6841 0.8112 0.0008 0.0008 0 360 EARC s
+n 0.6842 0.8112 0.0008 0.0008 0 360 EARC s
+n 0.6843 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6843 0.8112 0.0008 0.0008 0 360 EARC s
+n 0.6846 0.8112 0.0008 0.0008 0 360 EARC s
+n 0.6847 0.8112 0.0008 0.0008 0 360 EARC s
+n 0.6847 0.8113 0.0008 0.0008 0 360 EARC s
+n 0.6847 0.8113 0.0008 0.0008 0 360 EARC s
+n 0.6863 0.8113 0.0008 0.0008 0 360 EARC s
+n 0.6865 0.8113 0.0008 0.0008 0 360 EARC s
+n 0.6866 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6868 0.8114 0.0008 0.0008 0 360 EARC s
+n 0.6870 0.8114 0.0008 0.0008 0 360 EARC s
+n 0.6871 0.8114 0.0008 0.0008 0 360 EARC s
+n 0.6872 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6872 0.8114 0.0008 0.0008 0 360 EARC s
+n 0.6889 0.8115 0.0008 0.0008 0 360 EARC s
+n 0.6890 0.8115 0.0008 0.0008 0 360 EARC s
+n 0.6891 0.8115 0.0008 0.0008 0 360 EARC s
+n 0.6893 0.8115 0.0008 0.0008 0 360 EARC s
+n 0.6895 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6895 0.8116 0.0008 0.0008 0 360 EARC s
+n 0.6896 0.8116 0.0008 0.0008 0 360 EARC s
+n 0.6912 0.8116 0.0008 0.0008 0 360 EARC s
+n 0.6912 0.8116 0.0008 0.0008 0 360 EARC s
+n 0.6914 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6915 0.8116 0.0008 0.0008 0 360 EARC s
+n 0.6916 0.8116 0.0008 0.0008 0 360 EARC s
+n 0.6916 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6918 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6918 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6921 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6933 0.8118 0.0008 0.0008 0 360 EARC s
+n 0.6936 0.8118 0.0008 0.0008 0 360 EARC s
+n 0.6936 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6936 0.8118 0.0008 0.0008 0 360 EARC s
+n 0.6940 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6940 0.8118 0.0008 0.0008 0 360 EARC s
+n 0.6940 0.8118 0.0008 0.0008 0 360 EARC s
+n 0.6941 0.8118 0.0008 0.0008 0 360 EARC s
+n 0.6941 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6941 0.8118 0.0008 0.0008 0 360 EARC s
+n 0.6941 0.8118 0.0008 0.0008 0 360 EARC s
+n 0.6942 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6942 0.8118 0.0008 0.0008 0 360 EARC s
+n 0.6942 0.8118 0.0008 0.0008 0 360 EARC s
+n 0.6943 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6943 0.8118 0.0008 0.0008 0 360 EARC s
+n 0.6947 0.8119 0.0008 0.0008 0 360 EARC s
+n 0.6947 0.8004 0.0008 0.0008 0 360 EARC s
+n 0.6948 0.8119 0.0008 0.0008 0 360 EARC s
+n 0.6948 0.8119 0.0008 0.0008 0 360 EARC s
+n 0.6971 0.7997 0.0008 0.0008 0 360 EARC s
+n 0.7060 0.8109 0.0008 0.0008 0 360 EARC s
+n 0.7061 0.8109 0.0008 0.0008 0 360 EARC s
+n 0.7061 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7061 0.8109 0.0008 0.0008 0 360 EARC s
+n 0.7064 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7064 0.8109 0.0008 0.0008 0 360 EARC s
+n 0.7067 0.8109 0.0008 0.0008 0 360 EARC s
+n 0.7068 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7068 0.8109 0.0008 0.0008 0 360 EARC s
+n 0.7068 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7082 0.8110 0.0008 0.0008 0 360 EARC s
+n 0.7083 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7084 0.8110 0.0008 0.0008 0 360 EARC s
+n 0.7087 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7087 0.8110 0.0008 0.0008 0 360 EARC s
+n 0.7088 0.8110 0.0008 0.0008 0 360 EARC s
+n 0.7088 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7088 0.8110 0.0008 0.0008 0 360 EARC s
+n 0.7089 0.8110 0.0008 0.0008 0 360 EARC s
+n 0.7089 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7090 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7090 0.8111 0.0008 0.0008 0 360 EARC s
+n 0.7092 0.8111 0.0008 0.0008 0 360 EARC s
+n 0.7093 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7093 0.8111 0.0008 0.0008 0 360 EARC s
+n 0.7096 0.8111 0.0008 0.0008 0 360 EARC s
+n 0.7096 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7097 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7097 0.8112 0.0008 0.0008 0 360 EARC s
+n 0.7108 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7108 0.8112 0.0008 0.0008 0 360 EARC s
+n 0.7109 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7110 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7110 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7111 0.8112 0.0008 0.0008 0 360 EARC s
+n 0.7112 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7113 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7113 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7114 0.8113 0.0008 0.0008 0 360 EARC s
+n 0.7115 0.8113 0.0008 0.0008 0 360 EARC s
+n 0.7115 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7116 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7116 0.8113 0.0008 0.0008 0 360 EARC s
+n 0.7119 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7119 0.8114 0.0008 0.0008 0 360 EARC s
+n 0.7121 0.8114 0.0008 0.0008 0 360 EARC s
+n 0.7122 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7122 0.8114 0.0008 0.0008 0 360 EARC s
+n 0.7129 0.8114 0.0008 0.0008 0 360 EARC s
+n 0.7130 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7130 0.8114 0.0008 0.0008 0 360 EARC s
+n 0.7134 0.8115 0.0008 0.0008 0 360 EARC s
+n 0.7134 0.7994 0.0008 0.0008 0 360 EARC s
+n 0.7135 0.8115 0.0008 0.0008 0 360 EARC s
+n 0.7135 0.8115 0.0008 0.0008 0 360 EARC s
+n 0.7136 0.7993 0.0008 0.0008 0 360 EARC s
+n 0.7136 0.8115 0.0008 0.0008 0 360 EARC s
+n 0.7136 0.8116 0.0008 0.0008 0 360 EARC s
+n 0.7137 0.8116 0.0008 0.0008 0 360 EARC s
+n 0.7153 0.7993 0.0008 0.0008 0 360 EARC s
+n 0.7154 0.7993 0.0008 0.0008 0 360 EARC s
+n 0.7166 0.7981 0.0008 0.0008 0 360 EARC s
+n 0.7268 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7269 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.7271 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7272 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7273 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7274 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7288 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.7288 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.7288 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7291 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7292 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7294 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7295 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7295 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7296 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7297 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7298 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7299 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7299 0.8106 0.0008 0.0008 0 360 EARC s
+n 0.7301 0.8106 0.0008 0.0008 0 360 EARC s
+n 0.7301 0.8106 0.0008 0.0008 0 360 EARC s
+n 0.7301 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7301 0.8106 0.0008 0.0008 0 360 EARC s
+n 0.7304 0.8106 0.0008 0.0008 0 360 EARC s
+n 0.7305 0.8106 0.0008 0.0008 0 360 EARC s
+n 0.7305 0.8106 0.0008 0.0008 0 360 EARC s
+n 0.7305 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7305 0.8106 0.0008 0.0008 0 360 EARC s
+n 0.7306 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7307 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7308 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7322 0.8107 0.0008 0.0008 0 360 EARC s
+n 0.7325 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7325 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7326 0.8108 0.0008 0.0008 0 360 EARC s
+n 0.7328 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7329 0.8108 0.0008 0.0008 0 360 EARC s
+n 0.7330 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7331 0.8108 0.0008 0.0008 0 360 EARC s
+n 0.7334 0.8108 0.0008 0.0008 0 360 EARC s
+n 0.7335 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7335 0.8109 0.0008 0.0008 0 360 EARC s
+n 0.7350 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7351 0.8109 0.0008 0.0008 0 360 EARC s
+n 0.7351 0.8109 0.0008 0.0008 0 360 EARC s
+n 0.7351 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7351 0.8109 0.0008 0.0008 0 360 EARC s
+n 0.7351 0.8109 0.0008 0.0008 0 360 EARC s
+n 0.7352 0.8109 0.0008 0.0008 0 360 EARC s
+n 0.7352 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7353 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7353 0.8110 0.0008 0.0008 0 360 EARC s
+n 0.7355 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7356 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7357 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7357 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7358 0.7980 0.0008 0.0008 0 360 EARC s
+n 0.7368 0.8106 0.0008 0.0008 0 360 EARC s
+n 0.7455 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7456 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7456 0.8102 0.0008 0.0008 0 360 EARC s
+n 0.7458 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7472 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7473 0.8103 0.0008 0.0008 0 360 EARC s
+n 0.7473 0.8108 0.0008 0.0008 0 360 EARC s
+n 0.7476 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7476 0.8103 0.0008 0.0008 0 360 EARC s
+n 0.7478 0.8103 0.0008 0.0008 0 360 EARC s
+n 0.7480 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7482 0.8103 0.0008 0.0008 0 360 EARC s
+n 0.7489 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7489 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.7492 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.7492 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7493 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.7493 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.7493 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.7493 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.7493 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.7506 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7506 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.7507 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.7507 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.7507 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.7507 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.7507 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.7507 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.7507 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7508 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7508 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7508 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7508 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7508 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7508 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7509 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7509 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7509 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7509 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7509 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7509 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7509 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7510 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7510 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7510 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7510 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7510 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7510 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7510 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7511 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7512 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7513 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7516 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7516 0.8105 0.0008 0.0008 0 360 EARC s
+n 0.7517 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7517 0.8106 0.0008 0.0008 0 360 EARC s
+n 0.7517 0.8106 0.0008 0.0008 0 360 EARC s
+n 0.7534 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7534 0.8106 0.0008 0.0008 0 360 EARC s
+n 0.7535 0.8106 0.0008 0.0008 0 360 EARC s
+n 0.7536 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7536 0.8107 0.0008 0.0008 0 360 EARC s
+n 0.7537 0.8107 0.0008 0.0008 0 360 EARC s
+n 0.7538 0.8107 0.0008 0.0008 0 360 EARC s
+n 0.7538 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7539 0.8107 0.0008 0.0008 0 360 EARC s
+n 0.7541 0.8107 0.0008 0.0008 0 360 EARC s
+n 0.7541 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7541 0.8107 0.0008 0.0008 0 360 EARC s
+n 0.7542 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7543 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7558 0.7971 0.0008 0.0008 0 360 EARC s
+n 0.7559 0.8108 0.0008 0.0008 0 360 EARC s
+n 0.7572 0.7963 0.0008 0.0008 0 360 EARC s
+n 0.7614 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7619 0.8097 0.0008 0.0008 0 360 EARC s
+n 0.7659 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7660 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7661 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7662 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7678 0.8098 0.0008 0.0008 0 360 EARC s
+n 0.7680 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7680 0.8098 0.0008 0.0008 0 360 EARC s
+n 0.7684 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7685 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7686 0.8099 0.0008 0.0008 0 360 EARC s
+n 0.7688 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7689 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7703 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7704 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7704 0.8100 0.0008 0.0008 0 360 EARC s
+n 0.7705 0.8100 0.0008 0.0008 0 360 EARC s
+n 0.7706 0.8100 0.0008 0.0008 0 360 EARC s
+n 0.7706 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7706 0.8100 0.0008 0.0008 0 360 EARC s
+n 0.7709 0.8100 0.0008 0.0008 0 360 EARC s
+n 0.7709 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7710 0.8100 0.0008 0.0008 0 360 EARC s
+n 0.7710 0.8100 0.0008 0.0008 0 360 EARC s
+n 0.7710 0.8101 0.0008 0.0008 0 360 EARC s
+n 0.7710 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7711 0.8101 0.0008 0.0008 0 360 EARC s
+n 0.7711 0.8101 0.0008 0.0008 0 360 EARC s
+n 0.7711 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7712 0.8101 0.0008 0.0008 0 360 EARC s
+n 0.7713 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7714 0.8101 0.0008 0.0008 0 360 EARC s
+n 0.7717 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7718 0.8101 0.0008 0.0008 0 360 EARC s
+n 0.7718 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7719 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7720 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7720 0.8102 0.0008 0.0008 0 360 EARC s
+n 0.7722 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7735 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7736 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7737 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7738 0.7959 0.0008 0.0008 0 360 EARC s
+n 0.7739 0.8141 0.0008 0.0008 0 360 EARC s
+n 0.7740 0.8245 0.0008 0.0008 0 360 EARC s
+n 0.7742 0.8141 0.0008 0.0008 0 360 EARC s
+n 0.7744 0.8141 0.0008 0.0008 0 360 EARC s
+n 0.7744 0.8141 0.0008 0.0008 0 360 EARC s
+n 0.7745 0.8245 0.0008 0.0008 0 360 EARC s
+n 0.7750 0.8141 0.0008 0.0008 0 360 EARC s
+n 0.7751 0.8141 0.0008 0.0008 0 360 EARC s
+n 0.7752 0.8141 0.0008 0.0008 0 360 EARC s
+n 0.7780 0.8239 0.0008 0.0008 0 360 EARC s
+n 0.7855 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7858 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7858 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7859 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7860 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7867 0.8236 0.0008 0.0008 0 360 EARC s
+n 0.7869 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7869 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7870 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7871 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7871 0.8237 0.0008 0.0008 0 360 EARC s
+n 0.7873 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7873 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7874 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7875 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7876 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7876 0.8238 0.0008 0.0008 0 360 EARC s
+n 0.7891 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7892 0.8238 0.0008 0.0008 0 360 EARC s
+n 0.7892 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7893 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7893 0.8239 0.0008 0.0008 0 360 EARC s
+n 0.7893 0.8239 0.0008 0.0008 0 360 EARC s
+n 0.7893 0.8239 0.0008 0.0008 0 360 EARC s
+n 0.7896 0.8239 0.0008 0.0008 0 360 EARC s
+n 0.7896 0.8239 0.0008 0.0008 0 360 EARC s
+n 0.7896 0.8239 0.0008 0.0008 0 360 EARC s
+n 0.7896 0.8241 0.0008 0.0008 0 360 EARC s
+n 0.7896 0.8244 0.0008 0.0008 0 360 EARC s
+n 0.7896 0.8248 0.0008 0.0008 0 360 EARC s
+n 0.7901 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7902 0.8239 0.0008 0.0008 0 360 EARC s
+n 0.7902 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7903 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7903 0.8240 0.0008 0.0008 0 360 EARC s
+n 0.7920 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7921 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7923 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7923 0.8241 0.0008 0.0008 0 360 EARC s
+n 0.7925 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7927 0.8241 0.0008 0.0008 0 360 EARC s
+n 0.7928 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7928 0.8242 0.0008 0.0008 0 360 EARC s
+n 0.7946 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7947 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7949 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7951 0.8131 0.0008 0.0008 0 360 EARC s
+n 0.7951 0.8243 0.0008 0.0008 0 360 EARC s
+n 0.7984 0.8124 0.0008 0.0008 0 360 EARC s
+n 0.8040 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8043 0.8233 0.0008 0.0008 0 360 EARC s
+n 0.8045 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8045 0.8234 0.0008 0.0008 0 360 EARC s
+n 0.8048 0.8234 0.0008 0.0008 0 360 EARC s
+n 0.8049 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8049 0.8234 0.0008 0.0008 0 360 EARC s
+n 0.8050 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8050 0.8234 0.0008 0.0008 0 360 EARC s
+n 0.8051 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8051 0.8235 0.0008 0.0008 0 360 EARC s
+n 0.8052 0.8235 0.0008 0.0008 0 360 EARC s
+n 0.8052 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8055 0.8235 0.0008 0.0008 0 360 EARC s
+n 0.8056 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8060 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8060 0.8235 0.0008 0.0008 0 360 EARC s
+n 0.8062 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8073 0.8235 0.0008 0.0008 0 360 EARC s
+n 0.8073 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8075 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8075 0.8236 0.0008 0.0008 0 360 EARC s
+n 0.8077 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8078 0.8236 0.0008 0.0008 0 360 EARC s
+n 0.8079 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8080 0.8237 0.0008 0.0008 0 360 EARC s
+n 0.8084 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8097 0.8237 0.0008 0.0008 0 360 EARC s
+n 0.8099 0.8237 0.0008 0.0008 0 360 EARC s
+n 0.8101 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8102 0.8238 0.0008 0.0008 0 360 EARC s
+n 0.8104 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8104 0.8238 0.0008 0.0008 0 360 EARC s
+n 0.8104 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8105 0.8238 0.0008 0.0008 0 360 EARC s
+n 0.8107 0.8238 0.0008 0.0008 0 360 EARC s
+n 0.8107 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8123 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8123 0.8239 0.0008 0.0008 0 360 EARC s
+n 0.8123 0.8239 0.0008 0.0008 0 360 EARC s
+n 0.8125 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8127 0.8240 0.0008 0.0008 0 360 EARC s
+n 0.8129 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8129 0.8240 0.0008 0.0008 0 360 EARC s
+n 0.8133 0.8240 0.0008 0.0008 0 360 EARC s
+n 0.8133 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8133 0.8240 0.0008 0.0008 0 360 EARC s
+n 0.8133 0.8240 0.0008 0.0008 0 360 EARC s
+n 0.8134 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8150 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8150 0.8241 0.0008 0.0008 0 360 EARC s
+n 0.8153 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8153 0.8241 0.0008 0.0008 0 360 EARC s
+n 0.8156 0.8304 0.0008 0.0008 0 360 EARC s
+n 0.8157 0.8407 0.0008 0.0008 0 360 EARC s
+n 0.8159 0.8304 0.0008 0.0008 0 360 EARC s
+n 0.8160 0.8304 0.0008 0.0008 0 360 EARC s
+n 0.8161 0.8407 0.0008 0.0008 0 360 EARC s
+n 0.8161 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8161 0.8241 0.0008 0.0008 0 360 EARC s
+n 0.8162 0.8242 0.0008 0.0008 0 360 EARC s
+n 0.8165 0.8242 0.0008 0.0008 0 360 EARC s
+n 0.8166 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8166 0.8242 0.0008 0.0008 0 360 EARC s
+n 0.8169 0.8242 0.0008 0.0008 0 360 EARC s
+n 0.8181 0.8242 0.0008 0.0008 0 360 EARC s
+n 0.8181 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8182 0.8242 0.0008 0.0008 0 360 EARC s
+n 0.8183 0.8242 0.0008 0.0008 0 360 EARC s
+n 0.8184 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8185 0.8243 0.0008 0.0008 0 360 EARC s
+n 0.8188 0.8121 0.0008 0.0008 0 360 EARC s
+n 0.8188 0.8243 0.0008 0.0008 0 360 EARC s
+n 0.8247 0.8230 0.0008 0.0008 0 360 EARC s
+n 0.8299 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.8304 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.8304 0.8228 0.0008 0.0008 0 360 EARC s
+n 0.8306 0.8228 0.0008 0.0008 0 360 EARC s
+n 0.8307 0.8228 0.0008 0.0008 0 360 EARC s
+n 0.8307 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.8308 0.8228 0.0008 0.0008 0 360 EARC s
+n 0.8309 0.8229 0.0008 0.0008 0 360 EARC s
+n 0.8310 0.8229 0.0008 0.0008 0 360 EARC s
+n 0.8310 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.8326 0.8229 0.0008 0.0008 0 360 EARC s
+n 0.8327 0.8229 0.0008 0.0008 0 360 EARC s
+n 0.8330 0.8230 0.0008 0.0008 0 360 EARC s
+n 0.8330 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.8331 0.8230 0.0008 0.0008 0 360 EARC s
+n 0.8333 0.8230 0.0008 0.0008 0 360 EARC s
+n 0.8334 0.8230 0.0008 0.0008 0 360 EARC s
+n 0.8335 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.8353 0.8231 0.0008 0.0008 0 360 EARC s
+n 0.8355 0.8231 0.0008 0.0008 0 360 EARC s
+n 0.8356 0.8231 0.0008 0.0008 0 360 EARC s
+n 0.8356 0.8231 0.0008 0.0008 0 360 EARC s
+n 0.8357 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.8357 0.8231 0.0008 0.0008 0 360 EARC s
+n 0.8359 0.8232 0.0008 0.0008 0 360 EARC s
+n 0.8376 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.8377 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.8378 0.8232 0.0008 0.0008 0 360 EARC s
+n 0.8379 0.8232 0.0008 0.0008 0 360 EARC s
+n 0.8380 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.8380 0.8233 0.0008 0.0008 0 360 EARC s
+n 0.8382 0.8233 0.0008 0.0008 0 360 EARC s
+n 0.8382 0.8233 0.0008 0.0008 0 360 EARC s
+n 0.8383 0.8233 0.0008 0.0008 0 360 EARC s
+n 0.8384 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.8384 0.8233 0.0008 0.0008 0 360 EARC s
+n 0.8402 0.8233 0.0008 0.0008 0 360 EARC s
+n 0.8404 0.8234 0.0008 0.0008 0 360 EARC s
+n 0.8405 0.8234 0.0008 0.0008 0 360 EARC s
+n 0.8407 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.8408 0.8234 0.0008 0.0008 0 360 EARC s
+n 0.8410 0.8390 0.0008 0.0008 0 360 EARC s
+n 0.8411 0.8391 0.0008 0.0008 0 360 EARC s
+n 0.8412 0.8234 0.0008 0.0008 0 360 EARC s
+n 0.8412 0.8234 0.0008 0.0008 0 360 EARC s
+n 0.8412 0.8234 0.0008 0.0008 0 360 EARC s
+n 0.8413 0.8235 0.0008 0.0008 0 360 EARC s
+n 0.8427 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.8428 0.8235 0.0008 0.0008 0 360 EARC s
+n 0.8429 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.8429 0.8235 0.0008 0.0008 0 360 EARC s
+n 0.8433 0.8235 0.0008 0.0008 0 360 EARC s
+n 0.8433 0.8235 0.0008 0.0008 0 360 EARC s
+n 0.8433 0.8235 0.0008 0.0008 0 360 EARC s
+n 0.8433 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.8434 0.8236 0.0008 0.0008 0 360 EARC s
+n 0.8434 0.8236 0.0008 0.0008 0 360 EARC s
+n 0.8434 0.8236 0.0008 0.0008 0 360 EARC s
+n 0.8436 0.8236 0.0008 0.0008 0 360 EARC s
+n 0.8436 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.8452 0.8236 0.0008 0.0008 0 360 EARC s
+n 0.8452 0.8236 0.0008 0.0008 0 360 EARC s
+n 0.8454 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.8454 0.8237 0.0008 0.0008 0 360 EARC s
+n 0.8456 0.8237 0.0008 0.0008 0 360 EARC s
+n 0.8456 0.8237 0.0008 0.0008 0 360 EARC s
+n 0.8457 0.8237 0.0008 0.0008 0 360 EARC s
+n 0.8457 0.8237 0.0008 0.0008 0 360 EARC s
+n 0.8458 0.8237 0.0008 0.0008 0 360 EARC s
+n 0.8458 0.8237 0.0008 0.0008 0 360 EARC s
+n 0.8459 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.8459 0.8237 0.0008 0.0008 0 360 EARC s
+n 0.8477 0.8238 0.0008 0.0008 0 360 EARC s
+n 0.8477 0.8238 0.0008 0.0008 0 360 EARC s
+n 0.8477 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.8480 0.8238 0.0008 0.0008 0 360 EARC s
+n 0.8483 0.8238 0.0008 0.0008 0 360 EARC s
+n 0.8483 0.8238 0.0008 0.0008 0 360 EARC s
+n 0.8483 0.8238 0.0008 0.0008 0 360 EARC s
+n 0.8483 0.8238 0.0008 0.0008 0 360 EARC s
+n 0.8484 0.8104 0.0008 0.0008 0 360 EARC s
+n 0.8484 0.8238 0.0008 0.0008 0 360 EARC s
+n 0.8486 0.8239 0.0008 0.0008 0 360 EARC s
+n 0.8557 0.8223 0.0008 0.0008 0 360 EARC s
+n 0.8583 0.8223 0.0008 0.0008 0 360 EARC s
+n 0.8584 0.8088 0.0008 0.0008 0 360 EARC s
+n 0.8586 0.8224 0.0008 0.0008 0 360 EARC s
+n 0.8587 0.8224 0.0008 0.0008 0 360 EARC s
+n 0.8589 0.8088 0.0008 0.0008 0 360 EARC s
+n 0.8603 0.8224 0.0008 0.0008 0 360 EARC s
+n 0.8604 0.8225 0.0008 0.0008 0 360 EARC s
+n 0.8605 0.8225 0.0008 0.0008 0 360 EARC s
+n 0.8606 0.8088 0.0008 0.0008 0 360 EARC s
+n 0.8609 0.8225 0.0008 0.0008 0 360 EARC s
+n 0.8610 0.8088 0.0008 0.0008 0 360 EARC s
+n 0.8627 0.8226 0.0008 0.0008 0 360 EARC s
+n 0.8628 0.8226 0.0008 0.0008 0 360 EARC s
+n 0.8629 0.8088 0.0008 0.0008 0 360 EARC s
+n 0.8630 0.8226 0.0008 0.0008 0 360 EARC s
+n 0.8632 0.8226 0.0008 0.0008 0 360 EARC s
+n 0.8634 0.8227 0.0008 0.0008 0 360 EARC s
+n 0.8634 0.8227 0.0008 0.0008 0 360 EARC s
+n 0.8635 0.8088 0.0008 0.0008 0 360 EARC s
+n 0.8653 0.8227 0.0008 0.0008 0 360 EARC s
+n 0.8654 0.8227 0.0008 0.0008 0 360 EARC s
+n 0.8655 0.8088 0.0008 0.0008 0 360 EARC s
+n 0.8656 0.8228 0.0008 0.0008 0 360 EARC s
+n 0.8658 0.8228 0.0008 0.0008 0 360 EARC s
+n 0.8660 0.8088 0.0008 0.0008 0 360 EARC s
+n 0.8660 0.8228 0.0008 0.0008 0 360 EARC s
+n 0.8664 0.8228 0.0008 0.0008 0 360 EARC s
+n 0.8664 0.8228 0.0008 0.0008 0 360 EARC s
+n 0.8664 0.8228 0.0008 0.0008 0 360 EARC s
+n 0.8675 0.8229 0.0008 0.0008 0 360 EARC s
+n 0.8676 0.8088 0.0008 0.0008 0 360 EARC s
+n 0.8677 0.8229 0.0008 0.0008 0 360 EARC s
+n 0.8678 0.8229 0.0008 0.0008 0 360 EARC s
+n 0.8679 0.8229 0.0008 0.0008 0 360 EARC s
+n 0.8679 0.8229 0.0008 0.0008 0 360 EARC s
+n 0.8681 0.8230 0.0008 0.0008 0 360 EARC s
+n 0.8682 0.8230 0.0008 0.0008 0 360 EARC s
+n 0.8682 0.8230 0.0008 0.0008 0 360 EARC s
+n 0.8683 0.8230 0.0008 0.0008 0 360 EARC s
+n 0.8683 0.8088 0.0008 0.0008 0 360 EARC s
+n 0.8695 0.8230 0.0008 0.0008 0 360 EARC s
+n 0.8696 0.8230 0.0008 0.0008 0 360 EARC s
+n 0.8699 0.8230 0.0008 0.0008 0 360 EARC s
+n 0.8700 0.8088 0.0008 0.0008 0 360 EARC s
+n 0.8702 0.8088 0.0008 0.0008 0 360 EARC s
+n 0.8703 0.8231 0.0008 0.0008 0 360 EARC s
+n 0.8718 0.8231 0.0008 0.0008 0 360 EARC s
+n 0.8720 0.8088 0.0008 0.0008 0 360 EARC s
+n 0.8720 0.8231 0.0008 0.0008 0 360 EARC s
+n 0.8724 0.8232 0.0008 0.0008 0 360 EARC s
+n 0.8724 0.8232 0.0008 0.0008 0 360 EARC s
+n 0.8725 0.8232 0.0008 0.0008 0 360 EARC s
+n 0.8725 0.8088 0.0008 0.0008 0 360 EARC s
+n 0.8725 0.8232 0.0008 0.0008 0 360 EARC s
+n 0.8725 0.8232 0.0008 0.0008 0 360 EARC s
+n 0.8727 0.8088 0.0008 0.0008 0 360 EARC s
+n 0.8728 0.8233 0.0008 0.0008 0 360 EARC s
+n 0.8745 0.8233 0.0008 0.0008 0 360 EARC s
+n 0.8746 0.8088 0.0008 0.0008 0 360 EARC s
+n 0.8749 0.8233 0.0008 0.0008 0 360 EARC s
+n 0.8751 0.8233 0.0008 0.0008 0 360 EARC s
+n 0.8752 0.8234 0.0008 0.0008 0 360 EARC s
+n 0.8753 0.8234 0.0008 0.0008 0 360 EARC s
+n 0.8771 0.8234 0.0008 0.0008 0 360 EARC s
+n 0.8771 0.8234 0.0008 0.0008 0 360 EARC s
+n 0.8771 0.8234 0.0008 0.0008 0 360 EARC s
+n 0.8772 0.8088 0.0008 0.0008 0 360 EARC s
+n 0.8776 0.8235 0.0008 0.0008 0 360 EARC s
+n 0.8778 0.8088 0.0008 0.0008 0 360 EARC s
+n 0.8778 0.8235 0.0008 0.0008 0 360 EARC s
+n 0.8795 0.8088 0.0008 0.0008 0 360 EARC s
+n 0.8797 0.8236 0.0008 0.0008 0 360 EARC s
+n 0.8798 0.8236 0.0008 0.0008 0 360 EARC s
+n 0.8798 0.8236 0.0008 0.0008 0 360 EARC s
+n 0.8799 0.8236 0.0008 0.0008 0 360 EARC s
+n 0.8799 0.8088 0.0008 0.0008 0 360 EARC s
+n 0.8799 0.8236 0.0008 0.0008 0 360 EARC s
+n 0.8802 0.8237 0.0008 0.0008 0 360 EARC s
+n 0.8802 0.8237 0.0008 0.0008 0 360 EARC s
+n 0.8802 0.8237 0.0008 0.0008 0 360 EARC s
+n 0.8803 0.8088 0.0008 0.0008 0 360 EARC s
+n 0.8804 0.8237 0.0008 0.0008 0 360 EARC s
+n 0.8807 0.8237 0.0008 0.0008 0 360 EARC s
+n 0.8807 0.8237 0.0008 0.0008 0 360 EARC s
+n 0.8819 0.8222 0.0008 0.0008 0 360 EARC s
+n 0.8863 0.8072 0.0008 0.0008 0 360 EARC s
+n 0.8906 0.8222 0.0008 0.0008 0 360 EARC s
+n 0.8910 0.8222 0.0008 0.0008 0 360 EARC s
+n 0.8912 0.8222 0.0008 0.0008 0 360 EARC s
+n 0.8914 0.8072 0.0008 0.0008 0 360 EARC s
+n 0.8918 0.8222 0.0008 0.0008 0 360 EARC s
+n 0.8922 0.8222 0.0008 0.0008 0 360 EARC s
+n 0.8922 0.8223 0.0008 0.0008 0 360 EARC s
+n 0.8922 0.8359 0.0008 0.0008 0 360 EARC s
+n 0.8924 0.8359 0.0008 0.0008 0 360 EARC s
+n 0.8925 0.8255 0.0008 0.0008 0 360 EARC s
+n 0.8927 0.8359 0.0008 0.0008 0 360 EARC s
+n 0.8928 0.8359 0.0008 0.0008 0 360 EARC s
+n 0.8938 0.8255 0.0008 0.0008 0 360 EARC s
+n 0.8938 0.8359 0.0008 0.0008 0 360 EARC s
+n 0.8939 0.8359 0.0008 0.0008 0 360 EARC s
+n 0.8940 0.8359 0.0008 0.0008 0 360 EARC s
+n 0.8940 0.8360 0.0008 0.0008 0 360 EARC s
+n 0.8941 0.8360 0.0008 0.0008 0 360 EARC s
+n 0.8942 0.8255 0.0008 0.0008 0 360 EARC s
+n 0.8942 0.8360 0.0008 0.0008 0 360 EARC s
+n 0.8945 0.8360 0.0008 0.0008 0 360 EARC s
+n 0.8945 0.8360 0.0008 0.0008 0 360 EARC s
+n 0.8946 0.8360 0.0008 0.0008 0 360 EARC s
+n 0.8946 0.8255 0.0008 0.0008 0 360 EARC s
+n 0.8946 0.8360 0.0008 0.0008 0 360 EARC s
+n 0.8946 0.8360 0.0008 0.0008 0 360 EARC s
+n 0.8946 0.8360 0.0008 0.0008 0 360 EARC s
+n 0.8947 0.8360 0.0008 0.0008 0 360 EARC s
+n 0.8947 0.8360 0.0008 0.0008 0 360 EARC s
+n 0.8947 0.8255 0.0008 0.0008 0 360 EARC s
+n 0.8947 0.8361 0.0008 0.0008 0 360 EARC s
+n 0.8960 0.8361 0.0008 0.0008 0 360 EARC s
+n 0.8961 0.8361 0.0008 0.0008 0 360 EARC s
+n 0.8962 0.8255 0.0008 0.0008 0 360 EARC s
+n 0.8963 0.8361 0.0008 0.0008 0 360 EARC s
+n 0.8964 0.8361 0.0008 0.0008 0 360 EARC s
+n 0.8965 0.8362 0.0008 0.0008 0 360 EARC s
+n 0.8965 0.8362 0.0008 0.0008 0 360 EARC s
+n 0.8965 0.8362 0.0008 0.0008 0 360 EARC s
+n 0.8965 0.8362 0.0008 0.0008 0 360 EARC s
+n 0.8966 0.8255 0.0008 0.0008 0 360 EARC s
+n 0.8967 0.8362 0.0008 0.0008 0 360 EARC s
+n 0.8982 0.8255 0.0008 0.0008 0 360 EARC s
+n 0.8983 0.8362 0.0008 0.0008 0 360 EARC s
+n 0.8984 0.8362 0.0008 0.0008 0 360 EARC s
+n 0.8984 0.8362 0.0008 0.0008 0 360 EARC s
+n 0.8985 0.8363 0.0008 0.0008 0 360 EARC s
+n 0.8985 0.8363 0.0008 0.0008 0 360 EARC s
+n 0.8985 0.8255 0.0008 0.0008 0 360 EARC s
+n 0.8986 0.8363 0.0008 0.0008 0 360 EARC s
+n 0.8988 0.8363 0.0008 0.0008 0 360 EARC s
+n 0.8988 0.8363 0.0008 0.0008 0 360 EARC s
+n 0.8988 0.8363 0.0008 0.0008 0 360 EARC s
+n 0.8988 0.8363 0.0008 0.0008 0 360 EARC s
+n 0.8990 0.8255 0.0008 0.0008 0 360 EARC s
+n 0.8990 0.8363 0.0008 0.0008 0 360 EARC s
+n 0.8993 0.8363 0.0008 0.0008 0 360 EARC s
+n 0.8993 0.8363 0.0008 0.0008 0 360 EARC s
+n 0.9002 0.8364 0.0008 0.0008 0 360 EARC s
+n 0.9002 0.8364 0.0008 0.0008 0 360 EARC s
+n 0.9004 0.8364 0.0008 0.0008 0 360 EARC s
+n 0.9004 0.8364 0.0008 0.0008 0 360 EARC s
+n 0.9005 0.8364 0.0008 0.0008 0 360 EARC s
+n 0.9005 0.8255 0.0008 0.0008 0 360 EARC s
+n 0.9007 0.8364 0.0008 0.0008 0 360 EARC s
+n 0.9008 0.8365 0.0008 0.0008 0 360 EARC s
+n 0.9008 0.8365 0.0008 0.0008 0 360 EARC s
+n 0.9009 0.8255 0.0008 0.0008 0 360 EARC s
+n 0.9026 0.8365 0.0008 0.0008 0 360 EARC s
+n 0.9027 0.8365 0.0008 0.0008 0 360 EARC s
+n 0.9028 0.8365 0.0008 0.0008 0 360 EARC s
+n 0.9028 0.8365 0.0008 0.0008 0 360 EARC s
+n 0.9029 0.8255 0.0008 0.0008 0 360 EARC s
+n 0.9029 0.8366 0.0008 0.0008 0 360 EARC s
+n 0.9032 0.8366 0.0008 0.0008 0 360 EARC s
+n 0.9032 0.8366 0.0008 0.0008 0 360 EARC s
+n 0.9034 0.8366 0.0008 0.0008 0 360 EARC s
+n 0.9049 0.8366 0.0008 0.0008 0 360 EARC s
+n 0.9049 0.8255 0.0008 0.0008 0 360 EARC s
+n 0.9050 0.8367 0.0008 0.0008 0 360 EARC s
+n 0.9050 0.8367 0.0008 0.0008 0 360 EARC s
+n 0.9052 0.8367 0.0008 0.0008 0 360 EARC s
+n 0.9054 0.8255 0.0008 0.0008 0 360 EARC s
+n 0.9055 0.8368 0.0008 0.0008 0 360 EARC s
+n 0.9071 0.8368 0.0008 0.0008 0 360 EARC s
+n 0.9073 0.8255 0.0008 0.0008 0 360 EARC s
+n 0.9073 0.8368 0.0008 0.0008 0 360 EARC s
+n 0.9077 0.8368 0.0008 0.0008 0 360 EARC s
+n 0.9080 0.8369 0.0008 0.0008 0 360 EARC s
+n 0.9095 0.8255 0.0008 0.0008 0 360 EARC s
+n 0.9097 0.8369 0.0008 0.0008 0 360 EARC s
+n 0.9097 0.8370 0.0008 0.0008 0 360 EARC s
+n 0.9099 0.8370 0.0008 0.0008 0 360 EARC s
+n 0.9100 0.8370 0.0008 0.0008 0 360 EARC s
+n 0.9102 0.8370 0.0008 0.0008 0 360 EARC s
+n 0.9102 0.8255 0.0008 0.0008 0 360 EARC s
+n 0.9104 0.8370 0.0008 0.0008 0 360 EARC s
+n 0.9104 0.8370 0.0008 0.0008 0 360 EARC s
+n 0.9104 0.8370 0.0008 0.0008 0 360 EARC s
+n 0.9108 0.8370 0.0008 0.0008 0 360 EARC s
+n 0.9118 0.8371 0.0008 0.0008 0 360 EARC s
+n 0.9118 0.8371 0.0008 0.0008 0 360 EARC s
+n 0.9120 0.8371 0.0008 0.0008 0 360 EARC s
+n 0.9120 0.8255 0.0008 0.0008 0 360 EARC s
+n 0.9121 0.8371 0.0008 0.0008 0 360 EARC s
+n 0.9122 0.8371 0.0008 0.0008 0 360 EARC s
+n 0.9123 0.8372 0.0008 0.0008 0 360 EARC s
+n 0.9180 0.8358 0.0008 0.0008 0 360 EARC s
+n 0.9217 0.8240 0.0008 0.0008 0 360 EARC s
+n 0.9217 0.8357 0.0008 0.0008 0 360 EARC s
+n 0.9219 0.8357 0.0008 0.0008 0 360 EARC s
+n 0.9220 0.8357 0.0008 0.0008 0 360 EARC s
+n 0.9220 0.8357 0.0008 0.0008 0 360 EARC s
+n 0.9220 0.8358 0.0008 0.0008 0 360 EARC s
+n 0.9221 0.8358 0.0008 0.0008 0 360 EARC s
+n 0.9222 0.8358 0.0008 0.0008 0 360 EARC s
+n 0.9222 0.8358 0.0008 0.0008 0 360 EARC s
+n 0.9222 0.8358 0.0008 0.0008 0 360 EARC s
+n 0.9223 0.8358 0.0008 0.0008 0 360 EARC s
+n 0.9223 0.8358 0.0008 0.0008 0 360 EARC s
+n 0.9224 0.8240 0.0008 0.0008 0 360 EARC s
+n 0.9224 0.8358 0.0008 0.0008 0 360 EARC s
+n 0.9227 0.8359 0.0008 0.0008 0 360 EARC s
+n 0.9240 0.8240 0.0008 0.0008 0 360 EARC s
+n 0.9241 0.8359 0.0008 0.0008 0 360 EARC s
+n 0.9242 0.8359 0.0008 0.0008 0 360 EARC s
+n 0.9243 0.8359 0.0008 0.0008 0 360 EARC s
+n 0.9244 0.8359 0.0008 0.0008 0 360 EARC s
+n 0.9245 0.8359 0.0008 0.0008 0 360 EARC s
+n 0.9246 0.8360 0.0008 0.0008 0 360 EARC s
+n 0.9246 0.8360 0.0008 0.0008 0 360 EARC s
+n 0.9248 0.8360 0.0008 0.0008 0 360 EARC s
+n 0.9260 0.8240 0.0008 0.0008 0 360 EARC s
+n 0.9260 0.8360 0.0008 0.0008 0 360 EARC s
+n 0.9262 0.8360 0.0008 0.0008 0 360 EARC s
+n 0.9263 0.8360 0.0008 0.0008 0 360 EARC s
+n 0.9264 0.8361 0.0008 0.0008 0 360 EARC s
+n 0.9264 0.8361 0.0008 0.0008 0 360 EARC s
+n 0.9265 0.8361 0.0008 0.0008 0 360 EARC s
+n 0.9267 0.8240 0.0008 0.0008 0 360 EARC s
+n 0.9267 0.8361 0.0008 0.0008 0 360 EARC s
+n 0.9270 0.8361 0.0008 0.0008 0 360 EARC s
+n 0.9270 0.8361 0.0008 0.0008 0 360 EARC s
+n 0.9281 0.8361 0.0008 0.0008 0 360 EARC s
+n 0.9282 0.8362 0.0008 0.0008 0 360 EARC s
+n 0.9283 0.8362 0.0008 0.0008 0 360 EARC s
+n 0.9284 0.8362 0.0008 0.0008 0 360 EARC s
+n 0.9285 0.8362 0.0008 0.0008 0 360 EARC s
+n 0.9287 0.8362 0.0008 0.0008 0 360 EARC s
+n 0.9288 0.8240 0.0008 0.0008 0 360 EARC s
+n 0.9289 0.8363 0.0008 0.0008 0 360 EARC s
+n 0.9291 0.8363 0.0008 0.0008 0 360 EARC s
+n 0.9302 0.8363 0.0008 0.0008 0 360 EARC s
+n 0.9302 0.8363 0.0008 0.0008 0 360 EARC s
+n 0.9303 0.8363 0.0008 0.0008 0 360 EARC s
+n 0.9303 0.8363 0.0008 0.0008 0 360 EARC s
+n 0.9304 0.8363 0.0008 0.0008 0 360 EARC s
+n 0.9306 0.8363 0.0008 0.0008 0 360 EARC s
+n 0.9306 0.8363 0.0008 0.0008 0 360 EARC s
+n 0.9307 0.8363 0.0008 0.0008 0 360 EARC s
+n 0.9307 0.8363 0.0008 0.0008 0 360 EARC s
+n 0.9308 0.8364 0.0008 0.0008 0 360 EARC s
+n 0.9309 0.8364 0.0008 0.0008 0 360 EARC s
+n 0.9309 0.8364 0.0008 0.0008 0 360 EARC s
+n 0.9310 0.8364 0.0008 0.0008 0 360 EARC s
+n 0.9324 0.8364 0.0008 0.0008 0 360 EARC s
+n 0.9325 0.8364 0.0008 0.0008 0 360 EARC s
+n 0.9325 0.8240 0.0008 0.0008 0 360 EARC s
+n 0.9325 0.8364 0.0008 0.0008 0 360 EARC s
+n 0.9325 0.8364 0.0008 0.0008 0 360 EARC s
+n 0.9326 0.8364 0.0008 0.0008 0 360 EARC s
+n 0.9327 0.8240 0.0008 0.0008 0 360 EARC s
+n 0.9327 0.8365 0.0008 0.0008 0 360 EARC s
+n 0.9329 0.8365 0.0008 0.0008 0 360 EARC s
+n 0.9329 0.8365 0.0008 0.0008 0 360 EARC s
+n 0.9330 0.8365 0.0008 0.0008 0 360 EARC s
+n 0.9330 0.8365 0.0008 0.0008 0 360 EARC s
+n 0.9331 0.8365 0.0008 0.0008 0 360 EARC s
+n 0.9331 0.8365 0.0008 0.0008 0 360 EARC s
+n 0.9332 0.8365 0.0008 0.0008 0 360 EARC s
+n 0.9335 0.8365 0.0008 0.0008 0 360 EARC s
+n 0.9335 0.8240 0.0008 0.0008 0 360 EARC s
+n 0.9336 0.8366 0.0008 0.0008 0 360 EARC s
+[/DeviceRGB] SCS
+Color4 SC
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3909 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3909 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3909 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3909 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3909 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3909 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3909 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3909 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3909 0.0008 0.0008 0 360 EARC s
+n 0.6247 0.3910 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3910 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3910 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3909 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3910 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3910 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3910 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3910 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3910 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3909 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3909 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3910 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3910 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3910 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3910 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3909 0.0008 0.0008 0 360 EARC s
+n 0.6248 0.3909 0.0008 0.0008 0 360 EARC s
+n 0.6249 0.3910 0.0008 0.0008 0 360 EARC s
+n 0.6249 0.4010 0.0008 0.0008 0 360 EARC s
+n 0.6249 0.4090 0.0008 0.0008 0 360 EARC s
+n 0.6249 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6249 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6252 0.4009 0.0008 0.0008 0 360 EARC s
+n 0.6253 0.4090 0.0008 0.0008 0 360 EARC s
+n 0.6255 0.4090 0.0008 0.0008 0 360 EARC s
+n 0.6256 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6256 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6257 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6257 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6257 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6258 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6258 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6258 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6259 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6259 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6260 0.3829 0.0008 0.0008 0 360 EARC s
+n 0.6260 0.3902 0.0008 0.0008 0 360 EARC s
+n 0.6260 0.3902 0.0008 0.0008 0 360 EARC s
+n 0.6263 0.3902 0.0008 0.0008 0 360 EARC s
+n 0.6264 0.3902 0.0008 0.0008 0 360 EARC s
+n 0.6266 0.3903 0.0008 0.0008 0 360 EARC s
+n 0.6310 0.3903 0.0008 0.0008 0 360 EARC s
+n 0.6310 0.3903 0.0008 0.0008 0 360 EARC s
+n 0.6310 0.3904 0.0008 0.0008 0 360 EARC s
+n 0.6310 0.3904 0.0008 0.0008 0 360 EARC s
+n 0.6310 0.3904 0.0008 0.0008 0 360 EARC s
+n 0.6310 0.3904 0.0008 0.0008 0 360 EARC s
+n 0.6310 0.3904 0.0008 0.0008 0 360 EARC s
+n 0.6310 0.3904 0.0008 0.0008 0 360 EARC s
+n 0.6310 0.3904 0.0008 0.0008 0 360 EARC s
+n 0.6310 0.3904 0.0008 0.0008 0 360 EARC s
+n 0.6310 0.3905 0.0008 0.0008 0 360 EARC s
+n 0.6310 0.3905 0.0008 0.0008 0 360 EARC s
+n 0.6310 0.3905 0.0008 0.0008 0 360 EARC s
+n 0.6310 0.3905 0.0008 0.0008 0 360 EARC s
+n 0.6310 0.3905 0.0008 0.0008 0 360 EARC s
+n 0.6310 0.3905 0.0008 0.0008 0 360 EARC s
+n 0.6310 0.3907 0.0008 0.0008 0 360 EARC s
+n 0.6313 0.3907 0.0008 0.0008 0 360 EARC s
+n 0.6315 0.3907 0.0008 0.0008 0 360 EARC s
+n 0.6316 0.3907 0.0008 0.0008 0 360 EARC s
+n 0.6316 0.3908 0.0008 0.0008 0 360 EARC s
+n 0.6317 0.3908 0.0008 0.0008 0 360 EARC s
+n 0.6319 0.3908 0.0008 0.0008 0 360 EARC s
+n 0.6319 0.3909 0.0008 0.0008 0 360 EARC s
+n 0.6320 0.3909 0.0008 0.0008 0 360 EARC s
+n 0.6322 0.4002 0.0008 0.0008 0 360 EARC s
+n 0.6322 0.4082 0.0008 0.0008 0 360 EARC s
+n 0.6324 0.4082 0.0008 0.0008 0 360 EARC s
+n 0.6325 0.4082 0.0008 0.0008 0 360 EARC s
+n 0.6325 0.4082 0.0008 0.0008 0 360 EARC s
+n 0.6663 0.4001 0.0008 0.0008 0 360 EARC s
+n 0.6663 0.4081 0.0008 0.0008 0 360 EARC s
+n 0.6663 0.4082 0.0008 0.0008 0 360 EARC s
+n 0.6663 0.4082 0.0008 0.0008 0 360 EARC s
+n 0.6663 0.3828 0.0008 0.0008 0 360 EARC s
+n 0.6663 0.4001 0.0008 0.0008 0 360 EARC s
+n 0.6663 0.3828 0.0008 0.0008 0 360 EARC s
+n 0.6663 0.3908 0.0008 0.0008 0 360 EARC s
+n 0.6663 0.3908 0.0008 0.0008 0 360 EARC s
+n 0.6663 0.3908 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.3908 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.3908 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.3909 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.3828 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.3828 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.3908 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.3908 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.3908 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.3908 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.4000 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.4081 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.3828 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.3828 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.3908 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.3908 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.4000 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.3828 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.3908 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.3908 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.4000 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6664 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6665 0.4000 0.0008 0.0008 0 360 EARC s
+n 0.6665 0.4000 0.0008 0.0008 0 360 EARC s
+n 0.6665 0.4000 0.0008 0.0008 0 360 EARC s
+n 0.6665 0.4000 0.0008 0.0008 0 360 EARC s
+n 0.6665 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6665 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6665 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6665 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6665 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6665 0.4000 0.0008 0.0008 0 360 EARC s
+n 0.6666 0.4000 0.0008 0.0008 0 360 EARC s
+n 0.6666 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6666 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6666 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6666 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6666 0.4081 0.0008 0.0008 0 360 EARC s
+n 0.6666 0.4000 0.0008 0.0008 0 360 EARC s
+n 0.6666 0.4000 0.0008 0.0008 0 360 EARC s
+n 0.6666 0.4000 0.0008 0.0008 0 360 EARC s
+n 0.6666 0.4000 0.0008 0.0008 0 360 EARC s
+n 0.6666 0.4000 0.0008 0.0008 0 360 EARC s
+n 0.6666 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6667 0.4081 0.0008 0.0008 0 360 EARC s
+n 0.6667 0.4000 0.0008 0.0008 0 360 EARC s
+n 0.6667 0.4000 0.0008 0.0008 0 360 EARC s
+n 0.6667 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6667 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6667 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6667 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6667 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6667 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6668 0.4000 0.0008 0.0008 0 360 EARC s
+n 0.6695 0.4000 0.0008 0.0008 0 360 EARC s
+n 0.6695 0.4000 0.0008 0.0008 0 360 EARC s
+n 0.6695 0.4000 0.0008 0.0008 0 360 EARC s
+n 0.6696 0.4000 0.0008 0.0008 0 360 EARC s
+n 0.6696 0.4078 0.0008 0.0008 0 360 EARC s
+n 0.6696 0.4078 0.0008 0.0008 0 360 EARC s
+n 0.6696 0.4078 0.0008 0.0008 0 360 EARC s
+n 0.6696 0.4078 0.0008 0.0008 0 360 EARC s
+n 0.6696 0.4078 0.0008 0.0008 0 360 EARC s
+n 0.6707 0.4078 0.0008 0.0008 0 360 EARC s
+n 0.6707 0.4078 0.0008 0.0008 0 360 EARC s
+n 0.6707 0.4079 0.0008 0.0008 0 360 EARC s
+n 0.6707 0.4079 0.0008 0.0008 0 360 EARC s
+n 0.6707 0.4079 0.0008 0.0008 0 360 EARC s
+n 0.6707 0.4079 0.0008 0.0008 0 360 EARC s
+n 0.6707 0.4079 0.0008 0.0008 0 360 EARC s
+n 0.6707 0.4079 0.0008 0.0008 0 360 EARC s
+n 0.6707 0.4079 0.0008 0.0008 0 360 EARC s
+n 0.6708 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6709 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6948 0.3999 0.0008 0.0008 0 360 EARC s
+n 0.6948 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6948 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6948 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6948 0.3999 0.0008 0.0008 0 360 EARC s
+n 0.6949 0.3999 0.0008 0.0008 0 360 EARC s
+n 0.6949 0.3999 0.0008 0.0008 0 360 EARC s
+n 0.6949 0.4079 0.0008 0.0008 0 360 EARC s
+n 0.6949 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6949 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6949 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6949 0.3999 0.0008 0.0008 0 360 EARC s
+n 0.6950 0.3999 0.0008 0.0008 0 360 EARC s
+n 0.6950 0.3999 0.0008 0.0008 0 360 EARC s
+n 0.6950 0.4079 0.0008 0.0008 0 360 EARC s
+n 0.6950 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6950 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6950 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6950 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6950 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6950 0.3999 0.0008 0.0008 0 360 EARC s
+n 0.6950 0.3999 0.0008 0.0008 0 360 EARC s
+n 0.6950 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6950 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6950 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6950 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6950 0.3999 0.0008 0.0008 0 360 EARC s
+n 0.6951 0.3999 0.0008 0.0008 0 360 EARC s
+n 0.6951 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6951 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6951 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6951 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6951 0.4080 0.0008 0.0008 0 360 EARC s
+n 0.6951 0.4249 0.0008 0.0008 0 360 EARC s
+n 0.6951 0.3999 0.0008 0.0008 0 360 EARC s
+n 0.6951 0.4169 0.0008 0.0008 0 360 EARC s
+n 0.6951 0.4352 0.0008 0.0008 0 360 EARC s
+n 0.6951 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6951 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6951 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6951 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6951 0.4433 0.0008 0.0008 0 360 EARC s
+n 0.6951 0.4352 0.0008 0.0008 0 360 EARC s
+n 0.6951 0.4352 0.0008 0.0008 0 360 EARC s
+n 0.6951 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6952 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6952 0.4433 0.0008 0.0008 0 360 EARC s
+n 0.6952 0.4433 0.0008 0.0008 0 360 EARC s
+n 0.6952 0.4352 0.0008 0.0008 0 360 EARC s
+n 0.6952 0.4352 0.0008 0.0008 0 360 EARC s
+n 0.6952 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6952 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6952 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6952 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6952 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6952 0.4433 0.0008 0.0008 0 360 EARC s
+n 0.6952 0.4352 0.0008 0.0008 0 360 EARC s
+n 0.6952 0.4352 0.0008 0.0008 0 360 EARC s
+n 0.6952 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6952 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6952 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6952 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6952 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6952 0.4352 0.0008 0.0008 0 360 EARC s
+n 0.6952 0.4352 0.0008 0.0008 0 360 EARC s
+n 0.6952 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6971 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6971 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6971 0.4352 0.0008 0.0008 0 360 EARC s
+n 0.6971 0.4352 0.0008 0.0008 0 360 EARC s
+n 0.6971 0.4352 0.0008 0.0008 0 360 EARC s
+n 0.6971 0.4430 0.0008 0.0008 0 360 EARC s
+n 0.6971 0.4431 0.0008 0.0008 0 360 EARC s
+n 0.6971 0.4431 0.0008 0.0008 0 360 EARC s
+n 0.6972 0.4431 0.0008 0.0008 0 360 EARC s
+n 0.6976 0.4431 0.0008 0.0008 0 360 EARC s
+n 0.6976 0.4431 0.0008 0.0008 0 360 EARC s
+n 0.6978 0.4431 0.0008 0.0008 0 360 EARC s
+n 0.6979 0.4431 0.0008 0.0008 0 360 EARC s
+n 0.6981 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6982 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6982 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6982 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6983 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6983 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6983 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6986 0.4432 0.0008 0.0008 0 360 EARC s
+n 0.6986 0.4531 0.0008 0.0008 0 360 EARC s
+n 0.6986 0.4531 0.0008 0.0008 0 360 EARC s
+n 0.6987 0.4610 0.0008 0.0008 0 360 EARC s
+n 0.6987 0.4610 0.0008 0.0008 0 360 EARC s
+n 0.6988 0.4610 0.0008 0.0008 0 360 EARC s
+n 0.6988 0.4610 0.0008 0.0008 0 360 EARC s
+n 0.6988 0.4610 0.0008 0.0008 0 360 EARC s
+n 0.6989 0.4610 0.0008 0.0008 0 360 EARC s
+n 0.6989 0.4610 0.0008 0.0008 0 360 EARC s
+n 0.6989 0.4610 0.0008 0.0008 0 360 EARC s
+n 0.6990 0.4610 0.0008 0.0008 0 360 EARC s
+n 0.6990 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.6992 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.6993 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.6993 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.6994 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.6994 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.6996 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.6998 0.4612 0.0008 0.0008 0 360 EARC s
+n 0.7154 0.4531 0.0008 0.0008 0 360 EARC s
+n 0.7154 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4613 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4613 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4531 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4531 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4531 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4612 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4531 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4531 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4531 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4612 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4612 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4612 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4531 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4531 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4710 0.0008 0.0008 0 360 EARC s
+n 0.7155 0.4790 0.0008 0.0008 0 360 EARC s
+n 0.7156 0.4790 0.0008 0.0008 0 360 EARC s
+n 0.7156 0.4790 0.0008 0.0008 0 360 EARC s
+n 0.7156 0.4790 0.0008 0.0008 0 360 EARC s
+n 0.7156 0.4710 0.0008 0.0008 0 360 EARC s
+n 0.7156 0.4710 0.0008 0.0008 0 360 EARC s
+n 0.7156 0.4790 0.0008 0.0008 0 360 EARC s
+n 0.7156 0.4531 0.0008 0.0008 0 360 EARC s
+n 0.7156 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7156 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7156 0.4710 0.0008 0.0008 0 360 EARC s
+n 0.7156 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7156 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7156 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7157 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7157 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7157 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7157 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7157 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7157 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7157 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7157 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7157 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7157 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7157 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7157 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7157 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7157 0.4612 0.0008 0.0008 0 360 EARC s
+n 0.7157 0.4612 0.0008 0.0008 0 360 EARC s
+n 0.7157 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7157 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7157 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7157 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7157 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7158 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7158 0.4612 0.0008 0.0008 0 360 EARC s
+n 0.7158 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7158 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7158 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7158 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7158 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7158 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7158 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7158 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7159 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7159 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7159 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7160 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7160 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7161 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7161 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7163 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7166 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7166 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7167 0.4605 0.0008 0.0008 0 360 EARC s
+n 0.7167 0.4605 0.0008 0.0008 0 360 EARC s
+n 0.7167 0.4605 0.0008 0.0008 0 360 EARC s
+n 0.7169 0.4605 0.0008 0.0008 0 360 EARC s
+n 0.7170 0.4605 0.0008 0.0008 0 360 EARC s
+n 0.7170 0.4605 0.0008 0.0008 0 360 EARC s
+n 0.7170 0.4606 0.0008 0.0008 0 360 EARC s
+n 0.7171 0.4606 0.0008 0.0008 0 360 EARC s
+n 0.7171 0.4606 0.0008 0.0008 0 360 EARC s
+n 0.7172 0.4606 0.0008 0.0008 0 360 EARC s
+n 0.7172 0.4606 0.0008 0.0008 0 360 EARC s
+n 0.7172 0.4607 0.0008 0.0008 0 360 EARC s
+n 0.7173 0.4607 0.0008 0.0008 0 360 EARC s
+n 0.7173 0.4608 0.0008 0.0008 0 360 EARC s
+n 0.7174 0.4610 0.0008 0.0008 0 360 EARC s
+n 0.7176 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7176 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7177 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4530 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4611 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4699 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4780 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4780 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4780 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4780 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4699 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4699 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4780 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4882 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7359 0.4882 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4882 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4882 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4882 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4963 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4779 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4882 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4699 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4779 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4779 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4882 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4882 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4882 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.4962 0.0008 0.0008 0 360 EARC s
+n 0.7360 0.5144 0.0008 0.0008 0 360 EARC s
+n 0.7361 0.5144 0.0008 0.0008 0 360 EARC s
+n 0.7361 0.5144 0.0008 0.0008 0 360 EARC s
+n 0.7361 0.5144 0.0008 0.0008 0 360 EARC s
+n 0.7361 0.5064 0.0008 0.0008 0 360 EARC s
+n 0.7361 0.5064 0.0008 0.0008 0 360 EARC s
+n 0.7361 0.5064 0.0008 0.0008 0 360 EARC s
+n 0.7361 0.5064 0.0008 0.0008 0 360 EARC s
+n 0.7361 0.5144 0.0008 0.0008 0 360 EARC s
+n 0.7361 0.5144 0.0008 0.0008 0 360 EARC s
+n 0.7361 0.5144 0.0008 0.0008 0 360 EARC s
+n 0.7362 0.5144 0.0008 0.0008 0 360 EARC s
+n 0.7363 0.5064 0.0008 0.0008 0 360 EARC s
+n 0.7363 0.5064 0.0008 0.0008 0 360 EARC s
+n 0.7364 0.5144 0.0008 0.0008 0 360 EARC s
+n 0.7364 0.5144 0.0008 0.0008 0 360 EARC s
+n 0.7364 0.4696 0.0008 0.0008 0 360 EARC s
+n 0.7365 0.5144 0.0008 0.0008 0 360 EARC s
+n 0.7365 0.5245 0.0008 0.0008 0 360 EARC s
+n 0.7366 0.5325 0.0008 0.0008 0 360 EARC s
+n 0.7366 0.5325 0.0008 0.0008 0 360 EARC s
+n 0.7366 0.5326 0.0008 0.0008 0 360 EARC s
+n 0.7367 0.5326 0.0008 0.0008 0 360 EARC s
+n 0.7367 0.5326 0.0008 0.0008 0 360 EARC s
+n 0.7368 0.5429 0.0008 0.0008 0 360 EARC s
+n 0.7368 0.5429 0.0008 0.0008 0 360 EARC s
+n 0.7369 0.5429 0.0008 0.0008 0 360 EARC s
+n 0.7369 0.5507 0.0008 0.0008 0 360 EARC s
+n 0.7369 0.5507 0.0008 0.0008 0 360 EARC s
+n 0.7370 0.5507 0.0008 0.0008 0 360 EARC s
+n 0.7370 0.5508 0.0008 0.0008 0 360 EARC s
+n 0.7371 0.5508 0.0008 0.0008 0 360 EARC s
+n 0.7371 0.5508 0.0008 0.0008 0 360 EARC s
+n 0.7371 0.5508 0.0008 0.0008 0 360 EARC s
+n 0.7372 0.5508 0.0008 0.0008 0 360 EARC s
+n 0.7373 0.5509 0.0008 0.0008 0 360 EARC s
+n 0.7373 0.5610 0.0008 0.0008 0 360 EARC s
+n 0.7374 0.5610 0.0008 0.0008 0 360 EARC s
+n 0.7375 0.5610 0.0008 0.0008 0 360 EARC s
+n 0.7376 0.5689 0.0008 0.0008 0 360 EARC s
+n 0.7377 0.5689 0.0008 0.0008 0 360 EARC s
+n 0.7377 0.5689 0.0008 0.0008 0 360 EARC s
+n 0.7377 0.5689 0.0008 0.0008 0 360 EARC s
+n 0.7378 0.5689 0.0008 0.0008 0 360 EARC s
+n 0.7379 0.5689 0.0008 0.0008 0 360 EARC s
+n 0.7379 0.5690 0.0008 0.0008 0 360 EARC s
+n 0.7380 0.5690 0.0008 0.0008 0 360 EARC s
+n 0.7381 0.5690 0.0008 0.0008 0 360 EARC s
+n 0.7382 0.5690 0.0008 0.0008 0 360 EARC s
+n 0.7383 0.5690 0.0008 0.0008 0 360 EARC s
+n 0.7383 0.5690 0.0008 0.0008 0 360 EARC s
+n 0.7384 0.5690 0.0008 0.0008 0 360 EARC s
+n 0.7384 0.5976 0.0008 0.0008 0 360 EARC s
+n 0.7385 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7385 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7386 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7386 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7387 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7387 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7389 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7390 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7390 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7390 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7391 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7391 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7561 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7562 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7562 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7562 0.6054 0.0008 0.0008 0 360 EARC s
+n 0.7562 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7562 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7562 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7562 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7562 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7562 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7562 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7562 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7562 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7562 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7562 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7562 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7562 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7563 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7563 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7563 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7563 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7563 0.6057 0.0008 0.0008 0 360 EARC s
+n 0.7563 0.6057 0.0008 0.0008 0 360 EARC s
+n 0.7563 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7563 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7564 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7564 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7564 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7564 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7564 0.6056 0.0008 0.0008 0 360 EARC s
+n 0.7564 0.6151 0.0008 0.0008 0 360 EARC s
+n 0.7564 0.6231 0.0008 0.0008 0 360 EARC s
+n 0.7564 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7564 0.6151 0.0008 0.0008 0 360 EARC s
+n 0.7564 0.6231 0.0008 0.0008 0 360 EARC s
+n 0.7564 0.6231 0.0008 0.0008 0 360 EARC s
+n 0.7564 0.6231 0.0008 0.0008 0 360 EARC s
+n 0.7564 0.6231 0.0008 0.0008 0 360 EARC s
+n 0.7564 0.6231 0.0008 0.0008 0 360 EARC s
+n 0.7564 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7564 0.6151 0.0008 0.0008 0 360 EARC s
+n 0.7564 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7564 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7564 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7572 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7572 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7572 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7572 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7572 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7573 0.5975 0.0008 0.0008 0 360 EARC s
+n 0.7573 0.6052 0.0008 0.0008 0 360 EARC s
+n 0.7575 0.6052 0.0008 0.0008 0 360 EARC s
+n 0.7576 0.6052 0.0008 0.0008 0 360 EARC s
+n 0.7576 0.6053 0.0008 0.0008 0 360 EARC s
+n 0.7577 0.6053 0.0008 0.0008 0 360 EARC s
+n 0.7577 0.6053 0.0008 0.0008 0 360 EARC s
+n 0.7577 0.6053 0.0008 0.0008 0 360 EARC s
+n 0.7578 0.6053 0.0008 0.0008 0 360 EARC s
+n 0.7578 0.6054 0.0008 0.0008 0 360 EARC s
+n 0.7578 0.6054 0.0008 0.0008 0 360 EARC s
+n 0.7579 0.6054 0.0008 0.0008 0 360 EARC s
+n 0.7579 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7579 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7580 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7580 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7581 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7583 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7583 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7584 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7584 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7584 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7585 0.6147 0.0008 0.0008 0 360 EARC s
+n 0.7585 0.6227 0.0008 0.0008 0 360 EARC s
+n 0.7585 0.6227 0.0008 0.0008 0 360 EARC s
+n 0.7586 0.6227 0.0008 0.0008 0 360 EARC s
+n 0.7752 0.5974 0.0008 0.0008 0 360 EARC s
+n 0.7752 0.5974 0.0008 0.0008 0 360 EARC s
+n 0.7752 0.6054 0.0008 0.0008 0 360 EARC s
+n 0.7752 0.6054 0.0008 0.0008 0 360 EARC s
+n 0.7752 0.6055 0.0008 0.0008 0 360 EARC s
+n 0.7752 0.5974 0.0008 0.0008 0 360 EARC s
+n 0.7752 0.5974 0.0008 0.0008 0 360 EARC s
+n 0.7752 0.5974 0.0008 0.0008 0 360 EARC s
+n 0.7752 0.6054 0.0008 0.0008 0 360 EARC s
+n 0.7752 0.6054 0.0008 0.0008 0 360 EARC s
+n 0.7752 0.6225 0.0008 0.0008 0 360 EARC s
+n 0.7753 0.6225 0.0008 0.0008 0 360 EARC s
+n 0.7753 0.6225 0.0008 0.0008 0 360 EARC s
+n 0.7753 0.6225 0.0008 0.0008 0 360 EARC s
+n 0.7753 0.6144 0.0008 0.0008 0 360 EARC s
+n 0.7753 0.6144 0.0008 0.0008 0 360 EARC s
+n 0.7753 0.5973 0.0008 0.0008 0 360 EARC s
+n 0.7753 0.5973 0.0008 0.0008 0 360 EARC s
+n 0.7753 0.6053 0.0008 0.0008 0 360 EARC s
+n 0.7754 0.6054 0.0008 0.0008 0 360 EARC s
+n 0.7754 0.5973 0.0008 0.0008 0 360 EARC s
+n 0.7754 0.5973 0.0008 0.0008 0 360 EARC s
+n 0.7754 0.5973 0.0008 0.0008 0 360 EARC s
+n 0.7754 0.5973 0.0008 0.0008 0 360 EARC s
+n 0.7754 0.6054 0.0008 0.0008 0 360 EARC s
+n 0.7754 0.6054 0.0008 0.0008 0 360 EARC s
+n 0.7754 0.6054 0.0008 0.0008 0 360 EARC s
+n 0.7754 0.6054 0.0008 0.0008 0 360 EARC s
+n 0.7754 0.6054 0.0008 0.0008 0 360 EARC s
+n 0.7754 0.6054 0.0008 0.0008 0 360 EARC s
+n 0.7754 0.5973 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.5973 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.5973 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6053 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6054 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6054 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6054 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6054 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.5973 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.5973 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6054 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6141 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6221 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6221 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6221 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6221 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6141 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6141 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6221 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6221 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6403 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6403 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6403 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6403 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6322 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6322 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6402 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6403 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6403 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6506 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6586 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6586 0.0008 0.0008 0 360 EARC s
+n 0.7755 0.6322 0.0008 0.0008 0 360 EARC s
+n 0.7756 0.6506 0.0008 0.0008 0 360 EARC s
+n 0.7756 0.6586 0.0008 0.0008 0 360 EARC s
+n 0.7780 0.6586 0.0008 0.0008 0 360 EARC s
+n 0.7780 0.6586 0.0008 0.0008 0 360 EARC s
+n 0.7780 0.6505 0.0008 0.0008 0 360 EARC s
+n 0.7780 0.6586 0.0008 0.0008 0 360 EARC s
+n 0.7780 0.6586 0.0008 0.0008 0 360 EARC s
+n 0.7780 0.6586 0.0008 0.0008 0 360 EARC s
+n 0.7780 0.6689 0.0008 0.0008 0 360 EARC s
+n 0.7780 0.6769 0.0008 0.0008 0 360 EARC s
+n 0.7780 0.6769 0.0008 0.0008 0 360 EARC s
+n 0.7780 0.6769 0.0008 0.0008 0 360 EARC s
+n 0.7780 0.6769 0.0008 0.0008 0 360 EARC s
+n 0.7781 0.6769 0.0008 0.0008 0 360 EARC s
+n 0.7781 0.6769 0.0008 0.0008 0 360 EARC s
+n 0.7783 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7783 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7783 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7784 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7786 0.6950 0.0008 0.0008 0 360 EARC s
+n 0.7786 0.6950 0.0008 0.0008 0 360 EARC s
+n 0.7787 0.6950 0.0008 0.0008 0 360 EARC s
+n 0.7787 0.6950 0.0008 0.0008 0 360 EARC s
+n 0.7788 0.6950 0.0008 0.0008 0 360 EARC s
+n 0.7788 0.6950 0.0008 0.0008 0 360 EARC s
+n 0.7788 0.6950 0.0008 0.0008 0 360 EARC s
+n 0.7789 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.7789 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.7789 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.7790 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.7791 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.7791 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.7791 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.7792 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.7792 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.7794 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.7794 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.7795 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.7795 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7796 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7797 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7797 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7798 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7798 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7799 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7799 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7800 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7953 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7953 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7953 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7953 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7953 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7953 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7953 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7953 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7953 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7953 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7953 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.7953 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.7954 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7954 0.6953 0.0008 0.0008 0 360 EARC s
+n 0.7954 0.6953 0.0008 0.0008 0 360 EARC s
+n 0.7954 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7954 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7954 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7954 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7954 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7954 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7954 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7955 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7955 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7955 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7955 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.7955 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7955 0.6953 0.0008 0.0008 0 360 EARC s
+n 0.7955 0.6953 0.0008 0.0008 0 360 EARC s
+n 0.7955 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7955 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7955 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7955 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7955 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7956 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7956 0.6953 0.0008 0.0008 0 360 EARC s
+n 0.7956 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7956 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7956 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7956 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7956 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7956 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7956 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7956 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7956 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7956 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7956 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7956 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7957 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7957 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7957 0.6953 0.0008 0.0008 0 360 EARC s
+n 0.7957 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7957 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7957 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7957 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7957 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7957 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7957 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7957 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7957 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7957 0.6872 0.0008 0.0008 0 360 EARC s
+n 0.7957 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7957 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7957 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7958 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7984 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7984 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7984 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.7984 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.7984 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.7984 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.7985 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.7985 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.7985 0.6949 0.0008 0.0008 0 360 EARC s
+n 0.7985 0.6950 0.0008 0.0008 0 360 EARC s
+n 0.7985 0.6950 0.0008 0.0008 0 360 EARC s
+n 0.7985 0.6950 0.0008 0.0008 0 360 EARC s
+n 0.7985 0.6950 0.0008 0.0008 0 360 EARC s
+n 0.7985 0.6950 0.0008 0.0008 0 360 EARC s
+n 0.7985 0.6950 0.0008 0.0008 0 360 EARC s
+n 0.7985 0.6950 0.0008 0.0008 0 360 EARC s
+n 0.7985 0.6950 0.0008 0.0008 0 360 EARC s
+n 0.7998 0.6950 0.0008 0.0008 0 360 EARC s
+n 0.7998 0.6950 0.0008 0.0008 0 360 EARC s
+n 0.7998 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.7998 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.7998 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.7998 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.7998 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8002 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8002 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8002 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8004 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8188 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8188 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8188 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8188 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8188 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8188 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8188 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8189 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8189 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.8189 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8189 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8189 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8189 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8189 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8189 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8189 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8189 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8189 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8189 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8189 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8189 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8189 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8189 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6953 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6953 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8190 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8191 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8191 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8191 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8191 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8191 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8191 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.8191 0.6953 0.0008 0.0008 0 360 EARC s
+n 0.8191 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8191 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8191 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8191 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8191 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8191 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.8191 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.8192 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8192 0.6953 0.0008 0.0008 0 360 EARC s
+n 0.8192 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8192 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8192 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8192 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8247 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8247 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8247 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8247 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8247 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8247 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8247 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.8263 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.8263 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8487 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8487 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8487 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8487 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8487 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8488 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8488 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8488 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.8488 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8488 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8488 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8488 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8488 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8488 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8488 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8488 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.8488 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.8488 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8488 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8488 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8488 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8488 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8488 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8489 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8489 0.6953 0.0008 0.0008 0 360 EARC s
+n 0.8489 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8489 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8489 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8489 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8489 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8489 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8489 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8489 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8489 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.8489 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8490 0.6953 0.0008 0.0008 0 360 EARC s
+n 0.8490 0.6953 0.0008 0.0008 0 360 EARC s
+n 0.8490 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8490 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8490 0.6871 0.0008 0.0008 0 360 EARC s
+n 0.8490 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.8490 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8490 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8490 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8490 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8490 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8490 0.6870 0.0008 0.0008 0 360 EARC s
+n 0.8490 0.6870 0.0008 0.0008 0 360 EARC s
+n 0.8490 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.8490 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.8491 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8491 0.6870 0.0008 0.0008 0 360 EARC s
+n 0.8491 0.6870 0.0008 0.0008 0 360 EARC s
+n 0.8491 0.6870 0.0008 0.0008 0 360 EARC s
+n 0.8491 0.6870 0.0008 0.0008 0 360 EARC s
+n 0.8491 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.8491 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.8491 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8491 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8491 0.6953 0.0008 0.0008 0 360 EARC s
+n 0.8491 0.6870 0.0008 0.0008 0 360 EARC s
+n 0.8491 0.6870 0.0008 0.0008 0 360 EARC s
+n 0.8491 0.6870 0.0008 0.0008 0 360 EARC s
+n 0.8491 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8491 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8557 0.6952 0.0008 0.0008 0 360 EARC s
+n 0.8557 0.6870 0.0008 0.0008 0 360 EARC s
+n 0.8808 0.6870 0.0008 0.0008 0 360 EARC s
+n 0.8808 0.6870 0.0008 0.0008 0 360 EARC s
+n 0.8808 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.8808 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.8808 0.6951 0.0008 0.0008 0 360 EARC s
+n 0.8808 0.7089 0.0008 0.0008 0 360 EARC s
+n 0.8808 0.6870 0.0008 0.0008 0 360 EARC s
+n 0.8808 0.6870 0.0008 0.0008 0 360 EARC s
+n 0.8808 0.6870 0.0008 0.0008 0 360 EARC s
+n 0.8808 0.7007 0.0008 0.0008 0 360 EARC s
+n 0.8808 0.7007 0.0008 0.0008 0 360 EARC s
+n 0.8808 0.7087 0.0008 0.0008 0 360 EARC s
+n 0.8808 0.7089 0.0008 0.0008 0 360 EARC s
+n 0.8808 0.7089 0.0008 0.0008 0 360 EARC s
+n 0.8808 0.7007 0.0008 0.0008 0 360 EARC s
+n 0.8808 0.7007 0.0008 0.0008 0 360 EARC s
+n 0.8808 0.7007 0.0008 0.0008 0 360 EARC s
+n 0.8809 0.7007 0.0008 0.0008 0 360 EARC s
+n 0.8809 0.7188 0.0008 0.0008 0 360 EARC s
+n 0.8809 0.7268 0.0008 0.0008 0 360 EARC s
+n 0.8809 0.7268 0.0008 0.0008 0 360 EARC s
+n 0.8809 0.7269 0.0008 0.0008 0 360 EARC s
+n 0.8809 0.7188 0.0008 0.0008 0 360 EARC s
+n 0.8809 0.7188 0.0008 0.0008 0 360 EARC s
+n 0.8809 0.7188 0.0008 0.0008 0 360 EARC s
+n 0.8809 0.7188 0.0008 0.0008 0 360 EARC s
+n 0.8809 0.7188 0.0008 0.0008 0 360 EARC s
+n 0.8809 0.7268 0.0008 0.0008 0 360 EARC s
+n 0.8809 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.8810 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.8810 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.8810 0.7450 0.0008 0.0008 0 360 EARC s
+n 0.8810 0.7369 0.0008 0.0008 0 360 EARC s
+n 0.8810 0.7369 0.0008 0.0008 0 360 EARC s
+n 0.8810 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.8810 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.8810 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.8810 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.8810 0.7450 0.0008 0.0008 0 360 EARC s
+n 0.8810 0.7450 0.0008 0.0008 0 360 EARC s
+n 0.8810 0.7369 0.0008 0.0008 0 360 EARC s
+n 0.8810 0.7369 0.0008 0.0008 0 360 EARC s
+n 0.8810 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.8811 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.8811 0.7450 0.0008 0.0008 0 360 EARC s
+n 0.8811 0.7450 0.0008 0.0008 0 360 EARC s
+n 0.8811 0.7369 0.0008 0.0008 0 360 EARC s
+n 0.8811 0.7369 0.0008 0.0008 0 360 EARC s
+n 0.8811 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.8811 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.8811 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.8811 0.7450 0.0008 0.0008 0 360 EARC s
+n 0.8811 0.7450 0.0008 0.0008 0 360 EARC s
+n 0.8811 0.7450 0.0008 0.0008 0 360 EARC s
+n 0.8811 0.7369 0.0008 0.0008 0 360 EARC s
+n 0.8811 0.7369 0.0008 0.0008 0 360 EARC s
+n 0.8811 0.7369 0.0008 0.0008 0 360 EARC s
+n 0.8811 0.7369 0.0008 0.0008 0 360 EARC s
+n 0.8811 0.7369 0.0008 0.0008 0 360 EARC s
+n 0.8812 0.7369 0.0008 0.0008 0 360 EARC s
+n 0.8812 0.7369 0.0008 0.0008 0 360 EARC s
+n 0.8812 0.7369 0.0008 0.0008 0 360 EARC s
+n 0.8812 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.8812 0.7369 0.0008 0.0008 0 360 EARC s
+n 0.8812 0.7369 0.0008 0.0008 0 360 EARC s
+n 0.9124 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9124 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9124 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9124 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9124 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9124 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9124 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9124 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9124 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9124 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9124 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9124 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9124 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9124 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9125 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9125 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9125 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9125 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9125 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9125 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9125 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9125 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9125 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9125 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9125 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9125 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9125 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9125 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9125 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9125 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9125 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9126 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9126 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9126 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9126 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9126 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9126 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9126 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9126 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9127 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9127 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9127 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9127 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9127 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9127 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9127 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9127 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9127 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9127 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9127 0.7450 0.0008 0.0008 0 360 EARC s
+n 0.9127 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9127 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9127 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9127 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9127 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9127 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9128 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9128 0.7450 0.0008 0.0008 0 360 EARC s
+n 0.9128 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9128 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9128 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9128 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9128 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9128 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9128 0.7450 0.0008 0.0008 0 360 EARC s
+n 0.9179 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9179 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9179 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9180 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9180 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9180 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9353 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9353 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9353 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9353 0.7447 0.0008 0.0008 0 360 EARC s
+n 0.9353 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9353 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9353 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9353 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9354 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9354 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9354 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9354 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9354 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9354 0.7450 0.0008 0.0008 0 360 EARC s
+n 0.9354 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9354 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9354 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9354 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9354 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9354 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9354 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9354 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9354 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9354 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9354 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9354 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9354 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9354 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9354 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9355 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9355 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9355 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9355 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9355 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9355 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9355 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9355 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9355 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9355 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9355 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9355 0.7466 0.0008 0.0008 0 360 EARC s
+n 0.9355 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9355 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9355 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9355 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9356 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9356 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9356 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9356 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9356 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9356 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9356 0.7449 0.0008 0.0008 0 360 EARC s
+n 0.9356 0.7450 0.0008 0.0008 0 360 EARC s
+n 0.9356 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9356 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9356 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9356 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9356 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9356 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9356 0.7450 0.0008 0.0008 0 360 EARC s
+n 0.9356 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9356 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9356 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9356 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9356 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9429 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9430 0.7448 0.0008 0.0008 0 360 EARC s
+n 0.9430 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9430 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9430 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9430 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9430 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9430 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9430 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9430 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9430 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9430 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9458 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9458 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9458 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9458 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9458 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9458 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9458 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9482 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9482 0.7368 0.0008 0.0008 0 360 EARC s
+n 0.9482 0.7436 0.0008 0.0008 0 360 EARC s
+n 0.9482 0.7437 0.0008 0.0008 0 360 EARC s
+n 0.9482 0.7437 0.0008 0.0008 0 360 EARC s
+n 0.9482 0.7439 0.0008 0.0008 0 360 EARC s
+n 0.9482 0.7439 0.0008 0.0008 0 360 EARC s
+n 0.9482 0.7440 0.0008 0.0008 0 360 EARC s
+n 0.9482 0.7441 0.0008 0.0008 0 360 EARC s
+n 0.9491 0.7442 0.0008 0.0008 0 360 EARC s
+n 0.9491 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9491 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9491 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9491 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9491 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9491 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9491 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9491 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9491 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9491 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9491 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9491 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9491 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9491 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9491 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9491 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9491 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9491 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9491 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9491 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9492 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9492 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9492 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9492 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9492 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9492 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9492 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9494 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9495 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9495 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9496 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9496 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9496 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9497 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9497 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9497 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9500 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9500 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9500 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9501 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9503 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9503 0.7513 0.0008 0.0008 0 360 EARC s
+n 0.9504 0.7513 0.0008 0.0008 0 360 EARC s
+n 0.9504 0.7513 0.0008 0.0008 0 360 EARC s
+n 0.9505 0.7549 0.0008 0.0008 0 360 EARC s
+n 0.9507 0.7508 0.0008 0.0008 0 360 EARC s
+n 0.9507 0.7508 0.0008 0.0008 0 360 EARC s
+n 0.9508 0.7508 0.0008 0.0008 0 360 EARC s
+n 0.9508 0.7508 0.0008 0.0008 0 360 EARC s
+n 0.9508 0.7503 0.0008 0.0008 0 360 EARC s
+n 0.9511 0.7503 0.0008 0.0008 0 360 EARC s
+n 0.9511 0.7503 0.0008 0.0008 0 360 EARC s
+n 0.9512 0.7503 0.0008 0.0008 0 360 EARC s
+n 0.9512 0.7498 0.0008 0.0008 0 360 EARC s
+n 0.9513 0.7498 0.0008 0.0008 0 360 EARC s
+n 0.9514 0.7498 0.0008 0.0008 0 360 EARC s
+n 0.9514 0.7498 0.0008 0.0008 0 360 EARC s
+n 0.9515 0.7493 0.0008 0.0008 0 360 EARC s
+n 0.9525 0.7493 0.0008 0.0008 0 360 EARC s
+n 0.9525 0.7493 0.0008 0.0008 0 360 EARC s
+n 0.9526 0.7493 0.0008 0.0008 0 360 EARC s
+n 0.9529 0.7506 0.0008 0.0008 0 360 EARC s
+n 0.9540 0.7506 0.0008 0.0008 0 360 EARC s
+n 0.9540 0.7506 0.0008 0.0008 0 360 EARC s
+n 0.9540 0.7539 0.0008 0.0008 0 360 EARC s
+n 0.9543 0.7488 0.0008 0.0008 0 360 EARC s
+n 0.9553 0.7501 0.0008 0.0008 0 360 EARC s
+n 0.9553 0.7501 0.0008 0.0008 0 360 EARC s
+n 0.9553 0.7501 0.0008 0.0008 0 360 EARC s
+n 0.9556 0.7538 0.0008 0.0008 0 360 EARC s
+n 0.9567 0.7484 0.0008 0.0008 0 360 EARC s
+n 0.9567 0.7484 0.0008 0.0008 0 360 EARC s
+n 0.9568 0.7484 0.0008 0.0008 0 360 EARC s
+n 0.9571 0.6768 0.0008 0.0008 0 360 EARC s
+n 0.9577 0.6768 0.0008 0.0008 0 360 EARC s
+n 0.9580 0.6847 0.0008 0.0008 0 360 EARC s
+n 0.9580 0.7481 0.0008 0.0008 0 360 EARC s
+n 0.9599 0.7535 0.0008 0.0008 0 360 EARC s
+n 0.9599 0.7536 0.0008 0.0008 0 360 EARC s
+n 0.9599 0.6765 0.0008 0.0008 0 360 EARC s
+n 0.9599 0.6765 0.0008 0.0008 0 360 EARC s
+n 0.9599 0.7536 0.0008 0.0008 0 360 EARC s
+n 0.9602 0.7537 0.0008 0.0008 0 360 EARC s
+n 0.9603 0.7538 0.0008 0.0008 0 360 EARC s
+n 0.9603 0.7539 0.0008 0.0008 0 360 EARC s
+n 0.9604 0.7539 0.0008 0.0008 0 360 EARC s
+n 0.9604 0.7540 0.0008 0.0008 0 360 EARC s
+n 0.9605 0.7542 0.0008 0.0008 0 360 EARC s
+n 0.9605 0.7544 0.0008 0.0008 0 360 EARC s
+n 0.9606 0.7544 0.0008 0.0008 0 360 EARC s
+n 0.9607 0.7544 0.0008 0.0008 0 360 EARC s
+n 0.9607 0.7544 0.0008 0.0008 0 360 EARC s
+n 0.9611 0.7545 0.0008 0.0008 0 360 EARC s
+n 0.9612 0.7545 0.0008 0.0008 0 360 EARC s
+n 0.9612 0.7545 0.0008 0.0008 0 360 EARC s
+n 0.9613 0.7547 0.0008 0.0008 0 360 EARC s
+n 0.9613 0.7499 0.0008 0.0008 0 360 EARC s
+n 0.9614 0.7547 0.0008 0.0008 0 360 EARC s
+n 0.9614 0.7547 0.0008 0.0008 0 360 EARC s
+n 0.9615 0.7549 0.0008 0.0008 0 360 EARC s
+n 0.9616 0.7549 0.0008 0.0008 0 360 EARC s
+n 0.9616 0.7549 0.0008 0.0008 0 360 EARC s
+n 0.9617 0.7549 0.0008 0.0008 0 360 EARC s
+n 0.9618 0.7549 0.0008 0.0008 0 360 EARC s
+n 0.9618 0.7549 0.0008 0.0008 0 360 EARC s
+n 0.9619 0.7549 0.0008 0.0008 0 360 EARC s
+n 0.9619 0.7549 0.0008 0.0008 0 360 EARC s
+n 0.9620 0.7549 0.0008 0.0008 0 360 EARC s
+n 0.9620 0.7550 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7551 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7551 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7552 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7553 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7554 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7554 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7554 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7557 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7558 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7561 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7561 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7562 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7562 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7562 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7564 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7565 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7567 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7567 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7568 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7570 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7571 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7572 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7574 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7574 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7575 0.0008 0.0008 0 360 EARC s
+n 0.9753 0.7576 0.0008 0.0008 0 360 EARC s
+n 0.9754 0.7576 0.0008 0.0008 0 360 EARC s
+n 0.9754 0.7576 0.0008 0.0008 0 360 EARC s
+n 0.9754 0.7576 0.0008 0.0008 0 360 EARC s
+n 0.9754 0.7576 0.0008 0.0008 0 360 EARC s
+n 0.9754 0.7576 0.0008 0.0008 0 360 EARC s
+n 0.9754 0.7576 0.0008 0.0008 0 360 EARC s
+n 0.9754 0.7577 0.0008 0.0008 0 360 EARC s
+n 0.9754 0.7577 0.0008 0.0008 0 360 EARC s
+n 0.9754 0.7577 0.0008 0.0008 0 360 EARC s
+n 0.9754 0.7577 0.0008 0.0008 0 360 EARC s
+n 0.9754 0.7578 0.0008 0.0008 0 360 EARC s
+n 0.9754 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9754 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9754 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9754 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9756 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9757 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9757 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9758 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9758 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9758 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9759 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9759 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9761 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9762 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9762 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9763 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9763 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9763 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9764 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9764 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9764 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9765 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9765 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9766 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9766 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9767 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9767 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9768 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9768 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9769 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9769 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9769 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9770 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9771 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9773 0.7635 0.0008 0.0008 0 360 EARC s
+n 0.9773 0.7642 0.0008 0.0008 0 360 EARC s
+n 0.9774 0.7642 0.0008 0.0008 0 360 EARC s
+n 0.9774 0.7642 0.0008 0.0008 0 360 EARC s
+n 0.9775 0.7690 0.0008 0.0008 0 360 EARC s
+n 0.9775 0.7638 0.0008 0.0008 0 360 EARC s
+n 0.9776 0.7638 0.0008 0.0008 0 360 EARC s
+n 0.9776 0.7638 0.0008 0.0008 0 360 EARC s
+n 0.9777 0.7638 0.0008 0.0008 0 360 EARC s
+n 0.9777 0.7633 0.0008 0.0008 0 360 EARC s
+n 0.9778 0.7633 0.0008 0.0008 0 360 EARC s
+n 0.9779 0.7633 0.0008 0.0008 0 360 EARC s
+n 0.9779 0.7633 0.0008 0.0008 0 360 EARC s
+n 0.9780 0.3570 0.0008 0.0008 0 360 EARC s
+n 0.9780 0.7629 0.0008 0.0008 0 360 EARC s
+n 0.9781 0.7629 0.0008 0.0008 0 360 EARC s
+n 0.9782 0.7629 0.0008 0.0008 0 360 EARC s
+n 0.9782 0.3568 0.0008 0.0008 0 360 EARC s
+n 0.9783 0.3568 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.3568 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.3569 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.7686 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.3568 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.3568 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.3568 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.3568 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.3568 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.3568 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.3568 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.3567 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.3567 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.3567 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.3567 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.7686 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.3567 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.3567 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.7686 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.7690 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.7690 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.7690 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.7691 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.7695 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9888 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9889 0.7696 0.0008 0.0008 0 360 EARC s
+n 0.9889 0.7696 0.0008 0.0008 0 360 EARC s
+n 0.9889 0.7697 0.0008 0.0008 0 360 EARC s
+n 0.9889 0.7697 0.0008 0.0008 0 360 EARC s
+n 0.9889 0.7700 0.0008 0.0008 0 360 EARC s
+n 0.9889 0.7700 0.0008 0.0008 0 360 EARC s
+n 0.9889 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9891 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9891 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9897 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9898 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9900 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9901 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9901 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9903 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9904 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9904 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9910 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9910 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9913 0.7641 0.0008 0.0008 0 360 EARC s
+n 0.9923 0.7641 0.0008 0.0008 0 360 EARC s
+n 0.9923 0.7641 0.0008 0.0008 0 360 EARC s
+n 0.9923 0.7690 0.0008 0.0008 0 360 EARC s
+n 0.9926 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9927 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9928 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9928 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9929 0.7687 0.0008 0.0008 0 360 EARC s
+n 0.9930 0.7631 0.0008 0.0008 0 360 EARC s
+n 0.9933 0.7631 0.0008 0.0008 0 360 EARC s
+n 0.9937 0.7631 0.0008 0.0008 0 360 EARC s
+n 0.9938 0.7686 0.0008 0.0008 0 360 EARC s
+n 0.9939 0.7687 0.0008 0.0008 0 360 EARC s
+n 0.9939 0.7688 0.0008 0.0008 0 360 EARC s
+n 0.9939 0.7688 0.0008 0.0008 0 360 EARC s
+n 0.9940 0.7688 0.0008 0.0008 0 360 EARC s
+n 0.9940 0.7689 0.0008 0.0008 0 360 EARC s
+n 0.9941 0.7689 0.0008 0.0008 0 360 EARC s
+n 0.9942 0.7690 0.0008 0.0008 0 360 EARC s
+n 0.9942 0.7692 0.0008 0.0008 0 360 EARC s
+n 0.9948 0.7692 0.0008 0.0008 0 360 EARC s
+n 0.9949 0.7692 0.0008 0.0008 0 360 EARC s
+n 0.9952 0.7636 0.0008 0.0008 0 360 EARC s
+n 0.9953 0.7692 0.0008 0.0008 0 360 EARC s
+n 0.9953 0.7692 0.0008 0.0008 0 360 EARC s
+n 0.9955 0.7692 0.0008 0.0008 0 360 EARC s
+n 0.9956 0.7692 0.0008 0.0008 0 360 EARC s
+n 0.9956 0.7692 0.0008 0.0008 0 360 EARC s
+n 0.9956 0.7693 0.0008 0.0008 0 360 EARC s
+n 0.9957 0.7693 0.0008 0.0008 0 360 EARC s
+n 0.9958 0.7693 0.0008 0.0008 0 360 EARC s
+n 0.9958 0.7780 0.0008 0.0008 0 360 EARC s
+n 0.9959 0.7780 0.0008 0.0008 0 360 EARC s
+n 0.9959 0.7780 0.0008 0.0008 0 360 EARC s
+n 0.9960 0.7850 0.0008 0.0008 0 360 EARC s
+n 0.9960 0.7775 0.0008 0.0008 0 360 EARC s
+n 0.9961 0.7775 0.0008 0.0008 0 360 EARC s
+n 0.9974 0.7775 0.0008 0.0008 0 360 EARC s
+n 0.9974 0.7775 0.0008 0.0008 0 360 EARC s
+n 0.9974 0.7770 0.0008 0.0008 0 360 EARC s
+n 0.9977 0.7770 0.0008 0.0008 0 360 EARC s
+n 0.9978 0.7770 0.0008 0.0008 0 360 EARC s
+n 0.9979 0.7770 0.0008 0.0008 0 360 EARC s
+n 0.9986 0.7708 0.0008 0.0008 0 360 EARC s
+n 0.9986 0.7708 0.0008 0.0008 0 360 EARC s
+n 0.9989 0.7709 0.0008 0.0008 0 360 EARC s
+n 0.9992 0.7766 0.0008 0.0008 0 360 EARC s
+n 0.9993 0.7701 0.0008 0.0008 0 360 EARC s
+n 1.0000 0.7701 0.0008 0.0008 0 360 EARC s
+n 1.0000 0.7702 0.0008 0.0008 0 360 EARC s
+n 1.0003 0.7706 0.0008 0.0008 0 360 EARC s
+n 1.0007 0.7687 0.0008 0.0008 0 360 EARC s
+n 1.0008 0.7688 0.0008 0.0008 0 360 EARC s
+n 1.0009 0.7689 0.0008 0.0008 0 360 EARC s
+n 1.0009 0.7689 0.0008 0.0008 0 360 EARC s
+n 1.0009 0.7690 0.0008 0.0008 0 360 EARC s
+n 1.0019 0.7690 0.0008 0.0008 0 360 EARC s
+n 1.0019 0.7690 0.0008 0.0008 0 360 EARC s
+n 1.0019 0.7690 0.0008 0.0008 0 360 EARC s
+n 1.0022 0.7690 0.0008 0.0008 0 360 EARC s
+n 1.0023 0.7691 0.0008 0.0008 0 360 EARC s
+n 1.0023 0.7691 0.0008 0.0008 0 360 EARC s
+n 1.0024 0.7691 0.0008 0.0008 0 360 EARC s
+n 1.0024 0.7691 0.0008 0.0008 0 360 EARC s
+n 1.0025 0.7692 0.0008 0.0008 0 360 EARC s
+n 1.0025 0.7693 0.0008 0.0008 0 360 EARC s
+n 1.0026 0.7693 0.0008 0.0008 0 360 EARC s
+n 1.0027 0.7693 0.0008 0.0008 0 360 EARC s
+n 1.0027 0.7693 0.0008 0.0008 0 360 EARC s
+n 1.0027 0.7694 0.0008 0.0008 0 360 EARC s
+n 1.0028 0.7695 0.0008 0.0008 0 360 EARC s
+n 1.0029 0.7777 0.0008 0.0008 0 360 EARC s
+n 1.0029 0.7777 0.0008 0.0008 0 360 EARC s
+n 1.0030 0.7777 0.0008 0.0008 0 360 EARC s
+n 1.0030 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0031 0.7765 0.0008 0.0008 0 360 EARC s
+n 1.0031 0.7772 0.0008 0.0008 0 360 EARC s
+n 1.0032 0.7772 0.0008 0.0008 0 360 EARC s
+n 1.0036 0.7772 0.0008 0.0008 0 360 EARC s
+n 1.0039 0.7695 0.0008 0.0008 0 360 EARC s
+n 1.0046 0.7695 0.0008 0.0008 0 360 EARC s
+n 1.0047 0.7696 0.0008 0.0008 0 360 EARC s
+n 1.0050 0.7762 0.0008 0.0008 0 360 EARC s
+n 1.0051 0.7779 0.0008 0.0008 0 360 EARC s
+n 1.0051 0.7779 0.0008 0.0008 0 360 EARC s
+n 1.0051 0.7779 0.0008 0.0008 0 360 EARC s
+n 1.0052 0.7839 0.0008 0.0008 0 360 EARC s
+n 1.0095 0.7688 0.0008 0.0008 0 360 EARC s
+n 1.0095 0.7688 0.0008 0.0008 0 360 EARC s
+n 1.0095 0.7689 0.0008 0.0008 0 360 EARC s
+n 1.0095 0.7689 0.0008 0.0008 0 360 EARC s
+n 1.0095 0.7689 0.0008 0.0008 0 360 EARC s
+n 1.0095 0.7689 0.0008 0.0008 0 360 EARC s
+n 1.0095 0.7689 0.0008 0.0008 0 360 EARC s
+n 1.0095 0.7690 0.0008 0.0008 0 360 EARC s
+n 1.0095 0.7690 0.0008 0.0008 0 360 EARC s
+n 1.0095 0.7691 0.0008 0.0008 0 360 EARC s
+n 1.0096 0.7692 0.0008 0.0008 0 360 EARC s
+n 1.0096 0.7692 0.0008 0.0008 0 360 EARC s
+n 1.0096 0.7773 0.0008 0.0008 0 360 EARC s
+n 1.0096 0.7773 0.0008 0.0008 0 360 EARC s
+n 1.0096 0.7773 0.0008 0.0008 0 360 EARC s
+n 1.0096 0.7773 0.0008 0.0008 0 360 EARC s
+n 1.0096 0.7773 0.0008 0.0008 0 360 EARC s
+n 1.0096 0.7773 0.0008 0.0008 0 360 EARC s
+n 1.0096 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0099 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0099 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0100 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0100 0.7833 0.0008 0.0008 0 360 EARC s
+n 1.0101 0.7833 0.0008 0.0008 0 360 EARC s
+n 1.0101 0.7833 0.0008 0.0008 0 360 EARC s
+n 1.0102 0.7834 0.0008 0.0008 0 360 EARC s
+n 1.0102 0.7834 0.0008 0.0008 0 360 EARC s
+n 1.0103 0.7834 0.0008 0.0008 0 360 EARC s
+n 1.0103 0.7835 0.0008 0.0008 0 360 EARC s
+n 1.0104 0.7835 0.0008 0.0008 0 360 EARC s
+n 1.0104 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0108 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0111 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0125 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0125 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0125 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0125 0.7775 0.0008 0.0008 0 360 EARC s
+n 1.0126 0.7775 0.0008 0.0008 0 360 EARC s
+n 1.0138 0.7775 0.0008 0.0008 0 360 EARC s
+n 1.0138 0.7829 0.0008 0.0008 0 360 EARC s
+n 1.0138 0.7829 0.0008 0.0008 0 360 EARC s
+n 1.0138 0.7829 0.0008 0.0008 0 360 EARC s
+n 1.0141 0.7830 0.0008 0.0008 0 360 EARC s
+n 1.0142 0.7772 0.0008 0.0008 0 360 EARC s
+n 1.0142 0.7829 0.0008 0.0008 0 360 EARC s
+n 1.0142 0.7829 0.0008 0.0008 0 360 EARC s
+n 1.0143 0.7829 0.0008 0.0008 0 360 EARC s
+n 1.0143 0.7830 0.0008 0.0008 0 360 EARC s
+n 1.0144 0.7830 0.0008 0.0008 0 360 EARC s
+n 1.0144 0.7834 0.0008 0.0008 0 360 EARC s
+n 1.0144 0.7834 0.0008 0.0008 0 360 EARC s
+n 1.0145 0.7835 0.0008 0.0008 0 360 EARC s
+n 1.0145 0.7835 0.0008 0.0008 0 360 EARC s
+n 1.0146 0.7836 0.0008 0.0008 0 360 EARC s
+n 1.0146 0.7836 0.0008 0.0008 0 360 EARC s
+n 1.0147 0.7836 0.0008 0.0008 0 360 EARC s
+n 1.0147 0.7836 0.0008 0.0008 0 360 EARC s
+n 1.0148 0.7836 0.0008 0.0008 0 360 EARC s
+n 1.0148 0.7836 0.0008 0.0008 0 360 EARC s
+n 1.0148 0.7836 0.0008 0.0008 0 360 EARC s
+n 1.0149 0.7837 0.0008 0.0008 0 360 EARC s
+n 1.0149 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0150 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0150 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0154 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0161 0.7835 0.0008 0.0008 0 360 EARC s
+n 1.0161 0.7835 0.0008 0.0008 0 360 EARC s
+n 1.0164 0.7835 0.0008 0.0008 0 360 EARC s
+n 1.0168 0.7835 0.0008 0.0008 0 360 EARC s
+n 1.0173 0.7835 0.0008 0.0008 0 360 EARC s
+n 1.0175 0.7836 0.0008 0.0008 0 360 EARC s
+n 1.0175 0.7836 0.0008 0.0008 0 360 EARC s
+n 1.0176 0.7836 0.0008 0.0008 0 360 EARC s
+n 1.0177 0.7836 0.0008 0.0008 0 360 EARC s
+n 1.0177 0.7836 0.0008 0.0008 0 360 EARC s
+n 1.0178 0.7836 0.0008 0.0008 0 360 EARC s
+n 1.0178 0.7836 0.0008 0.0008 0 360 EARC s
+n 1.0178 0.7837 0.0008 0.0008 0 360 EARC s
+n 1.0179 0.7837 0.0008 0.0008 0 360 EARC s
+n 1.0179 0.7837 0.0008 0.0008 0 360 EARC s
+n 1.0179 0.7837 0.0008 0.0008 0 360 EARC s
+n 1.0180 0.7837 0.0008 0.0008 0 360 EARC s
+n 1.0180 0.7838 0.0008 0.0008 0 360 EARC s
+n 1.0181 0.7838 0.0008 0.0008 0 360 EARC s
+n 1.0181 0.7838 0.0008 0.0008 0 360 EARC s
+n 1.0181 0.7839 0.0008 0.0008 0 360 EARC s
+n 1.0182 0.7839 0.0008 0.0008 0 360 EARC s
+n 1.0182 0.7840 0.0008 0.0008 0 360 EARC s
+n 1.0183 0.7840 0.0008 0.0008 0 360 EARC s
+n 1.0183 0.7840 0.0008 0.0008 0 360 EARC s
+n 1.0184 0.7841 0.0008 0.0008 0 360 EARC s
+n 1.0184 0.7841 0.0008 0.0008 0 360 EARC s
+n 1.0184 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0185 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0185 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0188 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0188 0.7777 0.0008 0.0008 0 360 EARC s
+n 1.0189 0.7777 0.0008 0.0008 0 360 EARC s
+n 1.0189 0.7777 0.0008 0.0008 0 360 EARC s
+n 1.0190 0.7837 0.0008 0.0008 0 360 EARC s
+n 1.0190 0.7772 0.0008 0.0008 0 360 EARC s
+n 1.0191 0.7772 0.0008 0.0008 0 360 EARC s
+n 1.0191 0.7772 0.0008 0.0008 0 360 EARC s
+n 1.0191 0.7772 0.0008 0.0008 0 360 EARC s
+n 1.0192 0.7835 0.0008 0.0008 0 360 EARC s
+n 1.0197 0.7835 0.0008 0.0008 0 360 EARC s
+n 1.0199 0.7835 0.0008 0.0008 0 360 EARC s
+n 1.0201 0.5722 0.0008 0.0008 0 360 EARC s
+n 1.0201 0.7835 0.0008 0.0008 0 360 EARC s
+n 1.0202 0.7835 0.0008 0.0008 0 360 EARC s
+n 1.0211 0.7837 0.0008 0.0008 0 360 EARC s
+n 1.0211 0.7838 0.0008 0.0008 0 360 EARC s
+n 1.0214 0.7838 0.0008 0.0008 0 360 EARC s
+n 1.0215 0.7839 0.0008 0.0008 0 360 EARC s
+n 1.0215 0.7839 0.0008 0.0008 0 360 EARC s
+n 1.0216 0.7840 0.0008 0.0008 0 360 EARC s
+n 1.0216 0.7840 0.0008 0.0008 0 360 EARC s
+n 1.0217 0.7840 0.0008 0.0008 0 360 EARC s
+n 1.0217 0.7840 0.0008 0.0008 0 360 EARC s
+n 1.0218 0.7840 0.0008 0.0008 0 360 EARC s
+n 1.0218 0.7840 0.0008 0.0008 0 360 EARC s
+n 1.0219 0.7840 0.0008 0.0008 0 360 EARC s
+n 1.0219 0.7840 0.0008 0.0008 0 360 EARC s
+n 1.0220 0.7841 0.0008 0.0008 0 360 EARC s
+n 1.0220 0.7842 0.0008 0.0008 0 360 EARC s
+n 1.0220 0.7842 0.0008 0.0008 0 360 EARC s
+n 1.0221 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0221 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0222 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0224 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0224 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0225 0.7840 0.0008 0.0008 0 360 EARC s
+n 1.0225 0.7840 0.0008 0.0008 0 360 EARC s
+n 1.0226 0.7840 0.0008 0.0008 0 360 EARC s
+n 1.0226 0.7840 0.0008 0.0008 0 360 EARC s
+n 1.0226 0.7774 0.0008 0.0008 0 360 EARC s
+n 1.0227 0.7840 0.0008 0.0008 0 360 EARC s
+n 1.0228 0.7840 0.0008 0.0008 0 360 EARC s
+n 1.0228 0.7840 0.0008 0.0008 0 360 EARC s
+n 1.0228 0.7841 0.0008 0.0008 0 360 EARC s
+n 1.0229 0.7843 0.0008 0.0008 0 360 EARC s
+n 1.0229 0.7843 0.0008 0.0008 0 360 EARC s
+n 1.0230 0.7843 0.0008 0.0008 0 360 EARC s
+n 1.0230 0.7843 0.0008 0.0008 0 360 EARC s
+n 1.0231 0.7843 0.0008 0.0008 0 360 EARC s
+n 1.0232 0.7843 0.0008 0.0008 0 360 EARC s
+n 1.0232 0.7843 0.0008 0.0008 0 360 EARC s
+n 1.0233 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0235 0.7846 0.0008 0.0008 0 360 EARC s
+n 1.0235 0.7847 0.0008 0.0008 0 360 EARC s
+n 1.0236 0.7847 0.0008 0.0008 0 360 EARC s
+n 1.0236 0.7847 0.0008 0.0008 0 360 EARC s
+n 1.0237 0.7845 0.0008 0.0008 0 360 EARC s
+n 1.0237 0.7845 0.0008 0.0008 0 360 EARC s
+n 1.0237 0.7846 0.0008 0.0008 0 360 EARC s
+n 1.0240 0.7846 0.0008 0.0008 0 360 EARC s
+n 1.0240 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0241 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0262 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0262 0.7845 0.0008 0.0008 0 360 EARC s
+n 1.0262 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0262 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0262 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0262 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0262 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0265 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0268 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0268 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0269 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0269 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0270 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0270 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0270 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0271 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0271 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0272 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0274 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0274 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0274 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0277 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0277 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0277 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0278 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0278 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0279 0.7844 0.0008 0.0008 0 360 EARC s
+n 1.0279 0.7847 0.0008 0.0008 0 360 EARC s
+n 1.0280 0.7848 0.0008 0.0008 0 360 EARC s
+n 1.0280 0.7848 0.0008 0.0008 0 360 EARC s
+n 1.0280 0.7850 0.0008 0.0008 0 360 EARC s
+n 1.0281 0.7851 0.0008 0.0008 0 360 EARC s
+n 1.0281 0.7852 0.0008 0.0008 0 360 EARC s
+n 1.0281 0.7852 0.0008 0.0008 0 360 EARC s
+n 1.0282 0.7852 0.0008 0.0008 0 360 EARC s
+n 1.0282 0.7852 0.0008 0.0008 0 360 EARC s
+n 1.0283 0.7852 0.0008 0.0008 0 360 EARC s
+n 1.0283 0.7852 0.0008 0.0008 0 360 EARC s
+n 1.0284 0.7852 0.0008 0.0008 0 360 EARC s
+n 1.0284 0.7852 0.0008 0.0008 0 360 EARC s
+n 1.0285 0.7852 0.0008 0.0008 0 360 EARC s
+n 1.0285 0.7852 0.0008 0.0008 0 360 EARC s
+n 1.0286 0.7853 0.0008 0.0008 0 360 EARC s
+n 1.0286 0.7853 0.0008 0.0008 0 360 EARC s
+n 1.0286 0.7853 0.0008 0.0008 0 360 EARC s
+n 1.0287 0.7854 0.0008 0.0008 0 360 EARC s
+n 1.0287 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0288 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0288 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0289 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0289 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0290 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0290 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0291 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0291 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0292 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0293 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0294 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0308 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0308 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0308 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0308 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0309 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0311 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0312 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0319 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0319 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0322 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0323 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0339 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0339 0.7924 0.0008 0.0008 0 360 EARC s
+n 1.0339 0.7924 0.0008 0.0008 0 360 EARC s
+n 1.0339 0.7924 0.0008 0.0008 0 360 EARC s
+n 1.0339 0.7978 0.0008 0.0008 0 360 EARC s
+n 1.0342 0.7920 0.0008 0.0008 0 360 EARC s
+n 1.0343 0.7920 0.0008 0.0008 0 360 EARC s
+n 1.0344 0.7920 0.0008 0.0008 0 360 EARC s
+n 1.0350 0.7920 0.0008 0.0008 0 360 EARC s
+n 1.0353 0.7915 0.0008 0.0008 0 360 EARC s
+n 1.0354 0.7915 0.0008 0.0008 0 360 EARC s
+n 1.0363 0.7915 0.0008 0.0008 0 360 EARC s
+n 1.0363 0.7915 0.0008 0.0008 0 360 EARC s
+n 1.0363 0.7974 0.0008 0.0008 0 360 EARC s
+n 1.0367 0.7910 0.0008 0.0008 0 360 EARC s
+n 1.0379 0.7910 0.0008 0.0008 0 360 EARC s
+n 1.0379 0.7910 0.0008 0.0008 0 360 EARC s
+n 1.0379 0.7973 0.0008 0.0008 0 360 EARC s
+n 1.0382 0.7974 0.0008 0.0008 0 360 EARC s
+n 1.0394 0.7975 0.0008 0.0008 0 360 EARC s
+n 1.0394 0.7907 0.0008 0.0008 0 360 EARC s
+n 1.0394 0.7917 0.0008 0.0008 0 360 EARC s
+n 1.0398 0.7974 0.0008 0.0008 0 360 EARC s
+n 1.0398 0.7974 0.0008 0.0008 0 360 EARC s
+n 1.0399 0.7974 0.0008 0.0008 0 360 EARC s
+n 1.0399 0.7917 0.0008 0.0008 0 360 EARC s
+n 1.0400 0.7917 0.0008 0.0008 0 360 EARC s
+n 1.0400 0.7917 0.0008 0.0008 0 360 EARC s
+n 1.0401 0.7917 0.0008 0.0008 0 360 EARC s
+n 1.0409 0.7917 0.0008 0.0008 0 360 EARC s
+n 1.0409 0.7917 0.0008 0.0008 0 360 EARC s
+n 1.0412 0.7917 0.0008 0.0008 0 360 EARC s
+n 1.0413 0.7917 0.0008 0.0008 0 360 EARC s
+n 1.0414 0.7917 0.0008 0.0008 0 360 EARC s
+n 1.0415 0.7968 0.0008 0.0008 0 360 EARC s
+n 1.0416 0.7968 0.0008 0.0008 0 360 EARC s
+n 1.0417 0.7968 0.0008 0.0008 0 360 EARC s
+n 1.0418 0.7968 0.0008 0.0008 0 360 EARC s
+n 1.0418 0.7969 0.0008 0.0008 0 360 EARC s
+n 1.0419 0.7970 0.0008 0.0008 0 360 EARC s
+n 1.0419 0.7971 0.0008 0.0008 0 360 EARC s
+n 1.0420 0.7971 0.0008 0.0008 0 360 EARC s
+n 1.0421 0.7972 0.0008 0.0008 0 360 EARC s
+n 1.0421 0.7973 0.0008 0.0008 0 360 EARC s
+n 1.0422 0.7973 0.0008 0.0008 0 360 EARC s
+n 1.0422 0.7973 0.0008 0.0008 0 360 EARC s
+n 1.0423 0.7974 0.0008 0.0008 0 360 EARC s
+n 1.0424 0.7974 0.0008 0.0008 0 360 EARC s
+n 1.0424 0.7974 0.0008 0.0008 0 360 EARC s
+n 1.0425 0.7974 0.0008 0.0008 0 360 EARC s
+n 1.0425 0.7975 0.0008 0.0008 0 360 EARC s
+n 1.0426 0.7975 0.0008 0.0008 0 360 EARC s
+n 1.0427 0.7976 0.0008 0.0008 0 360 EARC s
+n 1.0427 0.7977 0.0008 0.0008 0 360 EARC s
+n 1.0428 0.7977 0.0008 0.0008 0 360 EARC s
+n 1.0429 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0430 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0430 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0431 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0431 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0437 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0439 0.7919 0.0008 0.0008 0 360 EARC s
+n 1.0440 0.7919 0.0008 0.0008 0 360 EARC s
+n 1.0441 0.7919 0.0008 0.0008 0 360 EARC s
+n 1.0441 0.7971 0.0008 0.0008 0 360 EARC s
+n 1.0442 0.7914 0.0008 0.0008 0 360 EARC s
+n 1.0442 0.7914 0.0008 0.0008 0 360 EARC s
+n 1.0443 0.7914 0.0008 0.0008 0 360 EARC s
+n 1.0443 0.7914 0.0008 0.0008 0 360 EARC s
+n 1.0444 0.7969 0.0008 0.0008 0 360 EARC s
+n 1.0444 0.7969 0.0008 0.0008 0 360 EARC s
+n 1.0445 0.7969 0.0008 0.0008 0 360 EARC s
+n 1.0445 0.7970 0.0008 0.0008 0 360 EARC s
+n 1.0446 0.7970 0.0008 0.0008 0 360 EARC s
+n 1.0446 0.7971 0.0008 0.0008 0 360 EARC s
+n 1.0447 0.7971 0.0008 0.0008 0 360 EARC s
+n 1.0448 0.7971 0.0008 0.0008 0 360 EARC s
+n 1.0449 0.7971 0.0008 0.0008 0 360 EARC s
+n 1.0450 0.7972 0.0008 0.0008 0 360 EARC s
+n 1.0451 0.7972 0.0008 0.0008 0 360 EARC s
+n 1.0453 0.7972 0.0008 0.0008 0 360 EARC s
+n 1.0453 0.7972 0.0008 0.0008 0 360 EARC s
+n 1.0454 0.7973 0.0008 0.0008 0 360 EARC s
+n 1.0454 0.7973 0.0008 0.0008 0 360 EARC s
+n 1.0454 0.7973 0.0008 0.0008 0 360 EARC s
+n 1.0455 0.7973 0.0008 0.0008 0 360 EARC s
+n 1.0455 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0456 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0456 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0457 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0457 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0458 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0458 0.7916 0.0008 0.0008 0 360 EARC s
+n 1.0459 0.8053 0.0008 0.0008 0 360 EARC s
+n 1.0466 0.8053 0.0008 0.0008 0 360 EARC s
+n 1.0466 0.8053 0.0008 0.0008 0 360 EARC s
+n 1.0469 0.8132 0.0008 0.0008 0 360 EARC s
+n 1.0470 0.7995 0.0008 0.0008 0 360 EARC s
+n 1.0470 0.7995 0.0008 0.0008 0 360 EARC s
+n 1.0471 0.7995 0.0008 0.0008 0 360 EARC s
+n 1.0472 0.7995 0.0008 0.0008 0 360 EARC s
+n 1.0473 0.7994 0.0008 0.0008 0 360 EARC s
+n 1.0536 0.7994 0.0008 0.0008 0 360 EARC s
+n 1.0536 0.7994 0.0008 0.0008 0 360 EARC s
+n 1.0536 0.7994 0.0008 0.0008 0 360 EARC s
+n 1.0536 0.8131 0.0008 0.0008 0 360 EARC s
+n 1.0536 0.7993 0.0008 0.0008 0 360 EARC s
+n 1.0536 0.7993 0.0008 0.0008 0 360 EARC s
+n 1.0536 0.7994 0.0008 0.0008 0 360 EARC s
+n 1.0536 0.7990 0.0008 0.0008 0 360 EARC s
+n 1.0537 0.7992 0.0008 0.0008 0 360 EARC s
+n 1.0537 0.7992 0.0008 0.0008 0 360 EARC s
+n 1.0537 0.7992 0.0008 0.0008 0 360 EARC s
+n 1.0537 0.7989 0.0008 0.0008 0 360 EARC s
+n 1.0537 0.7989 0.0008 0.0008 0 360 EARC s
+n 1.0537 0.7989 0.0008 0.0008 0 360 EARC s
+n 1.0537 0.7989 0.0008 0.0008 0 360 EARC s
+n 1.0537 0.7988 0.0008 0.0008 0 360 EARC s
+n 1.0537 0.7988 0.0008 0.0008 0 360 EARC s
+n 1.0537 0.7989 0.0008 0.0008 0 360 EARC s
+n 1.0537 0.7989 0.0008 0.0008 0 360 EARC s
+n 1.0540 0.7986 0.0008 0.0008 0 360 EARC s
+n 1.0557 0.7987 0.0008 0.0008 0 360 EARC s
+n 1.0557 0.7987 0.0008 0.0008 0 360 EARC s
+n 1.0557 0.7987 0.0008 0.0008 0 360 EARC s
+n 1.0557 0.7967 0.0008 0.0008 0 360 EARC s
+n 1.0557 0.7969 0.0008 0.0008 0 360 EARC s
+n 1.0558 0.7969 0.0008 0.0008 0 360 EARC s
+n 1.0560 0.7969 0.0008 0.0008 0 360 EARC s
+n 1.0561 0.7970 0.0008 0.0008 0 360 EARC s
+n 1.0561 0.7970 0.0008 0.0008 0 360 EARC s
+n 1.0562 0.7971 0.0008 0.0008 0 360 EARC s
+n 1.0562 0.7972 0.0008 0.0008 0 360 EARC s
+n 1.0562 0.7972 0.0008 0.0008 0 360 EARC s
+n 1.0563 0.7973 0.0008 0.0008 0 360 EARC s
+n 1.0563 0.7973 0.0008 0.0008 0 360 EARC s
+n 1.0563 0.7973 0.0008 0.0008 0 360 EARC s
+n 1.0564 0.7973 0.0008 0.0008 0 360 EARC s
+n 1.0564 0.7975 0.0008 0.0008 0 360 EARC s
+n 1.0566 0.7975 0.0008 0.0008 0 360 EARC s
+n 1.0567 0.7975 0.0008 0.0008 0 360 EARC s
+n 1.0567 0.7976 0.0008 0.0008 0 360 EARC s
+n 1.0567 0.7976 0.0008 0.0008 0 360 EARC s
+n 1.0568 0.7976 0.0008 0.0008 0 360 EARC s
+n 1.0568 0.7976 0.0008 0.0008 0 360 EARC s
+n 1.0569 0.7976 0.0008 0.0008 0 360 EARC s
+n 1.0569 0.7976 0.0008 0.0008 0 360 EARC s
+n 1.0569 0.7977 0.0008 0.0008 0 360 EARC s
+n 1.0570 0.7977 0.0008 0.0008 0 360 EARC s
+n 1.0570 0.7977 0.0008 0.0008 0 360 EARC s
+n 1.0570 0.7978 0.0008 0.0008 0 360 EARC s
+n 1.0571 0.7978 0.0008 0.0008 0 360 EARC s
+n 1.0571 0.7978 0.0008 0.0008 0 360 EARC s
+n 1.0572 0.7979 0.0008 0.0008 0 360 EARC s
+n 1.0572 0.7979 0.0008 0.0008 0 360 EARC s
+n 1.0572 0.7979 0.0008 0.0008 0 360 EARC s
+n 1.0573 0.7979 0.0008 0.0008 0 360 EARC s
+n 1.0573 0.7979 0.0008 0.0008 0 360 EARC s
+n 1.0574 0.7979 0.0008 0.0008 0 360 EARC s
+n 1.0574 0.7979 0.0008 0.0008 0 360 EARC s
+n 1.0575 0.7981 0.0008 0.0008 0 360 EARC s
+n 1.0575 0.7981 0.0008 0.0008 0 360 EARC s
+n 1.0575 0.7984 0.0008 0.0008 0 360 EARC s
+n 1.0576 0.7984 0.0008 0.0008 0 360 EARC s
+n 1.0576 0.7985 0.0008 0.0008 0 360 EARC s
+n 1.0576 0.8066 0.0008 0.0008 0 360 EARC s
+n 1.0577 0.8066 0.0008 0.0008 0 360 EARC s
+n 1.0577 0.8066 0.0008 0.0008 0 360 EARC s
+n 1.0578 0.8129 0.0008 0.0008 0 360 EARC s
+n 1.0580 0.8062 0.0008 0.0008 0 360 EARC s
+n 1.0580 0.8062 0.0008 0.0008 0 360 EARC s
+n 1.0581 0.8062 0.0008 0.0008 0 360 EARC s
+n 1.0583 0.8062 0.0008 0.0008 0 360 EARC s
+n 1.0583 0.8057 0.0008 0.0008 0 360 EARC s
+n 1.0584 0.8057 0.0008 0.0008 0 360 EARC s
+n 1.0584 0.8057 0.0008 0.0008 0 360 EARC s
+n 1.0585 0.8057 0.0008 0.0008 0 360 EARC s
+n 1.0587 0.8052 0.0008 0.0008 0 360 EARC s
+n 1.0587 0.8052 0.0008 0.0008 0 360 EARC s
+n 1.0588 0.8052 0.0008 0.0008 0 360 EARC s
+n 1.0588 0.8052 0.0008 0.0008 0 360 EARC s
+n 1.0589 0.8047 0.0008 0.0008 0 360 EARC s
+n 1.0590 0.8047 0.0008 0.0008 0 360 EARC s
+n 1.0590 0.8047 0.0008 0.0008 0 360 EARC s
+n 1.0591 0.8047 0.0008 0.0008 0 360 EARC s
+n 1.0591 0.8042 0.0008 0.0008 0 360 EARC s
+n 1.0601 0.8042 0.0008 0.0008 0 360 EARC s
+n 1.0601 0.8042 0.0008 0.0008 0 360 EARC s
+n 1.0601 0.8042 0.0008 0.0008 0 360 EARC s
+n 1.0605 0.8058 0.0008 0.0008 0 360 EARC s
+n 1.0608 0.8058 0.0008 0.0008 0 360 EARC s
+n 1.0611 0.8058 0.0008 0.0008 0 360 EARC s
+n 1.0612 0.8117 0.0008 0.0008 0 360 EARC s
+n 1.0612 0.8054 0.0008 0.0008 0 360 EARC s
+n 1.0620 0.8054 0.0008 0.0008 0 360 EARC s
+n 1.0621 0.8054 0.0008 0.0008 0 360 EARC s
+n 1.0624 0.8054 0.0008 0.0008 0 360 EARC s
+n 1.0624 0.3607 0.0008 0.0008 0 360 EARC s
+n 1.0625 0.3791 0.0008 0.0008 0 360 EARC s
+n 1.0627 0.3974 0.0008 0.0008 0 360 EARC s
+n 1.0628 0.7968 0.0008 0.0008 0 360 EARC s
+n 1.0632 0.7968 0.0008 0.0008 0 360 EARC s
+n 1.0635 0.7969 0.0008 0.0008 0 360 EARC s
+n 1.0636 0.3424 0.0008 0.0008 0 360 EARC s
+n 1.0637 0.8051 0.0008 0.0008 0 360 EARC s
+n 1.0638 0.8114 0.0008 0.0008 0 360 EARC s
+n 1.0638 0.8114 0.0008 0.0008 0 360 EARC s
+n 1.0639 0.8114 0.0008 0.0008 0 360 EARC s
+n 1.0640 0.8114 0.0008 0.0008 0 360 EARC s
+n 1.0644 0.8114 0.0008 0.0008 0 360 EARC s
+n 1.0722 0.8114 0.0008 0.0008 0 360 EARC s
+n 1.0723 0.8115 0.0008 0.0008 0 360 EARC s
+n 1.0723 0.8115 0.0008 0.0008 0 360 EARC s
+n 1.0723 0.8115 0.0008 0.0008 0 360 EARC s
+n 1.0723 0.8115 0.0008 0.0008 0 360 EARC s
+n 1.0723 0.8115 0.0008 0.0008 0 360 EARC s
+n 1.0723 0.8115 0.0008 0.0008 0 360 EARC s
+n 1.0723 0.8115 0.0008 0.0008 0 360 EARC s
+n 1.0723 0.8115 0.0008 0.0008 0 360 EARC s
+n 1.0723 0.8115 0.0008 0.0008 0 360 EARC s
+n 1.0723 0.8115 0.0008 0.0008 0 360 EARC s
+n 1.0723 0.8116 0.0008 0.0008 0 360 EARC s
+n 1.0723 0.8116 0.0008 0.0008 0 360 EARC s
+n 1.0723 0.8116 0.0008 0.0008 0 360 EARC s
+n 1.0723 0.8117 0.0008 0.0008 0 360 EARC s
+n 1.0723 0.8117 0.0008 0.0008 0 360 EARC s
+n 1.0723 0.8117 0.0008 0.0008 0 360 EARC s
+n 1.0723 0.8118 0.0008 0.0008 0 360 EARC s
+n 1.0724 0.8118 0.0008 0.0008 0 360 EARC s
+n 1.0724 0.8118 0.0008 0.0008 0 360 EARC s
+n 1.0724 0.8118 0.0008 0.0008 0 360 EARC s
+n 1.0724 0.8118 0.0008 0.0008 0 360 EARC s
+n 1.0724 0.8118 0.0008 0.0008 0 360 EARC s
+n 1.0724 0.8118 0.0008 0.0008 0 360 EARC s
+n 1.0726 0.8118 0.0008 0.0008 0 360 EARC s
+n 1.0737 0.8118 0.0008 0.0008 0 360 EARC s
+n 1.0737 0.4157 0.0008 0.0008 0 360 EARC s
+n 1.0737 0.4340 0.0008 0.0008 0 360 EARC s
+n 1.0741 0.4523 0.0008 0.0008 0 360 EARC s
+n 1.0741 0.4707 0.0008 0.0008 0 360 EARC s
+n 1.0743 0.7643 0.0008 0.0008 0 360 EARC s
+n 1.0744 0.7826 0.0008 0.0008 0 360 EARC s
+n 1.0744 0.8009 0.0008 0.0008 0 360 EARC s
+n 1.0744 0.8117 0.0008 0.0008 0 360 EARC s
+n 1.0745 0.7091 0.0008 0.0008 0 360 EARC s
+n 1.0745 0.7275 0.0008 0.0008 0 360 EARC s
+n 1.0745 0.7458 0.0008 0.0008 0 360 EARC s
+n 1.0748 0.7641 0.0008 0.0008 0 360 EARC s
+n 1.0750 0.6356 0.0008 0.0008 0 360 EARC s
+n 1.0750 0.6540 0.0008 0.0008 0 360 EARC s
+n 1.0751 0.6723 0.0008 0.0008 0 360 EARC s
+n 1.0753 0.6906 0.0008 0.0008 0 360 EARC s
+n 1.0753 0.5622 0.0008 0.0008 0 360 EARC s
+n 1.0754 0.5805 0.0008 0.0008 0 360 EARC s
+n 1.0754 0.5989 0.0008 0.0008 0 360 EARC s
+n 1.0756 0.6172 0.0008 0.0008 0 360 EARC s
+n 1.0756 0.4888 0.0008 0.0008 0 360 EARC s
+n 1.0757 0.5071 0.0008 0.0008 0 360 EARC s
+n 1.0757 0.5255 0.0008 0.0008 0 360 EARC s
+n 1.0758 0.5438 0.0008 0.0008 0 360 EARC s
+n 1.0758 0.8116 0.0008 0.0008 0 360 EARC s
+n 1.0759 0.8116 0.0008 0.0008 0 360 EARC s
+n 1.0759 0.8116 0.0008 0.0008 0 360 EARC s
+n 1.0760 0.8117 0.0008 0.0008 0 360 EARC s
+n 1.0760 0.8117 0.0008 0.0008 0 360 EARC s
+n 1.0761 0.8117 0.0008 0.0008 0 360 EARC s
+n 1.0761 0.8117 0.0008 0.0008 0 360 EARC s
+n 1.0761 0.8118 0.0008 0.0008 0 360 EARC s
+n 1.0764 0.8119 0.0008 0.0008 0 360 EARC s
+n 1.0764 0.8122 0.0008 0.0008 0 360 EARC s
+n 1.0765 0.8122 0.0008 0.0008 0 360 EARC s
+n 1.0765 0.8122 0.0008 0.0008 0 360 EARC s
+n 1.0766 0.8123 0.0008 0.0008 0 360 EARC s
+n 1.0768 0.8123 0.0008 0.0008 0 360 EARC s
+n 1.0768 0.8124 0.0008 0.0008 0 360 EARC s
+n 1.0768 0.8124 0.0008 0.0008 0 360 EARC s
+n 1.0769 0.8125 0.0008 0.0008 0 360 EARC s
+n 1.0769 0.8125 0.0008 0.0008 0 360 EARC s
+n 1.0770 0.8125 0.0008 0.0008 0 360 EARC s
+n 1.0770 0.8125 0.0008 0.0008 0 360 EARC s
+n 1.0771 0.8126 0.0008 0.0008 0 360 EARC s
+n 1.0771 0.8127 0.0008 0.0008 0 360 EARC s
+n 1.0772 0.8128 0.0008 0.0008 0 360 EARC s
+n 1.0772 0.8129 0.0008 0.0008 0 360 EARC s
+n 1.0774 0.8129 0.0008 0.0008 0 360 EARC s
+n 1.0775 0.8129 0.0008 0.0008 0 360 EARC s
+n 1.0775 0.8130 0.0008 0.0008 0 360 EARC s
+n 1.0776 0.8130 0.0008 0.0008 0 360 EARC s
+n 1.0777 0.8130 0.0008 0.0008 0 360 EARC s
+n 1.0777 0.8131 0.0008 0.0008 0 360 EARC s
+n 1.0778 0.8131 0.0008 0.0008 0 360 EARC s
+n 1.0778 0.8131 0.0008 0.0008 0 360 EARC s
+n 1.0778 0.8131 0.0008 0.0008 0 360 EARC s
+n 1.0779 0.8131 0.0008 0.0008 0 360 EARC s
+n 1.0779 0.8131 0.0008 0.0008 0 360 EARC s
+n 1.0780 0.8132 0.0008 0.0008 0 360 EARC s
+n 1.0780 0.8132 0.0008 0.0008 0 360 EARC s
+n 1.0781 0.8132 0.0008 0.0008 0 360 EARC s
+n 1.0781 0.8132 0.0008 0.0008 0 360 EARC s
+n 1.0784 0.8132 0.0008 0.0008 0 360 EARC s
+n 1.0785 0.8133 0.0008 0.0008 0 360 EARC s
+/Times-Roman findfont
+dup length dict begin
+ {1 index /FID ne {def} {pop pop} ifelse} forall
+ /Encoding DefEncoding def
+ currentdict
+end
+/Font32 exch definefont pop
+/Font32 FFSF
+[/DeviceRGB] SCS
+Color6 SC
+0.1447 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(0) show
+GR
+/Font32 FFSF
+0.3724 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(5) show
+GR
+/Font32 FFSF
+0.5936 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(10) show
+GR
+/Font32 FFSF
+0.8212 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(15) show
+GR
+/Font32 FFSF
+1.0481 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(20) show
+GR
+/Font32 FFSF
+0.5453 0.0951 m
+GS
+[0.0280 0.0000 0.0000 0.0280 0 0] CC
+(Runtime \(seconds\)) show
+GR
+/Font32 FFSF
+0.1337 0.4088 m
+GS
+[0.0000 0.0280 -0.0280 0.0000 0 0] CC
+(Seek Magnitude) show
+GR
+n
+0.1500 0.1500 m
+0.1500 0.8500 l
+1.1500 0.8500 l
+1.1500 0.1500 l
+0.1500 0.1500 l
+c
+s
+n
+0.3000 0.3000 m
+0.3000 0.2382 l
+0.4388 0.2382 l
+0.4388 0.3000 l
+c
+[/DeviceRGB] SCS
+Color0 SC
+fill
+[/DeviceRGB] SCS
+Color1 SC
+n
+0.3000 0.3000 m
+0.3000 0.2382 l
+0.4388 0.2382 l
+0.4388 0.3000 l
+0.3000 0.3000 l
+c
+s
+/Font32 FFSF
+0.3700 0.2747 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(Reads) show
+GR
+[/DeviceRGB] SCS
+Color2 SC
+n 0.3300 0.2822 0.0008 0.0008 0 360 EARC s
+/Font32 FFSF
+[/DeviceRGB] SCS
+Color1 SC
+0.3700 0.2486 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(Writes) show
+GR
+[/DeviceRGB] SCS
+Color4 SC
+n 0.3300 0.2563 0.0008 0.0008 0 360 EARC s
+/Font32 FFSF
+[/DeviceRGB] SCS
+Color1 SC
+0.4237 0.9190 m
+GS
+[0.0420 0.0000 0.0000 0.0420 0 0] CC
+(BTT Sample Seek Patterns) show
+GR
+%%Trailer
+%%DocumentNeededResources: font Times-Roman
+%%EOF
diff --git a/btt/doc/sps.eps b/btt/doc/sps.eps
new file mode 100644
index 0000000..cfb0ec7
--- /dev/null
+++ b/btt/doc/sps.eps
@@ -0,0 +1,5377 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%BoundingBox: (atend)
+%%LanguageLevel: 2
+%%Creator: Grace-5.1.21
+%%CreationDate: Wed May 21 10:39:20 2008
+%%DocumentData: Clean8Bit
+%%Orientation: Portrait
+%%Title: Untitled
+%%For: adb
+%%DocumentNeededResources: (atend)
+%%EndComments
+%%BeginProlog
+/m {moveto} def
+/l {lineto} def
+/s {stroke} def
+/n {newpath} def
+/c {closepath} def
+/RL {rlineto} def
+/SLW {setlinewidth} def
+/GS {gsave} def
+/GR {grestore} def
+/SC {setcolor} def
+/SGRY {setgray} def
+/SRGB {setrgbcolor} def
+/SD {setdash} def
+/SLC {setlinecap} def
+/SLJ {setlinejoin} def
+/SCS {setcolorspace} def
+/FFSF {findfont setfont} def
+/CC {concat} def
+/PXL {n m 0 0 RL s} def
+/Color0 {1.0000 1.0000 1.0000} def
+/Color1 {0.0000 0.0000 0.0000} def
+/Color2 {1.0000 0.0000 0.0000} def
+/Color3 {0.0000 1.0000 0.0000} def
+/Color4 {0.0000 0.0000 1.0000} def
+/Color5 {1.0000 1.0000 0.0000} def
+/Color6 {0.7373 0.5608 0.5608} def
+/Color7 {0.8627 0.8627 0.8627} def
+/Color8 {0.5804 0.0000 0.8275} def
+/Color9 {0.0000 1.0000 1.0000} def
+/Color10 {1.0000 0.0000 1.0000} def
+/Color11 {1.0000 0.6471 0.0000} def
+/Color12 {0.4471 0.1294 0.7373} def
+/Color13 {0.4039 0.0275 0.2824} def
+/Color14 {0.2510 0.8784 0.8157} def
+/Color15 {0.0000 0.5451 0.0000} def
+/PTRN {
+ /pat_bits exch def 
+ <<
+  /PaintType 2
+  /PatternType 1 /TilingType 1
+  /BBox[0 0 16 16]
+  /XStep 16 /YStep 16
+  /PaintProc {
+   pop
+   16 16 true [-1 0 0 -1 16 16] pat_bits imagemask
+  }
+ >>
+ [0.0016 0 0 0.0016 0 0]
+ makepattern
+} def
+/Pattern0 {<0000000000000000000000000000000000000000000000000000000000000000> PTRN} bind def
+/Pattern1 {<ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff> PTRN} bind def
+/Pattern2 {<eeeeffffbbbbffffeeeeffffbbbbffffeeeeffffbbbbffffeeeeffffbbbbffff> PTRN} bind def
+/Pattern3 {<eeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbbeeeebbbb> PTRN} bind def
+/Pattern4 {<5555aaaa5555aaaa5555aaaa5555aaaa5555aaaa5555aaaa5555aaaa5555aaaa> PTRN} bind def
+/Pattern5 {<1111444411114444111144441111444411114444111144441111444411114444> PTRN} bind def
+/Pattern6 {<1111000044440000111100004444000011110000444400001111000044440000> PTRN} bind def
+/Pattern7 {<1010000000000000010100000000000010100000000000000101000000000000> PTRN} bind def
+/Pattern8 {<0000000000000000000000000000000000000000000000000000000000000000> PTRN} bind def
+/Pattern9 {<1e1e0f0f8787c3c3e1e1f0f078783c3c1e1e0f0f8787c3c3e1e1f0f078783c3c> PTRN} bind def
+/Pattern10 {<7878f0f0e1e1c3c387870f0f1e1e3c3c7878f0f0e1e1c3c387870f0f1e1e3c3c> PTRN} bind def
+/Pattern11 {<3333333333333333333333333333333333333333333333333333333333333333> PTRN} bind def
+/Pattern12 {<ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000> PTRN} bind def
+/Pattern13 {<8181424224241818181824244242818181814242242418181818242442428181> PTRN} bind def
+/Pattern14 {<8080404020201010080804040202010180804040202010100808040402020101> PTRN} bind def
+/Pattern15 {<0101020204040808101020204040808001010202040408081010202040408080> PTRN} bind def
+/Pattern16 {<2222222222222222222222222222222222222222222222222222222222222222> PTRN} bind def
+/Pattern17 {<0000ffff000000000000ffff000000000000ffff000000000000ffff00000000> PTRN} bind def
+/Pattern18 {<2222ffff222222222222ffff222222222222ffff222222222222ffff22222222> PTRN} bind def
+/Pattern19 {<ffffffff33333333ffffffff33333333ffffffff33333333ffffffff33333333> PTRN} bind def
+/Pattern20 {<0f0f0f0f0f0f0f0ff0f0f0f0f0f0f0f00f0f0f0f0f0f0f0ff0f0f0f0f0f0f0f0> PTRN} bind def
+/Pattern21 {<ff00ff00ff00ff00ff00ff00ff00ff0000ff00ff00ff00ff00ff00ff00ff00ff> PTRN} bind def
+/Pattern22 {<8001800180018001800180018001ffffffff8001800180018001800180018001> PTRN} bind def
+/Pattern23 {<c003c003c003c003c003c003ffffffffffffffffc003c003c003c003c003c003> PTRN} bind def
+/Pattern24 {<040404040404ffff404040404040ffff040404040404ffff404040404040ffff> PTRN} bind def
+/Pattern25 {<180018001800180018001800ffffffff001800180018001800180018ffffffff> PTRN} bind def
+/Pattern26 {<1111b8b87c7c3a3a1111a3a3c7c78b8b1111b8b87c7c3a3a1111a3a3c7c78b8b> PTRN} bind def
+/Pattern27 {<101010102828c7c70101010182827c7c101010102828c7c70101010182827c7c> PTRN} bind def
+/Pattern28 {<1c1c121211112121c1c12121111112121c1c121211112121c1c1212111111212> PTRN} bind def
+/Pattern29 {<3e3e414180808080e3e31414080808083e3e414180808080e3e3141408080808> PTRN} bind def
+/Pattern30 {<4848888884848383848488884848383848488888848483838484888848483838> PTRN} bind def
+/Pattern31 {<03030404080808080c0c12122121c0c003030404080808080c0c12122121c0c0> PTRN} bind def
+/ellipsedict 8 dict def
+ellipsedict /mtrx matrix put
+/EARC {
+ ellipsedict begin
+  /endangle exch def
+  /startangle exch def
+  /yrad exch def
+  /xrad exch def
+  /y exch def
+  /x exch def
+  /savematrix mtrx currentmatrix def
+  x y translate
+  xrad yrad scale
+  0 0 1 startangle endangle arc
+  savematrix setmatrix
+ end
+} def
+/TL {
+  /kcomp exch def
+  /linewidth exch def
+  /offset exch def
+  GS
+  0 offset rmoveto
+  linewidth SLW
+  dup stringwidth exch kcomp add exch RL s
+  GR
+} def
+/KINIT
+{
+ /kvector exch def
+ /kid 0 def
+} def
+/KPROC
+{
+ pop pop
+ kvector kid get
+ 0 rmoveto
+ /kid 1 kid add def
+} def
+/DefEncoding [
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /space
+ /exclam
+ /quotedbl
+ /numbersign
+ /dollar
+ /percent
+ /ampersand
+ /quoteright
+ /parenleft
+ /parenright
+ /asterisk
+ /plus
+ /comma
+ /hyphen
+ /period
+ /slash
+ /zero
+ /one
+ /two
+ /three
+ /four
+ /five
+ /six
+ /seven
+ /eight
+ /nine
+ /colon
+ /semicolon
+ /less
+ /equal
+ /greater
+ /question
+ /at
+ /A
+ /B
+ /C
+ /D
+ /E
+ /F
+ /G
+ /H
+ /I
+ /J
+ /K
+ /L
+ /M
+ /N
+ /O
+ /P
+ /Q
+ /R
+ /S
+ /T
+ /U
+ /V
+ /W
+ /X
+ /Y
+ /Z
+ /bracketleft
+ /backslash
+ /bracketright
+ /asciicircum
+ /underscore
+ /grave
+ /a
+ /b
+ /c
+ /d
+ /e
+ /f
+ /g
+ /h
+ /i
+ /j
+ /k
+ /l
+ /m
+ /n
+ /o
+ /p
+ /q
+ /r
+ /s
+ /t
+ /u
+ /v
+ /w
+ /x
+ /y
+ /z
+ /braceleft
+ /bar
+ /braceright
+ /asciitilde
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /.notdef
+ /space
+ /exclamdown
+ /cent
+ /sterling
+ /currency
+ /yen
+ /brokenbar
+ /section
+ /dieresis
+ /copyright
+ /ordfeminine
+ /guillemotleft
+ /logicalnot
+ /hyphen
+ /registered
+ /macron
+ /degree
+ /plusminus
+ /twosuperior
+ /threesuperior
+ /acute
+ /mu
+ /paragraph
+ /periodcentered
+ /cedilla
+ /onesuperior
+ /ordmasculine
+ /guillemotright
+ /onequarter
+ /onehalf
+ /threequarters
+ /questiondown
+ /Agrave
+ /Aacute
+ /Acircumflex
+ /Atilde
+ /Adieresis
+ /Aring
+ /AE
+ /Ccedilla
+ /Egrave
+ /Eacute
+ /Ecircumflex
+ /Edieresis
+ /Igrave
+ /Iacute
+ /Icircumflex
+ /Idieresis
+ /Eth
+ /Ntilde
+ /Ograve
+ /Oacute
+ /Ocircumflex
+ /Otilde
+ /Odieresis
+ /multiply
+ /Oslash
+ /Ugrave
+ /Uacute
+ /Ucircumflex
+ /Udieresis
+ /Yacute
+ /Thorn
+ /germandbls
+ /agrave
+ /aacute
+ /acircumflex
+ /atilde
+ /adieresis
+ /aring
+ /ae
+ /ccedilla
+ /egrave
+ /eacute
+ /ecircumflex
+ /edieresis
+ /igrave
+ /iacute
+ /icircumflex
+ /idieresis
+ /eth
+ /ntilde
+ /ograve
+ /oacute
+ /ocircumflex
+ /otilde
+ /odieresis
+ /divide
+ /oslash
+ /ugrave
+ /uacute
+ /ucircumflex
+ /udieresis
+ /yacute
+ /thorn
+ /ydieresis
+] def
+%%EndProlog
+%%BeginSetup
+%%EndSetup
+612.00 612.00 scale
+n
+0.0000 0.0000 m
+0.0000 1.0000 l
+1.2941 1.0000 l
+1.2941 0.0000 l
+c
+[/DeviceRGB] SCS
+Color0 SC
+fill
+[/DeviceRGB] SCS
+Color6 SC
+[0.0015 0.0045 ] 0 SD
+0.0015 SLW
+0 SLC
+0 SLJ
+n
+0.1641 0.5318 m
+0.1641 0.8500 l
+s
+n
+0.1781 0.5318 m
+0.1781 0.8500 l
+s
+n
+0.1922 0.5318 m
+0.1922 0.8500 l
+s
+n
+0.2203 0.5318 m
+0.2203 0.8500 l
+s
+n
+0.2343 0.5318 m
+0.2343 0.8500 l
+s
+n
+0.2484 0.5318 m
+0.2484 0.8500 l
+s
+n
+0.2765 0.5318 m
+0.2765 0.8500 l
+s
+n
+0.2906 0.5318 m
+0.2906 0.8500 l
+s
+n
+0.3046 0.5318 m
+0.3046 0.8500 l
+s
+n
+0.3327 0.5318 m
+0.3327 0.8500 l
+s
+n
+0.3468 0.5318 m
+0.3468 0.8500 l
+s
+n
+0.3609 0.5318 m
+0.3609 0.8500 l
+s
+n
+0.3890 0.5318 m
+0.3890 0.8500 l
+s
+n
+0.4030 0.5318 m
+0.4030 0.8500 l
+s
+n
+0.4171 0.5318 m
+0.4171 0.8500 l
+s
+n
+0.4452 0.5318 m
+0.4452 0.8500 l
+s
+n
+0.4593 0.5318 m
+0.4593 0.8500 l
+s
+n
+0.4733 0.5318 m
+0.4733 0.8500 l
+s
+n
+0.5014 0.5318 m
+0.5014 0.8500 l
+s
+n
+0.5155 0.5318 m
+0.5155 0.8500 l
+s
+n
+0.5295 0.5318 m
+0.5295 0.8500 l
+s
+n
+0.5576 0.5318 m
+0.5576 0.8500 l
+s
+n
+0.5717 0.5318 m
+0.5717 0.8500 l
+s
+n
+0.5858 0.5318 m
+0.5858 0.8500 l
+s
+n
+0.6139 0.5318 m
+0.6139 0.8500 l
+s
+n
+0.6279 0.5318 m
+0.6279 0.8500 l
+s
+n
+0.6420 0.5318 m
+0.6420 0.8500 l
+s
+n
+0.6701 0.5318 m
+0.6701 0.8500 l
+s
+n
+0.6842 0.5318 m
+0.6842 0.8500 l
+s
+n
+0.6982 0.5318 m
+0.6982 0.8500 l
+s
+n
+0.7263 0.5318 m
+0.7263 0.8500 l
+s
+n
+0.7404 0.5318 m
+0.7404 0.8500 l
+s
+n
+0.7544 0.5318 m
+0.7544 0.8500 l
+s
+n
+0.7826 0.5318 m
+0.7826 0.8500 l
+s
+n
+0.7966 0.5318 m
+0.7966 0.8500 l
+s
+n
+0.8107 0.5318 m
+0.8107 0.8500 l
+s
+n
+0.8388 0.5318 m
+0.8388 0.8500 l
+s
+n
+0.8528 0.5318 m
+0.8528 0.8500 l
+s
+n
+0.8669 0.5318 m
+0.8669 0.8500 l
+s
+n
+0.8950 0.5318 m
+0.8950 0.8500 l
+s
+n
+0.9091 0.5318 m
+0.9091 0.8500 l
+s
+n
+0.9231 0.5318 m
+0.9231 0.8500 l
+s
+n
+0.9512 0.5318 m
+0.9512 0.8500 l
+s
+n
+0.9653 0.5318 m
+0.9653 0.8500 l
+s
+n
+0.9794 0.5318 m
+0.9794 0.8500 l
+s
+n
+1.0075 0.5318 m
+1.0075 0.8500 l
+s
+n
+1.0215 0.5318 m
+1.0215 0.8500 l
+s
+n
+1.0356 0.5318 m
+1.0356 0.8500 l
+s
+n
+1.0637 0.5318 m
+1.0637 0.8500 l
+s
+n
+1.0778 0.5318 m
+1.0778 0.8500 l
+s
+n
+1.0918 0.5318 m
+1.0918 0.8500 l
+s
+n
+1.1199 0.5318 m
+1.1199 0.8500 l
+s
+n
+1.1340 0.5318 m
+1.1340 0.8500 l
+s
+[0.0075 0.0045 ] 0 SD
+0.0015 SLW
+n
+0.1500 0.5318 m
+0.1500 0.8500 l
+s
+n
+0.2062 0.5318 m
+0.2062 0.8500 l
+s
+n
+0.2625 0.5318 m
+0.2625 0.8500 l
+s
+n
+0.3187 0.5318 m
+0.3187 0.8500 l
+s
+n
+0.3749 0.5318 m
+0.3749 0.8500 l
+s
+n
+0.4311 0.5318 m
+0.4311 0.8500 l
+s
+n
+0.4874 0.5318 m
+0.4874 0.8500 l
+s
+n
+0.5436 0.5318 m
+0.5436 0.8500 l
+s
+n
+0.5998 0.5318 m
+0.5998 0.8500 l
+s
+n
+0.6560 0.5318 m
+0.6560 0.8500 l
+s
+n
+0.7123 0.5318 m
+0.7123 0.8500 l
+s
+n
+0.7685 0.5318 m
+0.7685 0.8500 l
+s
+n
+0.8247 0.5318 m
+0.8247 0.8500 l
+s
+n
+0.8810 0.5318 m
+0.8810 0.8500 l
+s
+n
+0.9372 0.5318 m
+0.9372 0.8500 l
+s
+n
+0.9934 0.5318 m
+0.9934 0.8500 l
+s
+n
+1.0496 0.5318 m
+1.0496 0.8500 l
+s
+n
+1.1059 0.5318 m
+1.1059 0.8500 l
+s
+[0.0015 0.0045 ] 0 SD
+0.0015 SLW
+n
+0.1500 0.5636 m
+1.1433 0.5636 l
+s
+n
+0.1500 0.6273 m
+1.1433 0.6273 l
+s
+n
+0.1500 0.6909 m
+1.1433 0.6909 l
+s
+n
+0.1500 0.7545 m
+1.1433 0.7545 l
+s
+n
+0.1500 0.8182 m
+1.1433 0.8182 l
+s
+[0.0075 0.0045 ] 0 SD
+0.0015 SLW
+n
+0.1500 0.5318 m
+1.1433 0.5318 l
+s
+n
+0.1500 0.5955 m
+1.1433 0.5955 l
+s
+n
+0.1500 0.6591 m
+1.1433 0.6591 l
+s
+n
+0.1500 0.7227 m
+1.1433 0.7227 l
+s
+n
+0.1500 0.7864 m
+1.1433 0.7864 l
+s
+n
+0.1500 0.8500 m
+1.1433 0.8500 l
+s
+n
+0.1500 0.5392 m
+0.1580 0.7320 l
+0.1589 0.7266 l
+0.1599 0.6516 l
+0.1652 0.6757 l
+0.1661 0.6878 l
+0.1670 0.6660 l
+0.1680 0.7634 l
+0.1694 0.6348 l
+0.1704 0.5723 l
+0.1714 0.5393 l
+0.1725 0.5336 l
+0.1744 0.6140 l
+0.1753 0.6132 l
+0.1763 0.5785 l
+0.1772 0.5963 l
+0.1783 0.6109 l
+0.1792 0.6014 l
+0.1801 0.5850 l
+0.1811 0.5346 l
+0.1822 0.5842 l
+0.1831 0.5471 l
+0.1841 0.5332 l
+0.1850 0.5325 l
+0.1860 0.5343 l
+0.1871 0.5330 l
+0.1881 0.5326 l
+0.1891 0.5324 l
+0.1902 0.5325 l
+0.1912 0.5346 l
+0.1922 0.5323 l
+0.1932 0.5344 l
+0.1943 0.5338 l
+0.1952 0.5335 l
+0.1962 0.5329 l
+0.1972 0.5327 l
+0.1983 0.5323 l
+0.1995 0.5341 l
+0.2006 0.5352 l
+0.2016 0.5323 l
+0.2026 0.5322 l
+0.2036 0.5325 l
+0.2046 0.5348 l
+0.2056 0.6288 l
+0.2066 0.5557 l
+0.2075 0.5343 l
+0.2086 0.5323 l
+0.2096 0.5332 l
+0.2107 0.5334 l
+0.2116 0.5325 l
+0.2129 0.5325 l
+0.2138 0.5329 l
+0.2149 0.5325 l
+0.2159 0.5327 l
+0.2170 0.5325 l
+0.2183 0.5325 l
+0.2193 0.5324 l
+0.2202 0.5335 l
+0.2212 0.5334 l
+0.2221 0.5324 l
+0.2236 0.5319 l
+0.2248 0.5331 l
+0.2260 0.6155 l
+0.2271 0.5943 l
+0.2280 0.5787 l
+0.2289 0.6189 l
+0.2299 0.5783 l
+0.2308 0.6239 l
+0.2317 0.7085 l
+0.2327 0.6504 l
+0.2338 0.5650 l
+0.2348 0.5881 l
+0.2357 0.5729 l
+0.2366 0.5631 l
+0.2376 0.5735 l
+0.2385 0.5630 l
+0.2395 0.5527 l
+0.2404 0.5479 l
+0.2414 0.5451 l
+0.2424 0.5526 l
+0.2434 0.5486 l
+0.2443 0.5514 l
+0.2453 0.5458 l
+0.2462 0.6004 l
+0.2472 0.5975 l
+0.2482 0.6033 l
+0.2492 0.5736 l
+0.2501 0.6625 l
+0.2511 0.6248 l
+0.2520 0.6165 l
+0.2530 0.6244 l
+0.2539 0.6472 l
+0.2549 0.5909 l
+0.2558 0.5542 l
+0.2567 0.5546 l
+0.2577 0.6066 l
+0.2586 0.6610 l
+0.2596 0.7084 l
+0.2605 0.7041 l
+0.2615 0.7072 l
+0.2624 0.7142 l
+0.2633 0.7032 l
+0.2643 0.7193 l
+0.2652 0.5935 l
+0.2662 0.5715 l
+0.2671 0.5456 l
+0.2681 0.5328 l
+0.2704 0.5915 l
+0.2713 0.5946 l
+0.2722 0.5902 l
+0.2732 0.5739 l
+0.2741 0.5917 l
+0.2751 0.6343 l
+0.2760 0.6083 l
+0.2770 0.5547 l
+0.2779 0.5386 l
+0.2789 0.5475 l
+0.2798 0.5705 l
+0.2808 0.5431 l
+0.2818 0.5325 l
+0.2827 0.5325 l
+0.2837 0.5369 l
+0.2848 0.5341 l
+0.2857 0.5324 l
+0.2867 0.5324 l
+0.2877 0.5327 l
+0.2888 0.5329 l
+0.2897 0.5322 l
+0.2907 0.5323 l
+0.2916 0.5324 l
+0.2926 0.5329 l
+0.2935 0.5332 l
+0.2945 0.5336 l
+0.2955 0.5335 l
+0.2965 0.5334 l
+0.2976 0.5326 l
+0.2987 0.5336 l
+0.3001 0.5322 l
+0.3011 0.5326 l
+0.3020 0.5322 l
+0.3031 0.5322 l
+0.3041 0.5323 l
+0.3054 0.5321 l
+0.3064 0.5701 l
+0.3073 0.5967 l
+0.3085 0.5327 l
+0.3095 0.5329 l
+0.3105 0.5331 l
+0.3116 0.5326 l
+0.3128 0.5323 l
+0.3140 0.5326 l
+0.3151 0.5323 l
+0.3160 0.5341 l
+0.3171 0.5323 l
+0.3181 0.5347 l
+0.3191 0.5324 l
+0.3202 0.5333 l
+0.3212 0.5322 l
+0.3228 0.5341 l
+0.3240 0.6006 l
+0.3251 0.5955 l
+0.3261 0.5649 l
+0.3270 0.6039 l
+0.3280 0.5766 l
+0.3289 0.5728 l
+0.3298 0.5787 l
+0.3308 0.5912 l
+0.3317 0.5523 l
+0.3327 0.5798 l
+0.3336 0.5778 l
+0.3346 0.5852 l
+0.3356 0.5803 l
+0.3365 0.5692 l
+0.3375 0.5568 l
+0.3384 0.5497 l
+0.3394 0.5481 l
+0.3403 0.5550 l
+0.3413 0.5504 l
+0.3422 0.5544 l
+0.3432 0.5398 l
+0.3442 0.5998 l
+0.3453 0.6158 l
+0.3463 0.6987 l
+0.3473 0.6729 l
+0.3482 0.6695 l
+0.3492 0.5681 l
+0.3501 0.5713 l
+0.3511 0.6052 l
+0.3520 0.5817 l
+0.3530 0.5518 l
+0.3540 0.5541 l
+0.3550 0.6462 l
+0.3559 0.6965 l
+0.3568 0.6913 l
+0.3578 0.6677 l
+0.3587 0.6511 l
+0.3597 0.6913 l
+0.3606 0.7355 l
+0.3615 0.6887 l
+0.3625 0.6773 l
+0.3634 0.5739 l
+0.3645 0.5737 l
+0.3655 0.5361 l
+0.3666 0.5337 l
+0.3685 0.5902 l
+0.3694 0.5803 l
+0.3703 0.5969 l
+0.3713 0.5693 l
+0.3722 0.5925 l
+0.3732 0.5998 l
+0.3741 0.6172 l
+0.3750 0.5567 l
+0.3760 0.5468 l
+0.3771 0.5385 l
+0.3786 0.5775 l
+0.3795 0.5490 l
+0.3804 0.5390 l
+0.3814 0.5327 l
+0.3826 0.5332 l
+0.3835 0.5369 l
+0.3845 0.5328 l
+0.3854 0.5322 l
+0.3864 0.5326 l
+0.3874 0.5324 l
+0.3885 0.5325 l
+0.3895 0.5322 l
+0.3905 0.5325 l
+0.3914 0.5322 l
+0.3924 0.5335 l
+0.3934 0.5330 l
+0.3944 0.5354 l
+0.3953 0.5341 l
+0.3963 0.5383 l
+0.3976 0.5323 l
+0.3986 0.5321 l
+0.3997 0.5333 l
+0.4007 0.6141 l
+0.4016 0.5530 l
+0.4026 0.5323 l
+0.4036 0.5326 l
+0.4047 0.5323 l
+0.4056 0.5332 l
+0.4066 0.5355 l
+0.4076 0.5348 l
+0.4086 0.5322 l
+0.4098 0.5334 l
+0.4108 0.5324 l
+0.4118 0.5324 l
+0.4130 0.5322 l
+0.4140 0.5332 l
+0.4150 0.5332 l
+0.4160 0.5324 l
+0.4170 0.5324 l
+0.4180 0.5342 l
+0.4189 0.5326 l
+0.4199 0.5321 l
+0.4218 0.5332 l
+0.4230 0.6223 l
+0.4240 0.5670 l
+0.4249 0.5782 l
+0.4260 0.5861 l
+0.4269 0.5899 l
+0.4279 0.5754 l
+0.4288 0.5697 l
+0.4297 0.5686 l
+0.4307 0.5862 l
+0.4317 0.5827 l
+0.4327 0.5732 l
+0.4336 0.5856 l
+0.4346 0.5801 l
+0.4355 0.5750 l
+0.4365 0.5638 l
+0.4374 0.5521 l
+0.4384 0.5496 l
+0.4393 0.5503 l
+0.4403 0.5504 l
+0.4412 0.5462 l
+0.4422 0.5514 l
+0.4431 0.5801 l
+0.4441 0.7010 l
+0.4450 0.6765 l
+0.4460 0.6616 l
+0.4469 0.5743 l
+0.4479 0.5518 l
+0.4488 0.5638 l
+0.4498 0.5598 l
+0.4507 0.5955 l
+0.4516 0.5873 l
+0.4526 0.5569 l
+0.4535 0.5579 l
+0.4545 0.6343 l
+0.4555 0.6676 l
+0.4564 0.6833 l
+0.4574 0.6721 l
+0.4583 0.6863 l
+0.4593 0.6946 l
+0.4602 0.7148 l
+0.4612 0.7269 l
+0.4621 0.6609 l
+0.4630 0.6254 l
+0.4641 0.5589 l
+0.4651 0.5749 l
+0.4660 0.5327 l
+0.4671 0.5382 l
+0.4686 0.5939 l
+0.4695 0.5808 l
+0.4705 0.5898 l
+0.4714 0.5721 l
+0.4725 0.5934 l
+0.4734 0.5982 l
+0.4743 0.6144 l
+0.4753 0.5579 l
+0.4762 0.5528 l
+0.4772 0.5394 l
+0.4781 0.5461 l
+0.4791 0.5660 l
+0.4800 0.5478 l
+0.4809 0.5342 l
+0.4819 0.5327 l
+0.4829 0.5363 l
+0.4839 0.5350 l
+0.4848 0.5322 l
+0.4858 0.5325 l
+0.4867 0.5326 l
+0.4878 0.5324 l
+0.4889 0.5324 l
+0.4899 0.5325 l
+0.4909 0.5340 l
+0.4921 0.5341 l
+0.4932 0.5349 l
+0.4943 0.5330 l
+0.4953 0.5324 l
+0.4964 0.5323 l
+0.4975 0.5352 l
+0.4985 0.5327 l
+0.4996 0.5322 l
+0.5006 0.5882 l
+0.5016 0.5737 l
+0.5027 0.5323 l
+0.5038 0.5322 l
+0.5048 0.5349 l
+0.5057 0.5325 l
+0.5067 0.5328 l
+0.5076 0.5326 l
+0.5086 0.5341 l
+0.5095 0.5323 l
+0.5106 0.5337 l
+0.5116 0.5326 l
+0.5126 0.5323 l
+0.5136 0.5326 l
+0.5148 0.5323 l
+0.5158 0.5323 l
+0.5168 0.5324 l
+0.5177 0.5331 l
+0.5189 0.5325 l
+0.5199 0.5345 l
+0.5210 0.5321 l
+0.5226 0.5331 l
+0.5238 0.6037 l
+0.5249 0.5964 l
+0.5258 0.5647 l
+0.5267 0.5890 l
+0.5277 0.5885 l
+0.5286 0.5726 l
+0.5296 0.5726 l
+0.5305 0.5647 l
+0.5314 0.5853 l
+0.5325 0.5776 l
+0.5335 0.5784 l
+0.5344 0.5750 l
+0.5354 0.5715 l
+0.5363 0.5694 l
+0.5373 0.5668 l
+0.5382 0.5500 l
+0.5392 0.5444 l
+0.5401 0.5477 l
+0.5411 0.5465 l
+0.5420 0.5505 l
+0.5430 0.5459 l
+0.5439 0.5483 l
+0.5448 0.5860 l
+0.5458 0.6003 l
+0.5467 0.5932 l
+0.5477 0.5926 l
+0.5486 0.6422 l
+0.5496 0.6395 l
+0.5505 0.6167 l
+0.5515 0.6160 l
+0.5524 0.6340 l
+0.5533 0.5967 l
+0.5543 0.5719 l
+0.5552 0.5523 l
+0.5562 0.5533 l
+0.5572 0.6363 l
+0.5581 0.6881 l
+0.5590 0.6723 l
+0.5600 0.6654 l
+0.5609 0.7319 l
+0.5619 0.6608 l
+0.5628 0.6778 l
+0.5638 0.6751 l
+0.5647 0.6114 l
+0.5657 0.5526 l
+0.5666 0.5715 l
+0.5676 0.5329 l
+0.5686 0.5382 l
+0.5701 0.5852 l
+0.5711 0.5783 l
+0.5720 0.5915 l
+0.5730 0.5764 l
+0.5740 0.5870 l
+0.5749 0.5995 l
+0.5759 0.5982 l
+0.5768 0.5596 l
+0.5777 0.5462 l
+0.5787 0.5403 l
+0.5796 0.5411 l
+0.5806 0.5710 l
+0.5815 0.5503 l
+0.5825 0.5339 l
+0.5835 0.5330 l
+0.5846 0.5358 l
+0.5855 0.5334 l
+0.5866 0.5324 l
+0.5877 0.5323 l
+0.5887 0.5326 l
+0.5897 0.5326 l
+0.5908 0.5324 l
+0.5921 0.5322 l
+0.5930 0.5349 l
+0.5940 0.5324 l
+0.5950 0.5366 l
+0.5961 0.5333 l
+0.5971 0.5367 l
+0.5981 0.5323 l
+0.5991 0.5323 l
+0.6002 0.5323 l
+0.6012 0.5328 l
+0.6024 0.6027 l
+0.6034 0.5611 l
+0.6046 0.5334 l
+0.6056 0.5323 l
+0.6067 0.5334 l
+0.6076 0.5348 l
+0.6086 0.5342 l
+0.6096 0.5325 l
+0.6111 0.5326 l
+0.6123 0.5334 l
+0.6133 0.5323 l
+0.6143 0.5323 l
+0.6153 0.5323 l
+0.6163 0.5321 l
+0.6174 0.5324 l
+0.6186 0.5330 l
+0.6195 0.5344 l
+0.6204 0.5327 l
+0.6214 0.5324 l
+0.6234 0.5332 l
+0.6246 0.6296 l
+0.6257 0.5753 l
+0.6266 0.5698 l
+0.6276 0.5823 l
+0.6285 0.5820 l
+0.6295 0.5801 l
+0.6304 0.5682 l
+0.6314 0.5693 l
+0.6323 0.5995 l
+0.6333 0.5811 l
+0.6342 0.5701 l
+0.6352 0.5834 l
+0.6362 0.5711 l
+0.6371 0.5767 l
+0.6381 0.5609 l
+0.6390 0.5525 l
+0.6399 0.5474 l
+0.6409 0.5513 l
+0.6418 0.5479 l
+0.6428 0.5490 l
+0.6437 0.5451 l
+0.6447 0.5539 l
+0.6456 0.5506 l
+0.6466 0.6073 l
+0.6475 0.5773 l
+0.6485 0.5994 l
+0.6494 0.5856 l
+0.6504 0.6389 l
+0.6513 0.6435 l
+0.6523 0.6162 l
+0.6532 0.6159 l
+0.6542 0.6345 l
+0.6551 0.5905 l
+0.6561 0.5566 l
+0.6571 0.5526 l
+0.6580 0.6082 l
+0.6590 0.6645 l
+0.6599 0.6692 l
+0.6609 0.6717 l
+0.6618 0.7087 l
+0.6627 0.6723 l
+0.6637 0.6602 l
+0.6646 0.6397 l
+0.6656 0.5758 l
+0.6665 0.5506 l
+0.6674 0.5698 l
+0.6685 0.5328 l
+0.6709 0.5854 l
+0.6718 0.5809 l
+0.6727 0.5919 l
+0.6737 0.5835 l
+0.6748 0.5903 l
+0.6757 0.5972 l
+0.6767 0.6007 l
+0.6776 0.5540 l
+0.6786 0.5454 l
+0.6796 0.5366 l
+0.6810 0.5812 l
+0.6819 0.5469 l
+0.6829 0.5346 l
+0.6839 0.5323 l
+0.6850 0.5385 l
+0.6859 0.5325 l
+0.6869 0.5324 l
+0.6880 0.5329 l
+0.6889 0.5326 l
+0.6901 0.5325 l
+0.6911 0.5323 l
+0.6920 0.5329 l
+0.6930 0.5324 l
+0.6940 0.5335 l
+0.6949 0.5326 l
+0.6959 0.5333 l
+0.6969 0.5362 l
+0.6979 0.5366 l
+0.6989 0.5321 l
+0.6999 0.5323 l
+0.7010 0.5327 l
+0.7021 0.5324 l
+0.7032 0.6069 l
+0.7042 0.5598 l
+0.7056 0.5324 l
+0.7066 0.5349 l
+0.7076 0.5330 l
+0.7085 0.5333 l
+0.7095 0.5331 l
+0.7104 0.5331 l
+0.7114 0.5323 l
+0.7125 0.5323 l
+0.7136 0.5336 l
+0.7147 0.5325 l
+0.7157 0.5322 l
+0.7168 0.5321 l
+0.7180 0.5324 l
+0.7191 0.5328 l
+0.7200 0.5331 l
+0.7209 0.5334 l
+0.7220 0.5323 l
+0.7241 0.5331 l
+0.7253 0.6090 l
+0.7264 0.5961 l
+0.7273 0.5640 l
+0.7283 0.5998 l
+0.7292 0.5800 l
+0.7301 0.5751 l
+0.7311 0.5730 l
+0.7321 0.5681 l
+0.7330 0.5814 l
+0.7339 0.5819 l
+0.7350 0.5799 l
+0.7359 0.5799 l
+0.7369 0.5730 l
+0.7378 0.5655 l
+0.7388 0.5588 l
+0.7397 0.5487 l
+0.7407 0.5523 l
+0.7418 0.5458 l
+0.7428 0.5520 l
+0.7437 0.5428 l
+0.7447 0.5525 l
+0.7456 0.5828 l
+0.7466 0.7379 l
+0.7475 0.6763 l
+0.7485 0.6548 l
+0.7494 0.5436 l
+0.7504 0.5472 l
+0.7513 0.5705 l
+0.7522 0.5731 l
+0.7532 0.5992 l
+0.7541 0.5789 l
+0.7551 0.5510 l
+0.7560 0.5520 l
+0.7570 0.6209 l
+0.7579 0.6777 l
+0.7589 0.6655 l
+0.7598 0.6804 l
+0.7608 0.6777 l
+0.7617 0.6955 l
+0.7626 0.6892 l
+0.7636 0.7899 l
+0.7645 0.6083 l
+0.7655 0.5784 l
+0.7665 0.5747 l
+0.7676 0.5541 l
+0.7686 0.5693 l
+0.7697 0.5328 l
+0.7720 0.5944 l
+0.7729 0.5854 l
+0.7738 0.5888 l
+0.7748 0.5830 l
+0.7760 0.5841 l
+0.7769 0.6160 l
+0.7778 0.6082 l
+0.7788 0.5476 l
+0.7797 0.5470 l
+0.7807 0.5403 l
+0.7822 0.5741 l
+0.7831 0.5492 l
+0.7841 0.5348 l
+0.7850 0.5325 l
+0.7860 0.5362 l
+0.7870 0.5345 l
+0.7882 0.5325 l
+0.7892 0.5325 l
+0.7902 0.5324 l
+0.7912 0.5328 l
+0.7922 0.5324 l
+0.7932 0.5329 l
+0.7943 0.5325 l
+0.7953 0.5338 l
+0.7964 0.5340 l
+0.7973 0.5353 l
+0.7983 0.5331 l
+0.7994 0.5328 l
+0.8004 0.5351 l
+0.8016 0.5322 l
+0.8026 0.5328 l
+0.8035 0.5330 l
+0.8045 0.6166 l
+0.8054 0.5528 l
+0.8065 0.5323 l
+0.8076 0.5322 l
+0.8086 0.5331 l
+0.8097 0.5351 l
+0.8107 0.5343 l
+0.8118 0.5322 l
+0.8128 0.5322 l
+0.8137 0.5334 l
+0.8147 0.5332 l
+0.8158 0.5325 l
+0.8168 0.5325 l
+0.8181 0.5324 l
+0.8191 0.5342 l
+0.8201 0.5323 l
+0.8211 0.5325 l
+0.8221 0.5322 l
+0.8231 0.5333 l
+0.8240 0.5339 l
+0.8257 0.5330 l
+0.8269 0.6251 l
+0.8280 0.5828 l
+0.8289 0.5662 l
+0.8299 0.5825 l
+0.8309 0.5879 l
+0.8318 0.5837 l
+0.8327 0.5674 l
+0.8337 0.5679 l
+0.8346 0.5871 l
+0.8357 0.5895 l
+0.8367 0.5654 l
+0.8376 0.5743 l
+0.8386 0.5679 l
+0.8395 0.5709 l
+0.8405 0.5597 l
+0.8415 0.5603 l
+0.8424 0.5479 l
+0.8434 0.5433 l
+0.8443 0.5458 l
+0.8453 0.5481 l
+0.8462 0.5506 l
+0.8472 0.5440 l
+0.8481 0.5519 l
+0.8491 0.5802 l
+0.8500 0.5992 l
+0.8510 0.5933 l
+0.8519 0.6376 l
+0.8528 0.6617 l
+0.8538 0.6212 l
+0.8548 0.5878 l
+0.8557 0.5779 l
+0.8567 0.5981 l
+0.8576 0.5882 l
+0.8586 0.5600 l
+0.8595 0.5549 l
+0.8605 0.6190 l
+0.8614 0.6856 l
+0.8624 0.6639 l
+0.8633 0.6623 l
+0.8642 0.7367 l
+0.8652 0.6969 l
+0.8661 0.6983 l
+0.8671 0.6822 l
+0.8680 0.5987 l
+0.8689 0.5657 l
+0.8699 0.5590 l
+0.8709 0.5328 l
+0.8732 0.5884 l
+0.8741 0.5852 l
+0.8751 0.5917 l
+0.8760 0.5777 l
+0.8770 0.5897 l
+0.8779 0.6134 l
+0.8788 0.6012 l
+0.8798 0.5510 l
+0.8807 0.5417 l
+0.8816 0.5374 l
+0.8829 0.5807 l
+0.8839 0.5473 l
+0.8848 0.5356 l
+0.8859 0.5327 l
+0.8868 0.5352 l
+0.8878 0.5344 l
+0.8888 0.5323 l
+0.8897 0.5328 l
+0.8907 0.5326 l
+0.8919 0.5324 l
+0.8930 0.5330 l
+0.8941 0.5324 l
+0.8954 0.5326 l
+0.8965 0.5346 l
+0.8976 0.5345 l
+0.8986 0.5342 l
+0.8996 0.5330 l
+0.9006 0.5348 l
+0.9016 0.5324 l
+0.9025 0.5329 l
+0.9036 0.5324 l
+0.9046 0.5677 l
+0.9056 0.6026 l
+0.9067 0.5328 l
+0.9080 0.5324 l
+0.9090 0.5323 l
+0.9102 0.5357 l
+0.9113 0.5341 l
+0.9123 0.5327 l
+0.9134 0.5321 l
+0.9144 0.5329 l
+0.9154 0.5325 l
+0.9163 0.5324 l
+0.9173 0.5323 l
+0.9186 0.5324 l
+0.9200 0.5332 l
+0.9210 0.5324 l
+0.9220 0.5324 l
+0.9229 0.5341 l
+0.9239 0.5331 l
+0.9250 0.5319 l
+0.9263 0.5324 l
+0.9274 0.6164 l
+0.9284 0.5835 l
+0.9293 0.5614 l
+0.9302 0.5801 l
+0.9312 0.5931 l
+0.9321 0.5780 l
+0.9331 0.5739 l
+0.9340 0.5656 l
+0.9350 0.5850 l
+0.9359 0.5818 l
+0.9368 0.5652 l
+0.9378 0.5688 l
+0.9388 0.5708 l
+0.9397 0.5747 l
+0.9407 0.5701 l
+0.9417 0.5556 l
+0.9426 0.5486 l
+0.9436 0.5516 l
+0.9445 0.5421 l
+0.9455 0.5516 l
+0.9464 0.5473 l
+0.9475 0.5512 l
+0.9485 0.5691 l
+0.9494 0.5727 l
+0.9504 0.6002 l
+0.9514 0.6135 l
+0.9523 0.5775 l
+0.9533 0.6313 l
+0.9542 0.6263 l
+0.9552 0.6232 l
+0.9561 0.6292 l
+0.9570 0.6639 l
+0.9580 0.5918 l
+0.9589 0.5620 l
+0.9599 0.5540 l
+0.9608 0.5656 l
+0.9618 0.6906 l
+0.9627 0.7006 l
+0.9636 0.6790 l
+0.9646 0.7133 l
+0.9655 0.6578 l
+0.9665 0.6487 l
+0.9674 0.6598 l
+0.9684 0.6683 l
+0.9694 0.5670 l
+0.9704 0.5760 l
+0.9713 0.5367 l
+0.9725 0.5336 l
+0.9743 0.5853 l
+0.9752 0.5751 l
+0.9762 0.5870 l
+0.9771 0.5842 l
+0.9781 0.5838 l
+0.9790 0.5724 l
+0.9800 0.6073 l
+0.9809 0.5864 l
+0.9820 0.5557 l
+0.9830 0.5381 l
+0.9839 0.5348 l
+0.9849 0.5800 l
+0.9858 0.5495 l
+0.9867 0.5352 l
+0.9877 0.5322 l
+0.9887 0.5353 l
+0.9897 0.5343 l
+0.9907 0.5325 l
+0.9916 0.5323 l
+0.9926 0.5325 l
+0.9936 0.5327 l
+0.9946 0.5324 l
+0.9957 0.5323 l
+0.9967 0.5325 l
+0.9976 0.5321 l
+0.9986 0.5337 l
+0.9995 0.5335 l
+1.0005 0.5354 l
+1.0016 0.5335 l
+1.0026 0.5365 l
+1.0038 0.5321 l
+1.0049 0.5329 l
+1.0060 0.5327 l
+1.0070 0.6021 l
+1.0079 0.5716 l
+1.0089 0.5325 l
+1.0099 0.5323 l
+1.0109 0.5332 l
+1.0119 0.5347 l
+1.0129 0.5331 l
+1.0139 0.5331 l
+1.0150 0.5338 l
+1.0160 0.5323 l
+1.0170 0.5325 l
+1.0181 0.5323 l
+1.0192 0.5328 l
+1.0202 0.5327 l
+1.0212 0.5325 l
+1.0222 0.5325 l
+1.0232 0.5323 l
+1.0245 0.5327 l
+1.0255 0.5325 l
+1.0265 0.5336 l
+1.0284 0.5331 l
+1.0296 0.6292 l
+1.0306 0.5897 l
+1.0316 0.5627 l
+1.0325 0.5921 l
+1.0334 0.5838 l
+1.0344 0.5762 l
+1.0353 0.5768 l
+1.0363 0.5651 l
+1.0372 0.5971 l
+1.0382 0.5735 l
+1.0392 0.5670 l
+1.0402 0.5692 l
+1.0411 0.5791 l
+1.0420 0.5779 l
+1.0430 0.5661 l
+1.0439 0.5485 l
+1.0449 0.5504 l
+1.0458 0.5480 l
+1.0467 0.5532 l
+1.0477 0.5447 l
+1.0487 0.5562 l
+1.0496 0.6647 l
+1.0505 0.6930 l
+1.0515 0.6757 l
+1.0524 0.5999 l
+1.0534 0.5461 l
+1.0544 0.5652 l
+1.0553 0.5689 l
+1.0563 0.5949 l
+1.0572 0.5961 l
+1.0582 0.5590 l
+1.0591 0.5548 l
+1.0600 0.6106 l
+1.0610 0.6874 l
+1.0619 0.6918 l
+1.0629 0.6658 l
+1.0638 0.6892 l
+1.0647 0.6797 l
+1.0657 0.6864 l
+1.0666 0.7203 l
+1.0676 0.7486 l
+1.0686 0.6802 l
+1.0700 0.5568 l
+1.0710 0.5855 l
+1.0719 0.5353 l
+1.0730 0.5403 l
+1.0745 0.5934 l
+1.0755 0.5857 l
+1.0764 0.5853 l
+1.0774 0.5738 l
+1.0783 0.5924 l
+1.0792 0.5910 l
+1.0802 0.5942 l
+1.0811 0.5745 l
+1.0821 0.5529 l
+1.0830 0.5388 l
+1.0841 0.5407 l
+1.0850 0.5717 l
+1.0860 0.5490 l
+1.0869 0.5345 l
+1.0880 0.5326 l
+1.0889 0.5360 l
+1.0898 0.5339 l
+1.0908 0.5323 l
+1.0918 0.5329 l
+1.0928 0.5324 l
+1.0939 0.5325 l
+1.0949 0.5322 l
+1.0958 0.5327 l
+1.0968 0.5323 l
+1.0977 0.5343 l
+1.0988 0.5324 l
+1.0998 0.5367 l
+1.1010 0.5330 l
+1.1021 0.5331 l
+1.1032 0.5351 l
+1.1044 0.5322 l
+1.1055 0.5329 l
+1.1064 0.5751 l
+1.1074 0.5955 l
+1.1083 0.5324 l
+1.1094 0.5324 l
+1.1105 0.5326 l
+1.1116 0.5350 l
+1.1126 0.5335 l
+1.1135 0.5338 l
+1.1146 0.5324 l
+1.1159 0.5322 l
+1.1168 0.5336 l
+1.1178 0.5332 l
+1.1189 0.5325 l
+1.1199 0.5325 l
+1.1209 0.5324 l
+1.1219 0.5324 l
+1.1228 0.5326 l
+1.1238 0.5327 l
+1.1247 0.5343 l
+1.1259 0.5323 l
+1.1272 0.5319 l
+1.1284 0.5334 l
+1.1296 0.6069 l
+1.1307 0.6039 l
+1.1317 0.5663 l
+1.1326 0.5847 l
+1.1335 0.5837 l
+1.1345 0.5775 l
+1.1354 0.5756 l
+1.1364 0.5720 l
+1.1373 0.5801 l
+1.1383 0.5573 l
+1.1383 0.5318 l
+0.1500 0.5318 l
+c
+[/DeviceRGB] SCS
+Color4 SC
+fill
+[] 0 SD
+0.0015 SLW
+n
+0.1500 0.5392 m
+0.1580 0.7320 l
+0.1589 0.7266 l
+0.1599 0.6516 l
+0.1652 0.6757 l
+0.1661 0.6878 l
+0.1670 0.6660 l
+0.1680 0.7634 l
+0.1694 0.6348 l
+0.1704 0.5723 l
+0.1714 0.5393 l
+0.1725 0.5336 l
+0.1744 0.6140 l
+0.1753 0.6132 l
+0.1763 0.5785 l
+0.1772 0.5963 l
+0.1783 0.6109 l
+0.1792 0.6014 l
+0.1801 0.5850 l
+0.1811 0.5346 l
+0.1822 0.5842 l
+0.1831 0.5471 l
+0.1841 0.5332 l
+0.1850 0.5325 l
+0.1860 0.5343 l
+0.1871 0.5330 l
+0.1881 0.5326 l
+0.1891 0.5324 l
+0.1902 0.5325 l
+0.1912 0.5346 l
+0.1922 0.5323 l
+0.1932 0.5344 l
+0.1943 0.5338 l
+0.1952 0.5335 l
+0.1962 0.5329 l
+0.1972 0.5327 l
+0.1983 0.5323 l
+0.1995 0.5341 l
+0.2006 0.5352 l
+0.2016 0.5323 l
+0.2026 0.5322 l
+0.2036 0.5325 l
+0.2046 0.5348 l
+0.2056 0.6288 l
+0.2066 0.5557 l
+0.2075 0.5343 l
+0.2086 0.5323 l
+0.2096 0.5332 l
+0.2107 0.5334 l
+0.2116 0.5325 l
+0.2129 0.5325 l
+0.2138 0.5329 l
+0.2149 0.5325 l
+0.2159 0.5327 l
+0.2170 0.5325 l
+0.2183 0.5325 l
+0.2193 0.5324 l
+0.2202 0.5335 l
+0.2212 0.5334 l
+0.2221 0.5324 l
+0.2236 0.5319 l
+0.2248 0.5331 l
+0.2260 0.6155 l
+0.2271 0.5943 l
+0.2280 0.5787 l
+0.2289 0.6189 l
+0.2299 0.5783 l
+0.2308 0.6239 l
+0.2317 0.7085 l
+0.2327 0.6504 l
+0.2338 0.5650 l
+0.2348 0.5881 l
+0.2357 0.5729 l
+0.2366 0.5631 l
+0.2376 0.5735 l
+0.2385 0.5630 l
+0.2395 0.5527 l
+0.2404 0.5479 l
+0.2414 0.5451 l
+0.2424 0.5526 l
+0.2434 0.5486 l
+0.2443 0.5514 l
+0.2453 0.5458 l
+0.2462 0.6004 l
+0.2472 0.5975 l
+0.2482 0.6033 l
+0.2492 0.5736 l
+0.2501 0.6625 l
+0.2511 0.6248 l
+0.2520 0.6165 l
+0.2530 0.6244 l
+0.2539 0.6472 l
+0.2549 0.5909 l
+0.2558 0.5542 l
+0.2567 0.5546 l
+0.2577 0.6066 l
+0.2586 0.6610 l
+0.2596 0.7084 l
+0.2605 0.7041 l
+0.2615 0.7072 l
+0.2624 0.7142 l
+0.2633 0.7032 l
+0.2643 0.7193 l
+0.2652 0.5935 l
+0.2662 0.5715 l
+0.2671 0.5456 l
+0.2681 0.5328 l
+0.2704 0.5915 l
+0.2713 0.5946 l
+0.2722 0.5902 l
+0.2732 0.5739 l
+0.2741 0.5917 l
+0.2751 0.6343 l
+0.2760 0.6083 l
+0.2770 0.5547 l
+0.2779 0.5386 l
+0.2789 0.5475 l
+0.2798 0.5705 l
+0.2808 0.5431 l
+0.2818 0.5325 l
+0.2827 0.5325 l
+0.2837 0.5369 l
+0.2848 0.5341 l
+0.2857 0.5324 l
+0.2867 0.5324 l
+0.2877 0.5327 l
+0.2888 0.5329 l
+0.2897 0.5322 l
+0.2907 0.5323 l
+0.2916 0.5324 l
+0.2926 0.5329 l
+0.2935 0.5332 l
+0.2945 0.5336 l
+0.2955 0.5335 l
+0.2965 0.5334 l
+0.2976 0.5326 l
+0.2987 0.5336 l
+0.3001 0.5322 l
+0.3011 0.5326 l
+0.3020 0.5322 l
+0.3031 0.5322 l
+0.3041 0.5323 l
+0.3054 0.5321 l
+0.3064 0.5701 l
+0.3073 0.5967 l
+0.3085 0.5327 l
+0.3095 0.5329 l
+0.3105 0.5331 l
+0.3116 0.5326 l
+0.3128 0.5323 l
+0.3140 0.5326 l
+0.3151 0.5323 l
+0.3160 0.5341 l
+0.3171 0.5323 l
+0.3181 0.5347 l
+0.3191 0.5324 l
+0.3202 0.5333 l
+0.3212 0.5322 l
+0.3228 0.5341 l
+0.3240 0.6006 l
+0.3251 0.5955 l
+0.3261 0.5649 l
+0.3270 0.6039 l
+0.3280 0.5766 l
+0.3289 0.5728 l
+0.3298 0.5787 l
+0.3308 0.5912 l
+0.3317 0.5523 l
+0.3327 0.5798 l
+0.3336 0.5778 l
+0.3346 0.5852 l
+0.3356 0.5803 l
+0.3365 0.5692 l
+0.3375 0.5568 l
+0.3384 0.5497 l
+0.3394 0.5481 l
+0.3403 0.5550 l
+0.3413 0.5504 l
+0.3422 0.5544 l
+0.3432 0.5398 l
+0.3442 0.5998 l
+0.3453 0.6158 l
+0.3463 0.6987 l
+0.3473 0.6729 l
+0.3482 0.6695 l
+0.3492 0.5681 l
+0.3501 0.5713 l
+0.3511 0.6052 l
+0.3520 0.5817 l
+0.3530 0.5518 l
+0.3540 0.5541 l
+0.3550 0.6462 l
+0.3559 0.6965 l
+0.3568 0.6913 l
+0.3578 0.6677 l
+0.3587 0.6511 l
+0.3597 0.6913 l
+0.3606 0.7355 l
+0.3615 0.6887 l
+0.3625 0.6773 l
+0.3634 0.5739 l
+0.3645 0.5737 l
+0.3655 0.5361 l
+0.3666 0.5337 l
+0.3685 0.5902 l
+0.3694 0.5803 l
+0.3703 0.5969 l
+0.3713 0.5693 l
+0.3722 0.5925 l
+0.3732 0.5998 l
+0.3741 0.6172 l
+0.3750 0.5567 l
+0.3760 0.5468 l
+0.3771 0.5385 l
+0.3786 0.5775 l
+0.3795 0.5490 l
+0.3804 0.5390 l
+0.3814 0.5327 l
+0.3826 0.5332 l
+0.3835 0.5369 l
+0.3845 0.5328 l
+0.3854 0.5322 l
+0.3864 0.5326 l
+0.3874 0.5324 l
+0.3885 0.5325 l
+0.3895 0.5322 l
+0.3905 0.5325 l
+0.3914 0.5322 l
+0.3924 0.5335 l
+0.3934 0.5330 l
+0.3944 0.5354 l
+0.3953 0.5341 l
+0.3963 0.5383 l
+0.3976 0.5323 l
+0.3986 0.5321 l
+0.3997 0.5333 l
+0.4007 0.6141 l
+0.4016 0.5530 l
+0.4026 0.5323 l
+0.4036 0.5326 l
+0.4047 0.5323 l
+0.4056 0.5332 l
+0.4066 0.5355 l
+0.4076 0.5348 l
+0.4086 0.5322 l
+0.4098 0.5334 l
+0.4108 0.5324 l
+0.4118 0.5324 l
+0.4130 0.5322 l
+0.4140 0.5332 l
+0.4150 0.5332 l
+0.4160 0.5324 l
+0.4170 0.5324 l
+0.4180 0.5342 l
+0.4189 0.5326 l
+0.4199 0.5321 l
+0.4218 0.5332 l
+0.4230 0.6223 l
+0.4240 0.5670 l
+0.4249 0.5782 l
+0.4260 0.5861 l
+0.4269 0.5899 l
+0.4279 0.5754 l
+0.4288 0.5697 l
+0.4297 0.5686 l
+0.4307 0.5862 l
+0.4317 0.5827 l
+0.4327 0.5732 l
+0.4336 0.5856 l
+0.4346 0.5801 l
+0.4355 0.5750 l
+0.4365 0.5638 l
+0.4374 0.5521 l
+0.4384 0.5496 l
+0.4393 0.5503 l
+0.4403 0.5504 l
+0.4412 0.5462 l
+0.4422 0.5514 l
+0.4431 0.5801 l
+0.4441 0.7010 l
+0.4450 0.6765 l
+0.4460 0.6616 l
+0.4469 0.5743 l
+0.4479 0.5518 l
+0.4488 0.5638 l
+0.4498 0.5598 l
+0.4507 0.5955 l
+0.4516 0.5873 l
+0.4526 0.5569 l
+0.4535 0.5579 l
+0.4545 0.6343 l
+0.4555 0.6676 l
+0.4564 0.6833 l
+0.4574 0.6721 l
+0.4583 0.6863 l
+0.4593 0.6946 l
+0.4602 0.7148 l
+0.4612 0.7269 l
+0.4621 0.6609 l
+0.4630 0.6254 l
+0.4641 0.5589 l
+0.4651 0.5749 l
+0.4660 0.5327 l
+0.4671 0.5382 l
+0.4686 0.5939 l
+0.4695 0.5808 l
+0.4705 0.5898 l
+0.4714 0.5721 l
+0.4725 0.5934 l
+0.4734 0.5982 l
+0.4743 0.6144 l
+0.4753 0.5579 l
+0.4762 0.5528 l
+0.4772 0.5394 l
+0.4781 0.5461 l
+0.4791 0.5660 l
+0.4800 0.5478 l
+0.4809 0.5342 l
+0.4819 0.5327 l
+0.4829 0.5363 l
+0.4839 0.5350 l
+0.4848 0.5322 l
+0.4858 0.5325 l
+0.4867 0.5326 l
+0.4878 0.5324 l
+0.4889 0.5324 l
+0.4899 0.5325 l
+0.4909 0.5340 l
+0.4921 0.5341 l
+0.4932 0.5349 l
+0.4943 0.5330 l
+0.4953 0.5324 l
+0.4964 0.5323 l
+0.4975 0.5352 l
+0.4985 0.5327 l
+0.4996 0.5322 l
+0.5006 0.5882 l
+0.5016 0.5737 l
+0.5027 0.5323 l
+0.5038 0.5322 l
+0.5048 0.5349 l
+0.5057 0.5325 l
+0.5067 0.5328 l
+0.5076 0.5326 l
+0.5086 0.5341 l
+0.5095 0.5323 l
+0.5106 0.5337 l
+0.5116 0.5326 l
+0.5126 0.5323 l
+0.5136 0.5326 l
+0.5148 0.5323 l
+0.5158 0.5323 l
+0.5168 0.5324 l
+0.5177 0.5331 l
+0.5189 0.5325 l
+0.5199 0.5345 l
+0.5210 0.5321 l
+0.5226 0.5331 l
+0.5238 0.6037 l
+0.5249 0.5964 l
+0.5258 0.5647 l
+0.5267 0.5890 l
+0.5277 0.5885 l
+0.5286 0.5726 l
+0.5296 0.5726 l
+0.5305 0.5647 l
+0.5314 0.5853 l
+0.5325 0.5776 l
+0.5335 0.5784 l
+0.5344 0.5750 l
+0.5354 0.5715 l
+0.5363 0.5694 l
+0.5373 0.5668 l
+0.5382 0.5500 l
+0.5392 0.5444 l
+0.5401 0.5477 l
+0.5411 0.5465 l
+0.5420 0.5505 l
+0.5430 0.5459 l
+0.5439 0.5483 l
+0.5448 0.5860 l
+0.5458 0.6003 l
+0.5467 0.5932 l
+0.5477 0.5926 l
+0.5486 0.6422 l
+0.5496 0.6395 l
+0.5505 0.6167 l
+0.5515 0.6160 l
+0.5524 0.6340 l
+0.5533 0.5967 l
+0.5543 0.5719 l
+0.5552 0.5523 l
+0.5562 0.5533 l
+0.5572 0.6363 l
+0.5581 0.6881 l
+0.5590 0.6723 l
+0.5600 0.6654 l
+0.5609 0.7319 l
+0.5619 0.6608 l
+0.5628 0.6778 l
+0.5638 0.6751 l
+0.5647 0.6114 l
+0.5657 0.5526 l
+0.5666 0.5715 l
+0.5676 0.5329 l
+0.5686 0.5382 l
+0.5701 0.5852 l
+0.5711 0.5783 l
+0.5720 0.5915 l
+0.5730 0.5764 l
+0.5740 0.5870 l
+0.5749 0.5995 l
+0.5759 0.5982 l
+0.5768 0.5596 l
+0.5777 0.5462 l
+0.5787 0.5403 l
+0.5796 0.5411 l
+0.5806 0.5710 l
+0.5815 0.5503 l
+0.5825 0.5339 l
+0.5835 0.5330 l
+0.5846 0.5358 l
+0.5855 0.5334 l
+0.5866 0.5324 l
+0.5877 0.5323 l
+0.5887 0.5326 l
+0.5897 0.5326 l
+0.5908 0.5324 l
+0.5921 0.5322 l
+0.5930 0.5349 l
+0.5940 0.5324 l
+0.5950 0.5366 l
+0.5961 0.5333 l
+0.5971 0.5367 l
+0.5981 0.5323 l
+0.5991 0.5323 l
+0.6002 0.5323 l
+0.6012 0.5328 l
+0.6024 0.6027 l
+0.6034 0.5611 l
+0.6046 0.5334 l
+0.6056 0.5323 l
+0.6067 0.5334 l
+0.6076 0.5348 l
+0.6086 0.5342 l
+0.6096 0.5325 l
+0.6111 0.5326 l
+0.6123 0.5334 l
+0.6133 0.5323 l
+0.6143 0.5323 l
+0.6153 0.5323 l
+0.6163 0.5321 l
+0.6174 0.5324 l
+0.6186 0.5330 l
+0.6195 0.5344 l
+0.6204 0.5327 l
+0.6214 0.5324 l
+0.6234 0.5332 l
+0.6246 0.6296 l
+0.6257 0.5753 l
+0.6266 0.5698 l
+0.6276 0.5823 l
+0.6285 0.5820 l
+0.6295 0.5801 l
+0.6304 0.5682 l
+0.6314 0.5693 l
+0.6323 0.5995 l
+0.6333 0.5811 l
+0.6342 0.5701 l
+0.6352 0.5834 l
+0.6362 0.5711 l
+0.6371 0.5767 l
+0.6381 0.5609 l
+0.6390 0.5525 l
+0.6399 0.5474 l
+0.6409 0.5513 l
+0.6418 0.5479 l
+0.6428 0.5490 l
+0.6437 0.5451 l
+0.6447 0.5539 l
+0.6456 0.5506 l
+0.6466 0.6073 l
+0.6475 0.5773 l
+0.6485 0.5994 l
+0.6494 0.5856 l
+0.6504 0.6389 l
+0.6513 0.6435 l
+0.6523 0.6162 l
+0.6532 0.6159 l
+0.6542 0.6345 l
+0.6551 0.5905 l
+0.6561 0.5566 l
+0.6571 0.5526 l
+0.6580 0.6082 l
+0.6590 0.6645 l
+0.6599 0.6692 l
+0.6609 0.6717 l
+0.6618 0.7087 l
+0.6627 0.6723 l
+0.6637 0.6602 l
+0.6646 0.6397 l
+0.6656 0.5758 l
+0.6665 0.5506 l
+0.6674 0.5698 l
+0.6685 0.5328 l
+0.6709 0.5854 l
+0.6718 0.5809 l
+0.6727 0.5919 l
+0.6737 0.5835 l
+0.6748 0.5903 l
+0.6757 0.5972 l
+0.6767 0.6007 l
+0.6776 0.5540 l
+0.6786 0.5454 l
+0.6796 0.5366 l
+0.6810 0.5812 l
+0.6819 0.5469 l
+0.6829 0.5346 l
+0.6839 0.5323 l
+0.6850 0.5385 l
+0.6859 0.5325 l
+0.6869 0.5324 l
+0.6880 0.5329 l
+0.6889 0.5326 l
+0.6901 0.5325 l
+0.6911 0.5323 l
+0.6920 0.5329 l
+0.6930 0.5324 l
+0.6940 0.5335 l
+0.6949 0.5326 l
+0.6959 0.5333 l
+0.6969 0.5362 l
+0.6979 0.5366 l
+0.6989 0.5321 l
+0.6999 0.5323 l
+0.7010 0.5327 l
+0.7021 0.5324 l
+0.7032 0.6069 l
+0.7042 0.5598 l
+0.7056 0.5324 l
+0.7066 0.5349 l
+0.7076 0.5330 l
+0.7085 0.5333 l
+0.7095 0.5331 l
+0.7104 0.5331 l
+0.7114 0.5323 l
+0.7125 0.5323 l
+0.7136 0.5336 l
+0.7147 0.5325 l
+0.7157 0.5322 l
+0.7168 0.5321 l
+0.7180 0.5324 l
+0.7191 0.5328 l
+0.7200 0.5331 l
+0.7209 0.5334 l
+0.7220 0.5323 l
+0.7241 0.5331 l
+0.7253 0.6090 l
+0.7264 0.5961 l
+0.7273 0.5640 l
+0.7283 0.5998 l
+0.7292 0.5800 l
+0.7301 0.5751 l
+0.7311 0.5730 l
+0.7321 0.5681 l
+0.7330 0.5814 l
+0.7339 0.5819 l
+0.7350 0.5799 l
+0.7359 0.5799 l
+0.7369 0.5730 l
+0.7378 0.5655 l
+0.7388 0.5588 l
+0.7397 0.5487 l
+0.7407 0.5523 l
+0.7418 0.5458 l
+0.7428 0.5520 l
+0.7437 0.5428 l
+0.7447 0.5525 l
+0.7456 0.5828 l
+0.7466 0.7379 l
+0.7475 0.6763 l
+0.7485 0.6548 l
+0.7494 0.5436 l
+0.7504 0.5472 l
+0.7513 0.5705 l
+0.7522 0.5731 l
+0.7532 0.5992 l
+0.7541 0.5789 l
+0.7551 0.5510 l
+0.7560 0.5520 l
+0.7570 0.6209 l
+0.7579 0.6777 l
+0.7589 0.6655 l
+0.7598 0.6804 l
+0.7608 0.6777 l
+0.7617 0.6955 l
+0.7626 0.6892 l
+0.7636 0.7899 l
+0.7645 0.6083 l
+0.7655 0.5784 l
+0.7665 0.5747 l
+0.7676 0.5541 l
+0.7686 0.5693 l
+0.7697 0.5328 l
+0.7720 0.5944 l
+0.7729 0.5854 l
+0.7738 0.5888 l
+0.7748 0.5830 l
+0.7760 0.5841 l
+0.7769 0.6160 l
+0.7778 0.6082 l
+0.7788 0.5476 l
+0.7797 0.5470 l
+0.7807 0.5403 l
+0.7822 0.5741 l
+0.7831 0.5492 l
+0.7841 0.5348 l
+0.7850 0.5325 l
+0.7860 0.5362 l
+0.7870 0.5345 l
+0.7882 0.5325 l
+0.7892 0.5325 l
+0.7902 0.5324 l
+0.7912 0.5328 l
+0.7922 0.5324 l
+0.7932 0.5329 l
+0.7943 0.5325 l
+0.7953 0.5338 l
+0.7964 0.5340 l
+0.7973 0.5353 l
+0.7983 0.5331 l
+0.7994 0.5328 l
+0.8004 0.5351 l
+0.8016 0.5322 l
+0.8026 0.5328 l
+0.8035 0.5330 l
+0.8045 0.6166 l
+0.8054 0.5528 l
+0.8065 0.5323 l
+0.8076 0.5322 l
+0.8086 0.5331 l
+0.8097 0.5351 l
+0.8107 0.5343 l
+0.8118 0.5322 l
+0.8128 0.5322 l
+0.8137 0.5334 l
+0.8147 0.5332 l
+0.8158 0.5325 l
+0.8168 0.5325 l
+0.8181 0.5324 l
+0.8191 0.5342 l
+0.8201 0.5323 l
+0.8211 0.5325 l
+0.8221 0.5322 l
+0.8231 0.5333 l
+0.8240 0.5339 l
+0.8257 0.5330 l
+0.8269 0.6251 l
+0.8280 0.5828 l
+0.8289 0.5662 l
+0.8299 0.5825 l
+0.8309 0.5879 l
+0.8318 0.5837 l
+0.8327 0.5674 l
+0.8337 0.5679 l
+0.8346 0.5871 l
+0.8357 0.5895 l
+0.8367 0.5654 l
+0.8376 0.5743 l
+0.8386 0.5679 l
+0.8395 0.5709 l
+0.8405 0.5597 l
+0.8415 0.5603 l
+0.8424 0.5479 l
+0.8434 0.5433 l
+0.8443 0.5458 l
+0.8453 0.5481 l
+0.8462 0.5506 l
+0.8472 0.5440 l
+0.8481 0.5519 l
+0.8491 0.5802 l
+0.8500 0.5992 l
+0.8510 0.5933 l
+0.8519 0.6376 l
+0.8528 0.6617 l
+0.8538 0.6212 l
+0.8548 0.5878 l
+0.8557 0.5779 l
+0.8567 0.5981 l
+0.8576 0.5882 l
+0.8586 0.5600 l
+0.8595 0.5549 l
+0.8605 0.6190 l
+0.8614 0.6856 l
+0.8624 0.6639 l
+0.8633 0.6623 l
+0.8642 0.7367 l
+0.8652 0.6969 l
+0.8661 0.6983 l
+0.8671 0.6822 l
+0.8680 0.5987 l
+0.8689 0.5657 l
+0.8699 0.5590 l
+0.8709 0.5328 l
+0.8732 0.5884 l
+0.8741 0.5852 l
+0.8751 0.5917 l
+0.8760 0.5777 l
+0.8770 0.5897 l
+0.8779 0.6134 l
+0.8788 0.6012 l
+0.8798 0.5510 l
+0.8807 0.5417 l
+0.8816 0.5374 l
+0.8829 0.5807 l
+0.8839 0.5473 l
+0.8848 0.5356 l
+0.8859 0.5327 l
+0.8868 0.5352 l
+0.8878 0.5344 l
+0.8888 0.5323 l
+0.8897 0.5328 l
+0.8907 0.5326 l
+0.8919 0.5324 l
+0.8930 0.5330 l
+0.8941 0.5324 l
+0.8954 0.5326 l
+0.8965 0.5346 l
+0.8976 0.5345 l
+0.8986 0.5342 l
+0.8996 0.5330 l
+0.9006 0.5348 l
+0.9016 0.5324 l
+0.9025 0.5329 l
+0.9036 0.5324 l
+0.9046 0.5677 l
+0.9056 0.6026 l
+0.9067 0.5328 l
+0.9080 0.5324 l
+0.9090 0.5323 l
+0.9102 0.5357 l
+0.9113 0.5341 l
+0.9123 0.5327 l
+0.9134 0.5321 l
+0.9144 0.5329 l
+0.9154 0.5325 l
+0.9163 0.5324 l
+0.9173 0.5323 l
+0.9186 0.5324 l
+0.9200 0.5332 l
+0.9210 0.5324 l
+0.9220 0.5324 l
+0.9229 0.5341 l
+0.9239 0.5331 l
+0.9250 0.5319 l
+0.9263 0.5324 l
+0.9274 0.6164 l
+0.9284 0.5835 l
+0.9293 0.5614 l
+0.9302 0.5801 l
+0.9312 0.5931 l
+0.9321 0.5780 l
+0.9331 0.5739 l
+0.9340 0.5656 l
+0.9350 0.5850 l
+0.9359 0.5818 l
+0.9368 0.5652 l
+0.9378 0.5688 l
+0.9388 0.5708 l
+0.9397 0.5747 l
+0.9407 0.5701 l
+0.9417 0.5556 l
+0.9426 0.5486 l
+0.9436 0.5516 l
+0.9445 0.5421 l
+0.9455 0.5516 l
+0.9464 0.5473 l
+0.9475 0.5512 l
+0.9485 0.5691 l
+0.9494 0.5727 l
+0.9504 0.6002 l
+0.9514 0.6135 l
+0.9523 0.5775 l
+0.9533 0.6313 l
+0.9542 0.6263 l
+0.9552 0.6232 l
+0.9561 0.6292 l
+0.9570 0.6639 l
+0.9580 0.5918 l
+0.9589 0.5620 l
+0.9599 0.5540 l
+0.9608 0.5656 l
+0.9618 0.6906 l
+0.9627 0.7006 l
+0.9636 0.6790 l
+0.9646 0.7133 l
+0.9655 0.6578 l
+0.9665 0.6487 l
+0.9674 0.6598 l
+0.9684 0.6683 l
+0.9694 0.5670 l
+0.9704 0.5760 l
+0.9713 0.5367 l
+0.9725 0.5336 l
+0.9743 0.5853 l
+0.9752 0.5751 l
+0.9762 0.5870 l
+0.9771 0.5842 l
+0.9781 0.5838 l
+0.9790 0.5724 l
+0.9800 0.6073 l
+0.9809 0.5864 l
+0.9820 0.5557 l
+0.9830 0.5381 l
+0.9839 0.5348 l
+0.9849 0.5800 l
+0.9858 0.5495 l
+0.9867 0.5352 l
+0.9877 0.5322 l
+0.9887 0.5353 l
+0.9897 0.5343 l
+0.9907 0.5325 l
+0.9916 0.5323 l
+0.9926 0.5325 l
+0.9936 0.5327 l
+0.9946 0.5324 l
+0.9957 0.5323 l
+0.9967 0.5325 l
+0.9976 0.5321 l
+0.9986 0.5337 l
+0.9995 0.5335 l
+1.0005 0.5354 l
+1.0016 0.5335 l
+1.0026 0.5365 l
+1.0038 0.5321 l
+1.0049 0.5329 l
+1.0060 0.5327 l
+1.0070 0.6021 l
+1.0079 0.5716 l
+1.0089 0.5325 l
+1.0099 0.5323 l
+1.0109 0.5332 l
+1.0119 0.5347 l
+1.0129 0.5331 l
+1.0139 0.5331 l
+1.0150 0.5338 l
+1.0160 0.5323 l
+1.0170 0.5325 l
+1.0181 0.5323 l
+1.0192 0.5328 l
+1.0202 0.5327 l
+1.0212 0.5325 l
+1.0222 0.5325 l
+1.0232 0.5323 l
+1.0245 0.5327 l
+1.0255 0.5325 l
+1.0265 0.5336 l
+1.0284 0.5331 l
+1.0296 0.6292 l
+1.0306 0.5897 l
+1.0316 0.5627 l
+1.0325 0.5921 l
+1.0334 0.5838 l
+1.0344 0.5762 l
+1.0353 0.5768 l
+1.0363 0.5651 l
+1.0372 0.5971 l
+1.0382 0.5735 l
+1.0392 0.5670 l
+1.0402 0.5692 l
+1.0411 0.5791 l
+1.0420 0.5779 l
+1.0430 0.5661 l
+1.0439 0.5485 l
+1.0449 0.5504 l
+1.0458 0.5480 l
+1.0467 0.5532 l
+1.0477 0.5447 l
+1.0487 0.5562 l
+1.0496 0.6647 l
+1.0505 0.6930 l
+1.0515 0.6757 l
+1.0524 0.5999 l
+1.0534 0.5461 l
+1.0544 0.5652 l
+1.0553 0.5689 l
+1.0563 0.5949 l
+1.0572 0.5961 l
+1.0582 0.5590 l
+1.0591 0.5548 l
+1.0600 0.6106 l
+1.0610 0.6874 l
+1.0619 0.6918 l
+1.0629 0.6658 l
+1.0638 0.6892 l
+1.0647 0.6797 l
+1.0657 0.6864 l
+1.0666 0.7203 l
+1.0676 0.7486 l
+1.0686 0.6802 l
+1.0700 0.5568 l
+1.0710 0.5855 l
+1.0719 0.5353 l
+1.0730 0.5403 l
+1.0745 0.5934 l
+1.0755 0.5857 l
+1.0764 0.5853 l
+1.0774 0.5738 l
+1.0783 0.5924 l
+1.0792 0.5910 l
+1.0802 0.5942 l
+1.0811 0.5745 l
+1.0821 0.5529 l
+1.0830 0.5388 l
+1.0841 0.5407 l
+1.0850 0.5717 l
+1.0860 0.5490 l
+1.0869 0.5345 l
+1.0880 0.5326 l
+1.0889 0.5360 l
+1.0898 0.5339 l
+1.0908 0.5323 l
+1.0918 0.5329 l
+1.0928 0.5324 l
+1.0939 0.5325 l
+1.0949 0.5322 l
+1.0958 0.5327 l
+1.0968 0.5323 l
+1.0977 0.5343 l
+1.0988 0.5324 l
+1.0998 0.5367 l
+1.1010 0.5330 l
+1.1021 0.5331 l
+1.1032 0.5351 l
+1.1044 0.5322 l
+1.1055 0.5329 l
+1.1064 0.5751 l
+1.1074 0.5955 l
+1.1083 0.5324 l
+1.1094 0.5324 l
+1.1105 0.5326 l
+1.1116 0.5350 l
+1.1126 0.5335 l
+1.1135 0.5338 l
+1.1146 0.5324 l
+1.1159 0.5322 l
+1.1168 0.5336 l
+1.1178 0.5332 l
+1.1189 0.5325 l
+1.1199 0.5325 l
+1.1209 0.5324 l
+1.1219 0.5324 l
+1.1228 0.5326 l
+1.1238 0.5327 l
+1.1247 0.5343 l
+1.1259 0.5323 l
+1.1272 0.5319 l
+1.1284 0.5334 l
+1.1296 0.6069 l
+1.1307 0.6039 l
+1.1317 0.5663 l
+1.1326 0.5847 l
+1.1335 0.5837 l
+1.1345 0.5775 l
+1.1354 0.5756 l
+1.1364 0.5720 l
+1.1373 0.5801 l
+1.1383 0.5573 l
+s
+n
+0.1500 0.5318 m
+1.1383 0.5318 l
+s
+/Times-Roman findfont
+dup length dict begin
+ {1 index /FID ne {def} {pop pop} ifelse} forall
+ /Encoding DefEncoding def
+ currentdict
+end
+/Font32 exch definefont pop
+/Font32 FFSF
+[/DeviceRGB] SCS
+Color6 SC
+0.1294 0.5244 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(0) show
+GR
+/Font32 FFSF
+1.1533 0.5244 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(0) show
+GR
+/Font32 FFSF
+0.0957 0.5880 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(1000) show
+GR
+/Font32 FFSF
+1.1533 0.5880 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(1000) show
+GR
+/Font32 FFSF
+0.0957 0.6516 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(2000) show
+GR
+/Font32 FFSF
+1.1533 0.6516 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(2000) show
+GR
+/Font32 FFSF
+0.0957 0.7153 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(3000) show
+GR
+/Font32 FFSF
+1.1533 0.7153 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(3000) show
+GR
+/Font32 FFSF
+0.0957 0.7789 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(4000) show
+GR
+/Font32 FFSF
+1.1533 0.7789 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(4000) show
+GR
+/Font32 FFSF
+0.0957 0.8425 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(5000) show
+GR
+/Font32 FFSF
+1.1533 0.8425 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(5000) show
+GR
+n
+0.1500 0.5318 m
+0.1500 0.8500 l
+1.1433 0.8500 l
+1.1433 0.5318 l
+0.1500 0.5318 l
+c
+s
+n
+1.0000 0.8450 m
+1.0000 0.8058 l
+1.1388 0.8058 l
+1.1388 0.8450 l
+c
+[/DeviceRGB] SCS
+Color0 SC
+fill
+[/DeviceRGB] SCS
+Color6 SC
+n
+1.0000 0.8450 m
+1.0000 0.8058 l
+1.1388 0.8058 l
+1.1388 0.8450 l
+1.0000 0.8450 l
+c
+s
+/Font32 FFSF
+1.0708 0.8197 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(Queue) show
+GR
+[/DeviceRGB] SCS
+Color4 SC
+n
+1.0108 0.8254 m
+1.0508 0.8254 l
+s
+/Font32 FFSF
+[/DeviceRGB] SCS
+Color1 SC
+0.3579 0.9175 m
+GS
+[0.0420 0.0000 0.0000 0.0420 0 0] CC
+(Kernel Make Runs: BTRFS \(0.14\)) show
+GR
+/Times-Italic findfont
+dup length dict begin
+ {1 index /FID ne {def} {pop pop} ifelse} forall
+ /Encoding DefEncoding def
+ currentdict
+end
+/Font31 exch definefont pop
+/Font31 FFSF
+[/DeviceRGB] SCS
+Color6 SC
+0.2518 0.8759 m
+GS
+[0.0280 0.0000 0.0000 0.0280 0 0] CC
+(10 passes \(untar, make config+all+clean\), Linux 2.6.25.4, SATA driv\
+e) show
+GR
+[0.0015 0.0045 ] 0 SD
+0.0015 SLW
+n
+0.1641 0.1500 m
+0.1641 0.4682 l
+s
+n
+0.1781 0.1500 m
+0.1781 0.4682 l
+s
+n
+0.1922 0.1500 m
+0.1922 0.4682 l
+s
+n
+0.2203 0.1500 m
+0.2203 0.4682 l
+s
+n
+0.2343 0.1500 m
+0.2343 0.4682 l
+s
+n
+0.2484 0.1500 m
+0.2484 0.4682 l
+s
+n
+0.2765 0.1500 m
+0.2765 0.4682 l
+s
+n
+0.2906 0.1500 m
+0.2906 0.4682 l
+s
+n
+0.3046 0.1500 m
+0.3046 0.4682 l
+s
+n
+0.3327 0.1500 m
+0.3327 0.4682 l
+s
+n
+0.3468 0.1500 m
+0.3468 0.4682 l
+s
+n
+0.3609 0.1500 m
+0.3609 0.4682 l
+s
+n
+0.3890 0.1500 m
+0.3890 0.4682 l
+s
+n
+0.4030 0.1500 m
+0.4030 0.4682 l
+s
+n
+0.4171 0.1500 m
+0.4171 0.4682 l
+s
+n
+0.4452 0.1500 m
+0.4452 0.4682 l
+s
+n
+0.4593 0.1500 m
+0.4593 0.4682 l
+s
+n
+0.4733 0.1500 m
+0.4733 0.4682 l
+s
+n
+0.5014 0.1500 m
+0.5014 0.4682 l
+s
+n
+0.5155 0.1500 m
+0.5155 0.4682 l
+s
+n
+0.5295 0.1500 m
+0.5295 0.4682 l
+s
+n
+0.5576 0.1500 m
+0.5576 0.4682 l
+s
+n
+0.5717 0.1500 m
+0.5717 0.4682 l
+s
+n
+0.5858 0.1500 m
+0.5858 0.4682 l
+s
+n
+0.6139 0.1500 m
+0.6139 0.4682 l
+s
+n
+0.6279 0.1500 m
+0.6279 0.4682 l
+s
+n
+0.6420 0.1500 m
+0.6420 0.4682 l
+s
+n
+0.6701 0.1500 m
+0.6701 0.4682 l
+s
+n
+0.6842 0.1500 m
+0.6842 0.4682 l
+s
+n
+0.6982 0.1500 m
+0.6982 0.4682 l
+s
+n
+0.7263 0.1500 m
+0.7263 0.4682 l
+s
+n
+0.7404 0.1500 m
+0.7404 0.4682 l
+s
+n
+0.7544 0.1500 m
+0.7544 0.4682 l
+s
+n
+0.7826 0.1500 m
+0.7826 0.4682 l
+s
+n
+0.7966 0.1500 m
+0.7966 0.4682 l
+s
+n
+0.8107 0.1500 m
+0.8107 0.4682 l
+s
+n
+0.8388 0.1500 m
+0.8388 0.4682 l
+s
+n
+0.8528 0.1500 m
+0.8528 0.4682 l
+s
+n
+0.8669 0.1500 m
+0.8669 0.4682 l
+s
+n
+0.8950 0.1500 m
+0.8950 0.4682 l
+s
+n
+0.9091 0.1500 m
+0.9091 0.4682 l
+s
+n
+0.9231 0.1500 m
+0.9231 0.4682 l
+s
+n
+0.9512 0.1500 m
+0.9512 0.4682 l
+s
+n
+0.9653 0.1500 m
+0.9653 0.4682 l
+s
+n
+0.9794 0.1500 m
+0.9794 0.4682 l
+s
+n
+1.0075 0.1500 m
+1.0075 0.4682 l
+s
+n
+1.0215 0.1500 m
+1.0215 0.4682 l
+s
+n
+1.0356 0.1500 m
+1.0356 0.4682 l
+s
+n
+1.0637 0.1500 m
+1.0637 0.4682 l
+s
+n
+1.0778 0.1500 m
+1.0778 0.4682 l
+s
+n
+1.0918 0.1500 m
+1.0918 0.4682 l
+s
+n
+1.1199 0.1500 m
+1.1199 0.4682 l
+s
+n
+1.1340 0.1500 m
+1.1340 0.4682 l
+s
+[0.0075 0.0045 ] 0 SD
+0.0015 SLW
+n
+0.1500 0.1500 m
+0.1500 0.4682 l
+s
+n
+0.2062 0.1500 m
+0.2062 0.4682 l
+s
+n
+0.2625 0.1500 m
+0.2625 0.4682 l
+s
+n
+0.3187 0.1500 m
+0.3187 0.4682 l
+s
+n
+0.3749 0.1500 m
+0.3749 0.4682 l
+s
+n
+0.4311 0.1500 m
+0.4311 0.4682 l
+s
+n
+0.4874 0.1500 m
+0.4874 0.4682 l
+s
+n
+0.5436 0.1500 m
+0.5436 0.4682 l
+s
+n
+0.5998 0.1500 m
+0.5998 0.4682 l
+s
+n
+0.6560 0.1500 m
+0.6560 0.4682 l
+s
+n
+0.7123 0.1500 m
+0.7123 0.4682 l
+s
+n
+0.7685 0.1500 m
+0.7685 0.4682 l
+s
+n
+0.8247 0.1500 m
+0.8247 0.4682 l
+s
+n
+0.8810 0.1500 m
+0.8810 0.4682 l
+s
+n
+0.9372 0.1500 m
+0.9372 0.4682 l
+s
+n
+0.9934 0.1500 m
+0.9934 0.4682 l
+s
+n
+1.0496 0.1500 m
+1.0496 0.4682 l
+s
+n
+1.1059 0.1500 m
+1.1059 0.4682 l
+s
+[0.0015 0.0045 ] 0 SD
+0.0015 SLW
+n
+0.1500 0.1818 m
+1.1433 0.1818 l
+s
+n
+0.1500 0.2455 m
+1.1433 0.2455 l
+s
+n
+0.1500 0.3091 m
+1.1433 0.3091 l
+s
+n
+0.1500 0.3727 m
+1.1433 0.3727 l
+s
+n
+0.1500 0.4364 m
+1.1433 0.4364 l
+s
+[0.0075 0.0045 ] 0 SD
+0.0015 SLW
+n
+0.1500 0.1500 m
+1.1433 0.1500 l
+s
+n
+0.1500 0.2136 m
+1.1433 0.2136 l
+s
+n
+0.1500 0.2773 m
+1.1433 0.2773 l
+s
+n
+0.1500 0.3409 m
+1.1433 0.3409 l
+s
+n
+0.1500 0.4045 m
+1.1433 0.4045 l
+s
+n
+0.1500 0.4682 m
+1.1433 0.4682 l
+s
+n
+0.1500 0.1574 m
+0.1580 0.1692 l
+0.1589 0.1639 l
+0.1599 0.1643 l
+0.1608 0.1667 l
+0.1652 0.2345 l
+0.1661 0.2806 l
+0.1670 0.1932 l
+0.1680 0.1643 l
+0.1689 0.1781 l
+0.1699 0.1647 l
+0.1708 0.1572 l
+0.1718 0.1513 l
+0.1729 0.1585 l
+0.1744 0.1850 l
+0.1753 0.1967 l
+0.1763 0.1701 l
+0.1772 0.1643 l
+0.1783 0.1906 l
+0.1792 0.2010 l
+0.1801 0.1796 l
+0.1811 0.1521 l
+0.1822 0.1635 l
+0.1831 0.1574 l
+0.1841 0.1512 l
+0.1850 0.1507 l
+0.1860 0.1514 l
+0.1871 0.1508 l
+0.1881 0.1507 l
+0.1891 0.1505 l
+0.1902 0.1507 l
+0.1912 0.1510 l
+0.1922 0.1505 l
+0.1932 0.1507 l
+0.1943 0.1510 l
+0.1952 0.1509 l
+0.1962 0.1506 l
+0.1972 0.1507 l
+0.1983 0.1505 l
+0.1995 0.1507 l
+0.2006 0.1509 l
+0.2016 0.1505 l
+0.2026 0.1504 l
+0.2036 0.1507 l
+0.2046 0.1507 l
+0.2056 0.1936 l
+0.2066 0.1665 l
+0.2075 0.1507 l
+0.2086 0.1505 l
+0.2096 0.1506 l
+0.2107 0.1512 l
+0.2116 0.1507 l
+0.2129 0.1507 l
+0.2138 0.1506 l
+0.2149 0.1507 l
+0.2159 0.1508 l
+0.2170 0.1507 l
+0.2183 0.1505 l
+0.2193 0.1505 l
+0.2202 0.1513 l
+0.2212 0.1515 l
+0.2221 0.1506 l
+0.2236 0.1501 l
+0.2248 0.1512 l
+0.2260 0.1953 l
+0.2269 0.1684 l
+0.2279 0.1622 l
+0.2288 0.1748 l
+0.2298 0.1691 l
+0.2308 0.1828 l
+0.2317 0.2305 l
+0.2326 0.1769 l
+0.2336 0.1739 l
+0.2345 0.1721 l
+0.2355 0.1794 l
+0.2364 0.1860 l
+0.2373 0.1825 l
+0.2383 0.1755 l
+0.2392 0.1670 l
+0.2402 0.1627 l
+0.2412 0.1645 l
+0.2421 0.1612 l
+0.2430 0.1597 l
+0.2440 0.1593 l
+0.2450 0.1640 l
+0.2460 0.1610 l
+0.2469 0.1644 l
+0.2478 0.1665 l
+0.2488 0.1682 l
+0.2497 0.1683 l
+0.2507 0.1787 l
+0.2516 0.1796 l
+0.2526 0.1755 l
+0.2535 0.1879 l
+0.2544 0.1712 l
+0.2554 0.1708 l
+0.2563 0.1645 l
+0.2573 0.1651 l
+0.2583 0.2449 l
+0.2593 0.3151 l
+0.2602 0.3236 l
+0.2611 0.3166 l
+0.2621 0.3251 l
+0.2630 0.3184 l
+0.2639 0.2222 l
+0.2649 0.1790 l
+0.2662 0.1639 l
+0.2671 0.1585 l
+0.2681 0.1508 l
+0.2704 0.1862 l
+0.2713 0.2073 l
+0.2722 0.1992 l
+0.2732 0.1738 l
+0.2741 0.1812 l
+0.2751 0.2412 l
+0.2760 0.2061 l
+0.2770 0.1611 l
+0.2779 0.1565 l
+0.2789 0.1618 l
+0.2798 0.1810 l
+0.2808 0.1587 l
+0.2818 0.1507 l
+0.2827 0.1507 l
+0.2837 0.1534 l
+0.2848 0.1510 l
+0.2857 0.1506 l
+0.2867 0.1506 l
+0.2877 0.1508 l
+0.2888 0.1509 l
+0.2897 0.1504 l
+0.2907 0.1505 l
+0.2916 0.1506 l
+0.2926 0.1507 l
+0.2935 0.1514 l
+0.2945 0.1517 l
+0.2955 0.1517 l
+0.2965 0.1515 l
+0.2976 0.1508 l
+0.2987 0.1519 l
+0.3001 0.1506 l
+0.3011 0.1509 l
+0.3020 0.1504 l
+0.3031 0.1505 l
+0.3041 0.1507 l
+0.3054 0.1504 l
+0.3064 0.1585 l
+0.3073 0.1825 l
+0.3083 0.1566 l
+0.3093 0.1511 l
+0.3103 0.1515 l
+0.3114 0.1506 l
+0.3124 0.1507 l
+0.3135 0.1506 l
+0.3144 0.1506 l
+0.3156 0.1507 l
+0.3166 0.1506 l
+0.3178 0.1506 l
+0.3188 0.1529 l
+0.3198 0.1512 l
+0.3210 0.1504 l
+0.3228 0.1521 l
+0.3240 0.1923 l
+0.3250 0.1653 l
+0.3259 0.1621 l
+0.3269 0.1803 l
+0.3278 0.1770 l
+0.3288 0.1779 l
+0.3297 0.1699 l
+0.3307 0.1868 l
+0.3316 0.1717 l
+0.3327 0.1708 l
+0.3336 0.1905 l
+0.3346 0.1970 l
+0.3356 0.1921 l
+0.3365 0.1808 l
+0.3375 0.1727 l
+0.3384 0.1646 l
+0.3394 0.1630 l
+0.3403 0.1682 l
+0.3413 0.1603 l
+0.3422 0.1670 l
+0.3432 0.1566 l
+0.3442 0.1638 l
+0.3452 0.1742 l
+0.3462 0.1824 l
+0.3471 0.1768 l
+0.3481 0.1748 l
+0.3491 0.1792 l
+0.3500 0.1771 l
+0.3510 0.1657 l
+0.3519 0.1656 l
+0.3528 0.1642 l
+0.3538 0.1644 l
+0.3547 0.1852 l
+0.3557 0.3125 l
+0.3566 0.3197 l
+0.3575 0.2984 l
+0.3585 0.2708 l
+0.3594 0.3007 l
+0.3603 0.2711 l
+0.3613 0.2368 l
+0.3622 0.2333 l
+0.3632 0.2093 l
+0.3641 0.1735 l
+0.3650 0.1796 l
+0.3661 0.1509 l
+0.3685 0.2043 l
+0.3694 0.1964 l
+0.3703 0.2120 l
+0.3713 0.1798 l
+0.3722 0.1754 l
+0.3732 0.2111 l
+0.3741 0.2314 l
+0.3750 0.1677 l
+0.3760 0.1607 l
+0.3771 0.1557 l
+0.3786 0.1846 l
+0.3795 0.1647 l
+0.3804 0.1571 l
+0.3814 0.1508 l
+0.3826 0.1513 l
+0.3835 0.1538 l
+0.3845 0.1509 l
+0.3854 0.1504 l
+0.3864 0.1508 l
+0.3874 0.1506 l
+0.3885 0.1507 l
+0.3895 0.1504 l
+0.3905 0.1507 l
+0.3914 0.1504 l
+0.3924 0.1515 l
+0.3934 0.1512 l
+0.3944 0.1526 l
+0.3953 0.1519 l
+0.3963 0.1555 l
+0.3976 0.1505 l
+0.3986 0.1503 l
+0.3997 0.1515 l
+0.4007 0.1832 l
+0.4016 0.1672 l
+0.4026 0.1505 l
+0.4036 0.1507 l
+0.4047 0.1505 l
+0.4056 0.1512 l
+0.4066 0.1526 l
+0.4076 0.1530 l
+0.4086 0.1504 l
+0.4098 0.1515 l
+0.4108 0.1506 l
+0.4118 0.1506 l
+0.4130 0.1504 l
+0.4140 0.1514 l
+0.4150 0.1513 l
+0.4160 0.1506 l
+0.4170 0.1506 l
+0.4180 0.1523 l
+0.4189 0.1508 l
+0.4199 0.1503 l
+0.4218 0.1514 l
+0.4230 0.1923 l
+0.4240 0.1642 l
+0.4249 0.1650 l
+0.4259 0.1756 l
+0.4269 0.1815 l
+0.4278 0.1748 l
+0.4288 0.1695 l
+0.4297 0.1822 l
+0.4306 0.1807 l
+0.4316 0.1688 l
+0.4325 0.1833 l
+0.4335 0.1959 l
+0.4344 0.1910 l
+0.4354 0.1886 l
+0.4363 0.1794 l
+0.4372 0.1661 l
+0.4382 0.1665 l
+0.4392 0.1620 l
+0.4401 0.1650 l
+0.4410 0.1592 l
+0.4420 0.1671 l
+0.4429 0.1638 l
+0.4439 0.1697 l
+0.4448 0.1782 l
+0.4458 0.1708 l
+0.4467 0.1717 l
+0.4477 0.1623 l
+0.4486 0.1732 l
+0.4496 0.1713 l
+0.4505 0.1972 l
+0.4515 0.1956 l
+0.4524 0.1727 l
+0.4534 0.1699 l
+0.4543 0.1771 l
+0.4553 0.2824 l
+0.4562 0.3086 l
+0.4571 0.3076 l
+0.4581 0.2876 l
+0.4590 0.3125 l
+0.4600 0.2786 l
+0.4609 0.2516 l
+0.4618 0.2120 l
+0.4628 0.2118 l
+0.4641 0.1734 l
+0.4651 0.1735 l
+0.4660 0.1508 l
+0.4671 0.1564 l
+0.4686 0.2000 l
+0.4695 0.1969 l
+0.4705 0.2021 l
+0.4714 0.1821 l
+0.4724 0.1717 l
+0.4734 0.2061 l
+0.4743 0.2255 l
+0.4753 0.1693 l
+0.4762 0.1612 l
+0.4771 0.1565 l
+0.4781 0.1612 l
+0.4791 0.1773 l
+0.4800 0.1638 l
+0.4809 0.1521 l
+0.4819 0.1509 l
+0.4829 0.1537 l
+0.4839 0.1524 l
+0.4848 0.1504 l
+0.4858 0.1507 l
+0.4867 0.1508 l
+0.4878 0.1506 l
+0.4889 0.1506 l
+0.4899 0.1507 l
+0.4909 0.1517 l
+0.4921 0.1520 l
+0.4932 0.1520 l
+0.4943 0.1511 l
+0.4953 0.1506 l
+0.4964 0.1505 l
+0.4975 0.1521 l
+0.4985 0.1509 l
+0.4996 0.1504 l
+0.5006 0.1706 l
+0.5016 0.1768 l
+0.5027 0.1505 l
+0.5038 0.1505 l
+0.5048 0.1520 l
+0.5057 0.1507 l
+0.5067 0.1507 l
+0.5076 0.1508 l
+0.5086 0.1523 l
+0.5095 0.1504 l
+0.5106 0.1515 l
+0.5116 0.1509 l
+0.5126 0.1505 l
+0.5136 0.1508 l
+0.5148 0.1505 l
+0.5158 0.1505 l
+0.5168 0.1506 l
+0.5177 0.1513 l
+0.5189 0.1507 l
+0.5199 0.1528 l
+0.5210 0.1503 l
+0.5226 0.1513 l
+0.5238 0.1913 l
+0.5249 0.1695 l
+0.5258 0.1646 l
+0.5267 0.1800 l
+0.5277 0.1779 l
+0.5286 0.1725 l
+0.5296 0.1663 l
+0.5305 0.1807 l
+0.5314 0.1759 l
+0.5325 0.1679 l
+0.5334 0.1868 l
+0.5344 0.1894 l
+0.5353 0.1868 l
+0.5363 0.1832 l
+0.5372 0.1764 l
+0.5381 0.1652 l
+0.5391 0.1609 l
+0.5400 0.1629 l
+0.5410 0.1624 l
+0.5420 0.1621 l
+0.5429 0.1584 l
+0.5439 0.1612 l
+0.5448 0.1625 l
+0.5458 0.1674 l
+0.5467 0.1677 l
+0.5477 0.1666 l
+0.5486 0.1751 l
+0.5496 0.1836 l
+0.5505 0.1754 l
+0.5514 0.1752 l
+0.5524 0.1912 l
+0.5533 0.2012 l
+0.5543 0.1783 l
+0.5552 0.1657 l
+0.5562 0.1638 l
+0.5572 0.2070 l
+0.5581 0.3169 l
+0.5590 0.2994 l
+0.5600 0.2873 l
+0.5609 0.2292 l
+0.5618 0.2302 l
+0.5628 0.2834 l
+0.5637 0.2996 l
+0.5647 0.2724 l
+0.5656 0.1817 l
+0.5666 0.1813 l
+0.5675 0.1530 l
+0.5686 0.1564 l
+0.5701 0.1963 l
+0.5711 0.1927 l
+0.5720 0.2055 l
+0.5730 0.1830 l
+0.5740 0.1737 l
+0.5749 0.2144 l
+0.5759 0.2206 l
+0.5768 0.1699 l
+0.5777 0.1605 l
+0.5787 0.1575 l
+0.5796 0.1575 l
+0.5806 0.1875 l
+0.5815 0.1680 l
+0.5825 0.1521 l
+0.5835 0.1511 l
+0.5846 0.1539 l
+0.5855 0.1514 l
+0.5866 0.1506 l
+0.5877 0.1505 l
+0.5887 0.1508 l
+0.5897 0.1507 l
+0.5908 0.1506 l
+0.5921 0.1503 l
+0.5930 0.1530 l
+0.5940 0.1506 l
+0.5950 0.1544 l
+0.5961 0.1514 l
+0.5971 0.1545 l
+0.5981 0.1505 l
+0.5991 0.1505 l
+0.6002 0.1505 l
+0.6012 0.1510 l
+0.6024 0.1803 l
+0.6034 0.1711 l
+0.6046 0.1517 l
+0.6056 0.1505 l
+0.6067 0.1514 l
+0.6076 0.1527 l
+0.6086 0.1524 l
+0.6096 0.1508 l
+0.6106 0.1503 l
+0.6116 0.1508 l
+0.6126 0.1514 l
+0.6135 0.1504 l
+0.6145 0.1506 l
+0.6157 0.1505 l
+0.6168 0.1505 l
+0.6178 0.1506 l
+0.6187 0.1520 l
+0.6198 0.1521 l
+0.6208 0.1512 l
+0.6222 0.1501 l
+0.6234 0.1514 l
+0.6246 0.1949 l
+0.6255 0.1649 l
+0.6265 0.1662 l
+0.6274 0.1713 l
+0.6284 0.1755 l
+0.6293 0.1765 l
+0.6303 0.1722 l
+0.6312 0.1843 l
+0.6321 0.1770 l
+0.6331 0.1701 l
+0.6340 0.1753 l
+0.6350 0.1881 l
+0.6359 0.1881 l
+0.6369 0.1886 l
+0.6378 0.1789 l
+0.6387 0.1713 l
+0.6397 0.1640 l
+0.6407 0.1644 l
+0.6418 0.1624 l
+0.6428 0.1623 l
+0.6437 0.1587 l
+0.6447 0.1655 l
+0.6456 0.1586 l
+0.6466 0.1672 l
+0.6475 0.1662 l
+0.6485 0.1650 l
+0.6494 0.1679 l
+0.6504 0.1852 l
+0.6513 0.1854 l
+0.6523 0.1801 l
+0.6532 0.1848 l
+0.6542 0.2064 l
+0.6551 0.1986 l
+0.6561 0.1692 l
+0.6571 0.1668 l
+0.6580 0.1847 l
+0.6590 0.2886 l
+0.6599 0.3022 l
+0.6609 0.2971 l
+0.6618 0.2518 l
+0.6627 0.2163 l
+0.6637 0.2662 l
+0.6646 0.2424 l
+0.6656 0.1857 l
+0.6665 0.1723 l
+0.6674 0.1771 l
+0.6685 0.1508 l
+0.6709 0.1888 l
+0.6718 0.1794 l
+0.6727 0.1825 l
+0.6737 0.1825 l
+0.6746 0.1717 l
+0.6756 0.2029 l
+0.6765 0.2048 l
+0.6775 0.1686 l
+0.6784 0.1616 l
+0.6794 0.1545 l
+0.6805 0.1711 l
+0.6814 0.1669 l
+0.6824 0.1601 l
+0.6834 0.1512 l
+0.6845 0.1514 l
+0.6854 0.1515 l
+0.6864 0.1508 l
+0.6876 0.1507 l
+0.6885 0.1507 l
+0.6896 0.1505 l
+0.6906 0.1506 l
+0.6917 0.1509 l
+0.6926 0.1505 l
+0.6938 0.1517 l
+0.6949 0.1508 l
+0.6959 0.1511 l
+0.6969 0.1516 l
+0.6979 0.1520 l
+0.6989 0.1505 l
+0.6999 0.1504 l
+0.7010 0.1505 l
+0.7021 0.1506 l
+0.7032 0.1824 l
+0.7042 0.1721 l
+0.7056 0.1506 l
+0.7066 0.1528 l
+0.7076 0.1511 l
+0.7085 0.1511 l
+0.7095 0.1513 l
+0.7104 0.1511 l
+0.7114 0.1504 l
+0.7124 0.1505 l
+0.7133 0.1514 l
+0.7143 0.1509 l
+0.7155 0.1505 l
+0.7166 0.1504 l
+0.7177 0.1506 l
+0.7187 0.1506 l
+0.7197 0.1513 l
+0.7208 0.1514 l
+0.7218 0.1512 l
+0.7229 0.1501 l
+0.7241 0.1513 l
+0.7253 0.1966 l
+0.7263 0.1666 l
+0.7272 0.1629 l
+0.7282 0.1784 l
+0.7291 0.1721 l
+0.7300 0.1687 l
+0.7310 0.1681 l
+0.7319 0.1833 l
+0.7328 0.1790 l
+0.7338 0.1684 l
+0.7347 0.1875 l
+0.7357 0.1879 l
+0.7366 0.1868 l
+0.7376 0.1792 l
+0.7385 0.1763 l
+0.7395 0.1620 l
+0.7404 0.1604 l
+0.7413 0.1607 l
+0.7423 0.1629 l
+0.7433 0.1601 l
+0.7442 0.1584 l
+0.7451 0.1683 l
+0.7461 0.1708 l
+0.7471 0.1749 l
+0.7480 0.1728 l
+0.7490 0.1657 l
+0.7499 0.1601 l
+0.7509 0.1691 l
+0.7518 0.1738 l
+0.7528 0.2051 l
+0.7537 0.1811 l
+0.7547 0.1693 l
+0.7557 0.1655 l
+0.7566 0.1670 l
+0.7575 0.2742 l
+0.7585 0.3076 l
+0.7594 0.2930 l
+0.7604 0.2999 l
+0.7613 0.3038 l
+0.7622 0.3130 l
+0.7632 0.2624 l
+0.7641 0.1652 l
+0.7651 0.1797 l
+0.7660 0.1874 l
+0.7670 0.1599 l
+0.7681 0.1669 l
+0.7691 0.1538 l
+0.7701 0.1514 l
+0.7720 0.1842 l
+0.7729 0.1942 l
+0.7738 0.1967 l
+0.7748 0.1729 l
+0.7758 0.1711 l
+0.7768 0.2054 l
+0.7777 0.2122 l
+0.7787 0.1644 l
+0.7796 0.1601 l
+0.7805 0.1542 l
+0.7815 0.1552 l
+0.7824 0.1639 l
+0.7834 0.1586 l
+0.7844 0.1518 l
+0.7853 0.1513 l
+0.7863 0.1511 l
+0.7872 0.1522 l
+0.7882 0.1507 l
+0.7892 0.1506 l
+0.7902 0.1506 l
+0.7912 0.1510 l
+0.7922 0.1506 l
+0.7932 0.1511 l
+0.7943 0.1507 l
+0.7953 0.1508 l
+0.7964 0.1510 l
+0.7973 0.1511 l
+0.7983 0.1509 l
+0.7994 0.1508 l
+0.8004 0.1513 l
+0.8016 0.1504 l
+0.8026 0.1506 l
+0.8035 0.1508 l
+0.8045 0.1884 l
+0.8054 0.1656 l
+0.8065 0.1506 l
+0.8075 0.1506 l
+0.8086 0.1509 l
+0.8097 0.1507 l
+0.8107 0.1525 l
+0.8118 0.1504 l
+0.8128 0.1504 l
+0.8137 0.1509 l
+0.8147 0.1510 l
+0.8158 0.1506 l
+0.8168 0.1507 l
+0.8181 0.1506 l
+0.8191 0.1524 l
+0.8201 0.1505 l
+0.8211 0.1507 l
+0.8221 0.1504 l
+0.8231 0.1515 l
+0.8240 0.1504 l
+0.8257 0.1512 l
+0.8269 0.1951 l
+0.8278 0.1670 l
+0.8288 0.1678 l
+0.8298 0.1717 l
+0.8307 0.1751 l
+0.8316 0.1770 l
+0.8326 0.1674 l
+0.8335 0.1777 l
+0.8344 0.1767 l
+0.8354 0.1710 l
+0.8363 0.1773 l
+0.8373 0.1818 l
+0.8383 0.1862 l
+0.8392 0.1778 l
+0.8401 0.1795 l
+0.8411 0.1729 l
+0.8420 0.1638 l
+0.8429 0.1642 l
+0.8439 0.1615 l
+0.8449 0.1591 l
+0.8458 0.1650 l
+0.8467 0.1629 l
+0.8477 0.1653 l
+0.8486 0.1621 l
+0.8496 0.1645 l
+0.8505 0.1647 l
+0.8515 0.1661 l
+0.8524 0.1783 l
+0.8534 0.1746 l
+0.8543 0.1732 l
+0.8553 0.1772 l
+0.8562 0.1749 l
+0.8572 0.1703 l
+0.8581 0.1690 l
+0.8591 0.1670 l
+0.8600 0.1651 l
+0.8609 0.2649 l
+0.8619 0.3107 l
+0.8628 0.2696 l
+0.8637 0.2814 l
+0.8647 0.2310 l
+0.8656 0.2629 l
+0.8666 0.3241 l
+0.8675 0.2852 l
+0.8685 0.1794 l
+0.8694 0.1829 l
+0.8703 0.1531 l
+0.8713 0.1514 l
+0.8732 0.1966 l
+0.8741 0.1983 l
+0.8751 0.2067 l
+0.8760 0.1798 l
+0.8769 0.1796 l
+0.8779 0.2203 l
+0.8788 0.2257 l
+0.8798 0.1575 l
+0.8807 0.1592 l
+0.8816 0.1535 l
+0.8829 0.1962 l
+0.8839 0.1649 l
+0.8848 0.1538 l
+0.8859 0.1508 l
+0.8868 0.1532 l
+0.8878 0.1526 l
+0.8888 0.1505 l
+0.8897 0.1509 l
+0.8907 0.1508 l
+0.8919 0.1506 l
+0.8930 0.1511 l
+0.8941 0.1506 l
+0.8954 0.1508 l
+0.8965 0.1526 l
+0.8976 0.1526 l
+0.8986 0.1523 l
+0.8996 0.1512 l
+0.9006 0.1529 l
+0.9016 0.1506 l
+0.9025 0.1510 l
+0.9036 0.1505 l
+0.9046 0.1625 l
+0.9056 0.1840 l
+0.9065 0.1554 l
+0.9074 0.1512 l
+0.9084 0.1507 l
+0.9094 0.1523 l
+0.9105 0.1516 l
+0.9116 0.1526 l
+0.9127 0.1506 l
+0.9139 0.1505 l
+0.9149 0.1513 l
+0.9158 0.1506 l
+0.9168 0.1505 l
+0.9179 0.1504 l
+0.9189 0.1507 l
+0.9200 0.1514 l
+0.9210 0.1506 l
+0.9220 0.1506 l
+0.9229 0.1523 l
+0.9239 0.1513 l
+0.9250 0.1501 l
+0.9262 0.1512 l
+0.9274 0.1918 l
+0.9284 0.1694 l
+0.9293 0.1635 l
+0.9303 0.1769 l
+0.9312 0.1809 l
+0.9322 0.1769 l
+0.9331 0.1728 l
+0.9341 0.1828 l
+0.9350 0.1766 l
+0.9360 0.1698 l
+0.9370 0.1775 l
+0.9379 0.1830 l
+0.9389 0.1829 l
+0.9398 0.1870 l
+0.9407 0.1787 l
+0.9417 0.1713 l
+0.9426 0.1646 l
+0.9436 0.1640 l
+0.9445 0.1593 l
+0.9455 0.1652 l
+0.9464 0.1587 l
+0.9475 0.1657 l
+0.9485 0.1631 l
+0.9494 0.1595 l
+0.9504 0.1717 l
+0.9514 0.1691 l
+0.9523 0.1675 l
+0.9533 0.1783 l
+0.9542 0.1787 l
+0.9552 0.1747 l
+0.9561 0.1839 l
+0.9570 0.2014 l
+0.9580 0.2027 l
+0.9589 0.1732 l
+0.9599 0.1667 l
+0.9608 0.1675 l
+0.9618 0.2893 l
+0.9627 0.3256 l
+0.9636 0.3032 l
+0.9646 0.2303 l
+0.9655 0.2337 l
+0.9664 0.2597 l
+0.9674 0.2803 l
+0.9683 0.2790 l
+0.9693 0.1901 l
+0.9704 0.1777 l
+0.9713 0.1549 l
+0.9725 0.1515 l
+0.9743 0.1987 l
+0.9752 0.1909 l
+0.9762 0.2018 l
+0.9771 0.1938 l
+0.9781 0.1709 l
+0.9790 0.1900 l
+0.9800 0.2314 l
+0.9809 0.2136 l
+0.9820 0.1641 l
+0.9830 0.1563 l
+0.9839 0.1526 l
+0.9849 0.1942 l
+0.9858 0.1666 l
+0.9867 0.1533 l
+0.9877 0.1504 l
+0.9887 0.1532 l
+0.9897 0.1522 l
+0.9909 0.1506 l
+0.9919 0.1507 l
+0.9929 0.1509 l
+0.9938 0.1506 l
+0.9949 0.1505 l
+0.9959 0.1505 l
+0.9970 0.1508 l
+0.9982 0.1515 l
+0.9993 0.1517 l
+1.0002 0.1530 l
+1.0013 0.1520 l
+1.0022 0.1547 l
+1.0032 0.1507 l
+1.0042 0.1503 l
+1.0052 0.1511 l
+1.0061 0.1508 l
+1.0072 0.1913 l
+1.0082 0.1600 l
+1.0093 0.1506 l
+1.0103 0.1505 l
+1.0112 0.1515 l
+1.0123 0.1524 l
+1.0132 0.1515 l
+1.0141 0.1509 l
+1.0152 0.1513 l
+1.0162 0.1504 l
+1.0171 0.1507 l
+1.0181 0.1505 l
+1.0192 0.1509 l
+1.0202 0.1509 l
+1.0212 0.1507 l
+1.0222 0.1507 l
+1.0232 0.1505 l
+1.0245 0.1510 l
+1.0255 0.1504 l
+1.0265 0.1521 l
+1.0284 0.1513 l
+1.0296 0.1973 l
+1.0306 0.1676 l
+1.0316 0.1648 l
+1.0325 0.1767 l
+1.0335 0.1775 l
+1.0344 0.1753 l
+1.0353 0.1732 l
+1.0363 0.1819 l
+1.0372 0.1800 l
+1.0382 0.1679 l
+1.0392 0.1786 l
+1.0402 0.1828 l
+1.0411 0.1913 l
+1.0420 0.1896 l
+1.0430 0.1769 l
+1.0439 0.1636 l
+1.0449 0.1657 l
+1.0458 0.1628 l
+1.0467 0.1655 l
+1.0477 0.1593 l
+1.0487 0.1685 l
+1.0496 0.1673 l
+1.0505 0.1654 l
+1.0515 0.1736 l
+1.0524 0.1681 l
+1.0534 0.1614 l
+1.0544 0.1748 l
+1.0553 0.1764 l
+1.0562 0.2068 l
+1.0572 0.2025 l
+1.0581 0.1750 l
+1.0591 0.1680 l
+1.0600 0.2192 l
+1.0610 0.3104 l
+1.0619 0.3128 l
+1.0629 0.2829 l
+1.0638 0.3009 l
+1.0647 0.2999 l
+1.0657 0.3040 l
+1.0666 0.1875 l
+1.0676 0.1651 l
+1.0685 0.2618 l
+1.0694 0.1704 l
+1.0705 0.1675 l
+1.0714 0.1581 l
+1.0726 0.1514 l
+1.0745 0.1945 l
+1.0755 0.1941 l
+1.0764 0.1979 l
+1.0774 0.1766 l
+1.0783 0.1778 l
+1.0792 0.2066 l
+1.0802 0.2136 l
+1.0811 0.1899 l
+1.0821 0.1608 l
+1.0830 0.1567 l
+1.0841 0.1568 l
+1.0850 0.1809 l
+1.0860 0.1650 l
+1.0869 0.1525 l
+1.0880 0.1508 l
+1.0889 0.1536 l
+1.0898 0.1515 l
+1.0908 0.1505 l
+1.0918 0.1510 l
+1.0928 0.1506 l
+1.0939 0.1507 l
+1.0949 0.1504 l
+1.0958 0.1509 l
+1.0968 0.1505 l
+1.0977 0.1519 l
+1.0988 0.1506 l
+1.0998 0.1537 l
+1.1010 0.1509 l
+1.1021 0.1512 l
+1.1032 0.1522 l
+1.1044 0.1503 l
+1.1055 0.1510 l
+1.1064 0.1660 l
+1.1074 0.1878 l
+1.1084 0.1506 l
+1.1094 0.1505 l
+1.1105 0.1508 l
+1.1116 0.1521 l
+1.1126 0.1514 l
+1.1135 0.1519 l
+1.1146 0.1506 l
+1.1159 0.1504 l
+1.1168 0.1514 l
+1.1178 0.1513 l
+1.1189 0.1507 l
+1.1199 0.1506 l
+1.1209 0.1505 l
+1.1219 0.1506 l
+1.1228 0.1510 l
+1.1238 0.1510 l
+1.1247 0.1523 l
+1.1259 0.1506 l
+1.1272 0.1501 l
+1.1284 0.1516 l
+1.1296 0.1923 l
+1.1306 0.1683 l
+1.1315 0.1652 l
+1.1325 0.1782 l
+1.1334 0.1740 l
+1.1344 0.1746 l
+1.1353 0.1683 l
+1.1363 0.1837 l
+1.1372 0.1776 l
+1.1382 0.1648 l
+1.1382 0.1500 l
+0.1500 0.1500 l
+c
+[/DeviceRGB] SCS
+Color2 SC
+fill
+[] 0 SD
+0.0015 SLW
+n
+0.1500 0.1574 m
+0.1580 0.1692 l
+0.1589 0.1639 l
+0.1599 0.1643 l
+0.1608 0.1667 l
+0.1652 0.2345 l
+0.1661 0.2806 l
+0.1670 0.1932 l
+0.1680 0.1643 l
+0.1689 0.1781 l
+0.1699 0.1647 l
+0.1708 0.1572 l
+0.1718 0.1513 l
+0.1729 0.1585 l
+0.1744 0.1850 l
+0.1753 0.1967 l
+0.1763 0.1701 l
+0.1772 0.1643 l
+0.1783 0.1906 l
+0.1792 0.2010 l
+0.1801 0.1796 l
+0.1811 0.1521 l
+0.1822 0.1635 l
+0.1831 0.1574 l
+0.1841 0.1512 l
+0.1850 0.1507 l
+0.1860 0.1514 l
+0.1871 0.1508 l
+0.1881 0.1507 l
+0.1891 0.1505 l
+0.1902 0.1507 l
+0.1912 0.1510 l
+0.1922 0.1505 l
+0.1932 0.1507 l
+0.1943 0.1510 l
+0.1952 0.1509 l
+0.1962 0.1506 l
+0.1972 0.1507 l
+0.1983 0.1505 l
+0.1995 0.1507 l
+0.2006 0.1509 l
+0.2016 0.1505 l
+0.2026 0.1504 l
+0.2036 0.1507 l
+0.2046 0.1507 l
+0.2056 0.1936 l
+0.2066 0.1665 l
+0.2075 0.1507 l
+0.2086 0.1505 l
+0.2096 0.1506 l
+0.2107 0.1512 l
+0.2116 0.1507 l
+0.2129 0.1507 l
+0.2138 0.1506 l
+0.2149 0.1507 l
+0.2159 0.1508 l
+0.2170 0.1507 l
+0.2183 0.1505 l
+0.2193 0.1505 l
+0.2202 0.1513 l
+0.2212 0.1515 l
+0.2221 0.1506 l
+0.2236 0.1501 l
+0.2248 0.1512 l
+0.2260 0.1953 l
+0.2269 0.1684 l
+0.2279 0.1622 l
+0.2288 0.1748 l
+0.2298 0.1691 l
+0.2308 0.1828 l
+0.2317 0.2305 l
+0.2326 0.1769 l
+0.2336 0.1739 l
+0.2345 0.1721 l
+0.2355 0.1794 l
+0.2364 0.1860 l
+0.2373 0.1825 l
+0.2383 0.1755 l
+0.2392 0.1670 l
+0.2402 0.1627 l
+0.2412 0.1645 l
+0.2421 0.1612 l
+0.2430 0.1597 l
+0.2440 0.1593 l
+0.2450 0.1640 l
+0.2460 0.1610 l
+0.2469 0.1644 l
+0.2478 0.1665 l
+0.2488 0.1682 l
+0.2497 0.1683 l
+0.2507 0.1787 l
+0.2516 0.1796 l
+0.2526 0.1755 l
+0.2535 0.1879 l
+0.2544 0.1712 l
+0.2554 0.1708 l
+0.2563 0.1645 l
+0.2573 0.1651 l
+0.2583 0.2449 l
+0.2593 0.3151 l
+0.2602 0.3236 l
+0.2611 0.3166 l
+0.2621 0.3251 l
+0.2630 0.3184 l
+0.2639 0.2222 l
+0.2649 0.1790 l
+0.2662 0.1639 l
+0.2671 0.1585 l
+0.2681 0.1508 l
+0.2704 0.1862 l
+0.2713 0.2073 l
+0.2722 0.1992 l
+0.2732 0.1738 l
+0.2741 0.1812 l
+0.2751 0.2412 l
+0.2760 0.2061 l
+0.2770 0.1611 l
+0.2779 0.1565 l
+0.2789 0.1618 l
+0.2798 0.1810 l
+0.2808 0.1587 l
+0.2818 0.1507 l
+0.2827 0.1507 l
+0.2837 0.1534 l
+0.2848 0.1510 l
+0.2857 0.1506 l
+0.2867 0.1506 l
+0.2877 0.1508 l
+0.2888 0.1509 l
+0.2897 0.1504 l
+0.2907 0.1505 l
+0.2916 0.1506 l
+0.2926 0.1507 l
+0.2935 0.1514 l
+0.2945 0.1517 l
+0.2955 0.1517 l
+0.2965 0.1515 l
+0.2976 0.1508 l
+0.2987 0.1519 l
+0.3001 0.1506 l
+0.3011 0.1509 l
+0.3020 0.1504 l
+0.3031 0.1505 l
+0.3041 0.1507 l
+0.3054 0.1504 l
+0.3064 0.1585 l
+0.3073 0.1825 l
+0.3083 0.1566 l
+0.3093 0.1511 l
+0.3103 0.1515 l
+0.3114 0.1506 l
+0.3124 0.1507 l
+0.3135 0.1506 l
+0.3144 0.1506 l
+0.3156 0.1507 l
+0.3166 0.1506 l
+0.3178 0.1506 l
+0.3188 0.1529 l
+0.3198 0.1512 l
+0.3210 0.1504 l
+0.3228 0.1521 l
+0.3240 0.1923 l
+0.3250 0.1653 l
+0.3259 0.1621 l
+0.3269 0.1803 l
+0.3278 0.1770 l
+0.3288 0.1779 l
+0.3297 0.1699 l
+0.3307 0.1868 l
+0.3316 0.1717 l
+0.3327 0.1708 l
+0.3336 0.1905 l
+0.3346 0.1970 l
+0.3356 0.1921 l
+0.3365 0.1808 l
+0.3375 0.1727 l
+0.3384 0.1646 l
+0.3394 0.1630 l
+0.3403 0.1682 l
+0.3413 0.1603 l
+0.3422 0.1670 l
+0.3432 0.1566 l
+0.3442 0.1638 l
+0.3452 0.1742 l
+0.3462 0.1824 l
+0.3471 0.1768 l
+0.3481 0.1748 l
+0.3491 0.1792 l
+0.3500 0.1771 l
+0.3510 0.1657 l
+0.3519 0.1656 l
+0.3528 0.1642 l
+0.3538 0.1644 l
+0.3547 0.1852 l
+0.3557 0.3125 l
+0.3566 0.3197 l
+0.3575 0.2984 l
+0.3585 0.2708 l
+0.3594 0.3007 l
+0.3603 0.2711 l
+0.3613 0.2368 l
+0.3622 0.2333 l
+0.3632 0.2093 l
+0.3641 0.1735 l
+0.3650 0.1796 l
+0.3661 0.1509 l
+0.3685 0.2043 l
+0.3694 0.1964 l
+0.3703 0.2120 l
+0.3713 0.1798 l
+0.3722 0.1754 l
+0.3732 0.2111 l
+0.3741 0.2314 l
+0.3750 0.1677 l
+0.3760 0.1607 l
+0.3771 0.1557 l
+0.3786 0.1846 l
+0.3795 0.1647 l
+0.3804 0.1571 l
+0.3814 0.1508 l
+0.3826 0.1513 l
+0.3835 0.1538 l
+0.3845 0.1509 l
+0.3854 0.1504 l
+0.3864 0.1508 l
+0.3874 0.1506 l
+0.3885 0.1507 l
+0.3895 0.1504 l
+0.3905 0.1507 l
+0.3914 0.1504 l
+0.3924 0.1515 l
+0.3934 0.1512 l
+0.3944 0.1526 l
+0.3953 0.1519 l
+0.3963 0.1555 l
+0.3976 0.1505 l
+0.3986 0.1503 l
+0.3997 0.1515 l
+0.4007 0.1832 l
+0.4016 0.1672 l
+0.4026 0.1505 l
+0.4036 0.1507 l
+0.4047 0.1505 l
+0.4056 0.1512 l
+0.4066 0.1526 l
+0.4076 0.1530 l
+0.4086 0.1504 l
+0.4098 0.1515 l
+0.4108 0.1506 l
+0.4118 0.1506 l
+0.4130 0.1504 l
+0.4140 0.1514 l
+0.4150 0.1513 l
+0.4160 0.1506 l
+0.4170 0.1506 l
+0.4180 0.1523 l
+0.4189 0.1508 l
+0.4199 0.1503 l
+0.4218 0.1514 l
+0.4230 0.1923 l
+0.4240 0.1642 l
+0.4249 0.1650 l
+0.4259 0.1756 l
+0.4269 0.1815 l
+0.4278 0.1748 l
+0.4288 0.1695 l
+0.4297 0.1822 l
+0.4306 0.1807 l
+0.4316 0.1688 l
+0.4325 0.1833 l
+0.4335 0.1959 l
+0.4344 0.1910 l
+0.4354 0.1886 l
+0.4363 0.1794 l
+0.4372 0.1661 l
+0.4382 0.1665 l
+0.4392 0.1620 l
+0.4401 0.1650 l
+0.4410 0.1592 l
+0.4420 0.1671 l
+0.4429 0.1638 l
+0.4439 0.1697 l
+0.4448 0.1782 l
+0.4458 0.1708 l
+0.4467 0.1717 l
+0.4477 0.1623 l
+0.4486 0.1732 l
+0.4496 0.1713 l
+0.4505 0.1972 l
+0.4515 0.1956 l
+0.4524 0.1727 l
+0.4534 0.1699 l
+0.4543 0.1771 l
+0.4553 0.2824 l
+0.4562 0.3086 l
+0.4571 0.3076 l
+0.4581 0.2876 l
+0.4590 0.3125 l
+0.4600 0.2786 l
+0.4609 0.2516 l
+0.4618 0.2120 l
+0.4628 0.2118 l
+0.4641 0.1734 l
+0.4651 0.1735 l
+0.4660 0.1508 l
+0.4671 0.1564 l
+0.4686 0.2000 l
+0.4695 0.1969 l
+0.4705 0.2021 l
+0.4714 0.1821 l
+0.4724 0.1717 l
+0.4734 0.2061 l
+0.4743 0.2255 l
+0.4753 0.1693 l
+0.4762 0.1612 l
+0.4771 0.1565 l
+0.4781 0.1612 l
+0.4791 0.1773 l
+0.4800 0.1638 l
+0.4809 0.1521 l
+0.4819 0.1509 l
+0.4829 0.1537 l
+0.4839 0.1524 l
+0.4848 0.1504 l
+0.4858 0.1507 l
+0.4867 0.1508 l
+0.4878 0.1506 l
+0.4889 0.1506 l
+0.4899 0.1507 l
+0.4909 0.1517 l
+0.4921 0.1520 l
+0.4932 0.1520 l
+0.4943 0.1511 l
+0.4953 0.1506 l
+0.4964 0.1505 l
+0.4975 0.1521 l
+0.4985 0.1509 l
+0.4996 0.1504 l
+0.5006 0.1706 l
+0.5016 0.1768 l
+0.5027 0.1505 l
+0.5038 0.1505 l
+0.5048 0.1520 l
+0.5057 0.1507 l
+0.5067 0.1507 l
+0.5076 0.1508 l
+0.5086 0.1523 l
+0.5095 0.1504 l
+0.5106 0.1515 l
+0.5116 0.1509 l
+0.5126 0.1505 l
+0.5136 0.1508 l
+0.5148 0.1505 l
+0.5158 0.1505 l
+0.5168 0.1506 l
+0.5177 0.1513 l
+0.5189 0.1507 l
+0.5199 0.1528 l
+0.5210 0.1503 l
+0.5226 0.1513 l
+0.5238 0.1913 l
+0.5249 0.1695 l
+0.5258 0.1646 l
+0.5267 0.1800 l
+0.5277 0.1779 l
+0.5286 0.1725 l
+0.5296 0.1663 l
+0.5305 0.1807 l
+0.5314 0.1759 l
+0.5325 0.1679 l
+0.5334 0.1868 l
+0.5344 0.1894 l
+0.5353 0.1868 l
+0.5363 0.1832 l
+0.5372 0.1764 l
+0.5381 0.1652 l
+0.5391 0.1609 l
+0.5400 0.1629 l
+0.5410 0.1624 l
+0.5420 0.1621 l
+0.5429 0.1584 l
+0.5439 0.1612 l
+0.5448 0.1625 l
+0.5458 0.1674 l
+0.5467 0.1677 l
+0.5477 0.1666 l
+0.5486 0.1751 l
+0.5496 0.1836 l
+0.5505 0.1754 l
+0.5514 0.1752 l
+0.5524 0.1912 l
+0.5533 0.2012 l
+0.5543 0.1783 l
+0.5552 0.1657 l
+0.5562 0.1638 l
+0.5572 0.2070 l
+0.5581 0.3169 l
+0.5590 0.2994 l
+0.5600 0.2873 l
+0.5609 0.2292 l
+0.5618 0.2302 l
+0.5628 0.2834 l
+0.5637 0.2996 l
+0.5647 0.2724 l
+0.5656 0.1817 l
+0.5666 0.1813 l
+0.5675 0.1530 l
+0.5686 0.1564 l
+0.5701 0.1963 l
+0.5711 0.1927 l
+0.5720 0.2055 l
+0.5730 0.1830 l
+0.5740 0.1737 l
+0.5749 0.2144 l
+0.5759 0.2206 l
+0.5768 0.1699 l
+0.5777 0.1605 l
+0.5787 0.1575 l
+0.5796 0.1575 l
+0.5806 0.1875 l
+0.5815 0.1680 l
+0.5825 0.1521 l
+0.5835 0.1511 l
+0.5846 0.1539 l
+0.5855 0.1514 l
+0.5866 0.1506 l
+0.5877 0.1505 l
+0.5887 0.1508 l
+0.5897 0.1507 l
+0.5908 0.1506 l
+0.5921 0.1503 l
+0.5930 0.1530 l
+0.5940 0.1506 l
+0.5950 0.1544 l
+0.5961 0.1514 l
+0.5971 0.1545 l
+0.5981 0.1505 l
+0.5991 0.1505 l
+0.6002 0.1505 l
+0.6012 0.1510 l
+0.6024 0.1803 l
+0.6034 0.1711 l
+0.6046 0.1517 l
+0.6056 0.1505 l
+0.6067 0.1514 l
+0.6076 0.1527 l
+0.6086 0.1524 l
+0.6096 0.1508 l
+0.6106 0.1503 l
+0.6116 0.1508 l
+0.6126 0.1514 l
+0.6135 0.1504 l
+0.6145 0.1506 l
+0.6157 0.1505 l
+0.6168 0.1505 l
+0.6178 0.1506 l
+0.6187 0.1520 l
+0.6198 0.1521 l
+0.6208 0.1512 l
+0.6222 0.1501 l
+0.6234 0.1514 l
+0.6246 0.1949 l
+0.6255 0.1649 l
+0.6265 0.1662 l
+0.6274 0.1713 l
+0.6284 0.1755 l
+0.6293 0.1765 l
+0.6303 0.1722 l
+0.6312 0.1843 l
+0.6321 0.1770 l
+0.6331 0.1701 l
+0.6340 0.1753 l
+0.6350 0.1881 l
+0.6359 0.1881 l
+0.6369 0.1886 l
+0.6378 0.1789 l
+0.6387 0.1713 l
+0.6397 0.1640 l
+0.6407 0.1644 l
+0.6418 0.1624 l
+0.6428 0.1623 l
+0.6437 0.1587 l
+0.6447 0.1655 l
+0.6456 0.1586 l
+0.6466 0.1672 l
+0.6475 0.1662 l
+0.6485 0.1650 l
+0.6494 0.1679 l
+0.6504 0.1852 l
+0.6513 0.1854 l
+0.6523 0.1801 l
+0.6532 0.1848 l
+0.6542 0.2064 l
+0.6551 0.1986 l
+0.6561 0.1692 l
+0.6571 0.1668 l
+0.6580 0.1847 l
+0.6590 0.2886 l
+0.6599 0.3022 l
+0.6609 0.2971 l
+0.6618 0.2518 l
+0.6627 0.2163 l
+0.6637 0.2662 l
+0.6646 0.2424 l
+0.6656 0.1857 l
+0.6665 0.1723 l
+0.6674 0.1771 l
+0.6685 0.1508 l
+0.6709 0.1888 l
+0.6718 0.1794 l
+0.6727 0.1825 l
+0.6737 0.1825 l
+0.6746 0.1717 l
+0.6756 0.2029 l
+0.6765 0.2048 l
+0.6775 0.1686 l
+0.6784 0.1616 l
+0.6794 0.1545 l
+0.6805 0.1711 l
+0.6814 0.1669 l
+0.6824 0.1601 l
+0.6834 0.1512 l
+0.6845 0.1514 l
+0.6854 0.1515 l
+0.6864 0.1508 l
+0.6876 0.1507 l
+0.6885 0.1507 l
+0.6896 0.1505 l
+0.6906 0.1506 l
+0.6917 0.1509 l
+0.6926 0.1505 l
+0.6938 0.1517 l
+0.6949 0.1508 l
+0.6959 0.1511 l
+0.6969 0.1516 l
+0.6979 0.1520 l
+0.6989 0.1505 l
+0.6999 0.1504 l
+0.7010 0.1505 l
+0.7021 0.1506 l
+0.7032 0.1824 l
+0.7042 0.1721 l
+0.7056 0.1506 l
+0.7066 0.1528 l
+0.7076 0.1511 l
+0.7085 0.1511 l
+0.7095 0.1513 l
+0.7104 0.1511 l
+0.7114 0.1504 l
+0.7124 0.1505 l
+0.7133 0.1514 l
+0.7143 0.1509 l
+0.7155 0.1505 l
+0.7166 0.1504 l
+0.7177 0.1506 l
+0.7187 0.1506 l
+0.7197 0.1513 l
+0.7208 0.1514 l
+0.7218 0.1512 l
+0.7229 0.1501 l
+0.7241 0.1513 l
+0.7253 0.1966 l
+0.7263 0.1666 l
+0.7272 0.1629 l
+0.7282 0.1784 l
+0.7291 0.1721 l
+0.7300 0.1687 l
+0.7310 0.1681 l
+0.7319 0.1833 l
+0.7328 0.1790 l
+0.7338 0.1684 l
+0.7347 0.1875 l
+0.7357 0.1879 l
+0.7366 0.1868 l
+0.7376 0.1792 l
+0.7385 0.1763 l
+0.7395 0.1620 l
+0.7404 0.1604 l
+0.7413 0.1607 l
+0.7423 0.1629 l
+0.7433 0.1601 l
+0.7442 0.1584 l
+0.7451 0.1683 l
+0.7461 0.1708 l
+0.7471 0.1749 l
+0.7480 0.1728 l
+0.7490 0.1657 l
+0.7499 0.1601 l
+0.7509 0.1691 l
+0.7518 0.1738 l
+0.7528 0.2051 l
+0.7537 0.1811 l
+0.7547 0.1693 l
+0.7557 0.1655 l
+0.7566 0.1670 l
+0.7575 0.2742 l
+0.7585 0.3076 l
+0.7594 0.2930 l
+0.7604 0.2999 l
+0.7613 0.3038 l
+0.7622 0.3130 l
+0.7632 0.2624 l
+0.7641 0.1652 l
+0.7651 0.1797 l
+0.7660 0.1874 l
+0.7670 0.1599 l
+0.7681 0.1669 l
+0.7691 0.1538 l
+0.7701 0.1514 l
+0.7720 0.1842 l
+0.7729 0.1942 l
+0.7738 0.1967 l
+0.7748 0.1729 l
+0.7758 0.1711 l
+0.7768 0.2054 l
+0.7777 0.2122 l
+0.7787 0.1644 l
+0.7796 0.1601 l
+0.7805 0.1542 l
+0.7815 0.1552 l
+0.7824 0.1639 l
+0.7834 0.1586 l
+0.7844 0.1518 l
+0.7853 0.1513 l
+0.7863 0.1511 l
+0.7872 0.1522 l
+0.7882 0.1507 l
+0.7892 0.1506 l
+0.7902 0.1506 l
+0.7912 0.1510 l
+0.7922 0.1506 l
+0.7932 0.1511 l
+0.7943 0.1507 l
+0.7953 0.1508 l
+0.7964 0.1510 l
+0.7973 0.1511 l
+0.7983 0.1509 l
+0.7994 0.1508 l
+0.8004 0.1513 l
+0.8016 0.1504 l
+0.8026 0.1506 l
+0.8035 0.1508 l
+0.8045 0.1884 l
+0.8054 0.1656 l
+0.8065 0.1506 l
+0.8075 0.1506 l
+0.8086 0.1509 l
+0.8097 0.1507 l
+0.8107 0.1525 l
+0.8118 0.1504 l
+0.8128 0.1504 l
+0.8137 0.1509 l
+0.8147 0.1510 l
+0.8158 0.1506 l
+0.8168 0.1507 l
+0.8181 0.1506 l
+0.8191 0.1524 l
+0.8201 0.1505 l
+0.8211 0.1507 l
+0.8221 0.1504 l
+0.8231 0.1515 l
+0.8240 0.1504 l
+0.8257 0.1512 l
+0.8269 0.1951 l
+0.8278 0.1670 l
+0.8288 0.1678 l
+0.8298 0.1717 l
+0.8307 0.1751 l
+0.8316 0.1770 l
+0.8326 0.1674 l
+0.8335 0.1777 l
+0.8344 0.1767 l
+0.8354 0.1710 l
+0.8363 0.1773 l
+0.8373 0.1818 l
+0.8383 0.1862 l
+0.8392 0.1778 l
+0.8401 0.1795 l
+0.8411 0.1729 l
+0.8420 0.1638 l
+0.8429 0.1642 l
+0.8439 0.1615 l
+0.8449 0.1591 l
+0.8458 0.1650 l
+0.8467 0.1629 l
+0.8477 0.1653 l
+0.8486 0.1621 l
+0.8496 0.1645 l
+0.8505 0.1647 l
+0.8515 0.1661 l
+0.8524 0.1783 l
+0.8534 0.1746 l
+0.8543 0.1732 l
+0.8553 0.1772 l
+0.8562 0.1749 l
+0.8572 0.1703 l
+0.8581 0.1690 l
+0.8591 0.1670 l
+0.8600 0.1651 l
+0.8609 0.2649 l
+0.8619 0.3107 l
+0.8628 0.2696 l
+0.8637 0.2814 l
+0.8647 0.2310 l
+0.8656 0.2629 l
+0.8666 0.3241 l
+0.8675 0.2852 l
+0.8685 0.1794 l
+0.8694 0.1829 l
+0.8703 0.1531 l
+0.8713 0.1514 l
+0.8732 0.1966 l
+0.8741 0.1983 l
+0.8751 0.2067 l
+0.8760 0.1798 l
+0.8769 0.1796 l
+0.8779 0.2203 l
+0.8788 0.2257 l
+0.8798 0.1575 l
+0.8807 0.1592 l
+0.8816 0.1535 l
+0.8829 0.1962 l
+0.8839 0.1649 l
+0.8848 0.1538 l
+0.8859 0.1508 l
+0.8868 0.1532 l
+0.8878 0.1526 l
+0.8888 0.1505 l
+0.8897 0.1509 l
+0.8907 0.1508 l
+0.8919 0.1506 l
+0.8930 0.1511 l
+0.8941 0.1506 l
+0.8954 0.1508 l
+0.8965 0.1526 l
+0.8976 0.1526 l
+0.8986 0.1523 l
+0.8996 0.1512 l
+0.9006 0.1529 l
+0.9016 0.1506 l
+0.9025 0.1510 l
+0.9036 0.1505 l
+0.9046 0.1625 l
+0.9056 0.1840 l
+0.9065 0.1554 l
+0.9074 0.1512 l
+0.9084 0.1507 l
+0.9094 0.1523 l
+0.9105 0.1516 l
+0.9116 0.1526 l
+0.9127 0.1506 l
+0.9139 0.1505 l
+0.9149 0.1513 l
+0.9158 0.1506 l
+0.9168 0.1505 l
+0.9179 0.1504 l
+0.9189 0.1507 l
+0.9200 0.1514 l
+0.9210 0.1506 l
+0.9220 0.1506 l
+0.9229 0.1523 l
+0.9239 0.1513 l
+0.9250 0.1501 l
+0.9262 0.1512 l
+0.9274 0.1918 l
+0.9284 0.1694 l
+0.9293 0.1635 l
+0.9303 0.1769 l
+0.9312 0.1809 l
+0.9322 0.1769 l
+0.9331 0.1728 l
+0.9341 0.1828 l
+0.9350 0.1766 l
+0.9360 0.1698 l
+0.9370 0.1775 l
+0.9379 0.1830 l
+0.9389 0.1829 l
+0.9398 0.1870 l
+0.9407 0.1787 l
+0.9417 0.1713 l
+0.9426 0.1646 l
+0.9436 0.1640 l
+0.9445 0.1593 l
+0.9455 0.1652 l
+0.9464 0.1587 l
+0.9475 0.1657 l
+0.9485 0.1631 l
+0.9494 0.1595 l
+0.9504 0.1717 l
+0.9514 0.1691 l
+0.9523 0.1675 l
+0.9533 0.1783 l
+0.9542 0.1787 l
+0.9552 0.1747 l
+0.9561 0.1839 l
+0.9570 0.2014 l
+0.9580 0.2027 l
+0.9589 0.1732 l
+0.9599 0.1667 l
+0.9608 0.1675 l
+0.9618 0.2893 l
+0.9627 0.3256 l
+0.9636 0.3032 l
+0.9646 0.2303 l
+0.9655 0.2337 l
+0.9664 0.2597 l
+0.9674 0.2803 l
+0.9683 0.2790 l
+0.9693 0.1901 l
+0.9704 0.1777 l
+0.9713 0.1549 l
+0.9725 0.1515 l
+0.9743 0.1987 l
+0.9752 0.1909 l
+0.9762 0.2018 l
+0.9771 0.1938 l
+0.9781 0.1709 l
+0.9790 0.1900 l
+0.9800 0.2314 l
+0.9809 0.2136 l
+0.9820 0.1641 l
+0.9830 0.1563 l
+0.9839 0.1526 l
+0.9849 0.1942 l
+0.9858 0.1666 l
+0.9867 0.1533 l
+0.9877 0.1504 l
+0.9887 0.1532 l
+0.9897 0.1522 l
+0.9909 0.1506 l
+0.9919 0.1507 l
+0.9929 0.1509 l
+0.9938 0.1506 l
+0.9949 0.1505 l
+0.9959 0.1505 l
+0.9970 0.1508 l
+0.9982 0.1515 l
+0.9993 0.1517 l
+1.0002 0.1530 l
+1.0013 0.1520 l
+1.0022 0.1547 l
+1.0032 0.1507 l
+1.0042 0.1503 l
+1.0052 0.1511 l
+1.0061 0.1508 l
+1.0072 0.1913 l
+1.0082 0.1600 l
+1.0093 0.1506 l
+1.0103 0.1505 l
+1.0112 0.1515 l
+1.0123 0.1524 l
+1.0132 0.1515 l
+1.0141 0.1509 l
+1.0152 0.1513 l
+1.0162 0.1504 l
+1.0171 0.1507 l
+1.0181 0.1505 l
+1.0192 0.1509 l
+1.0202 0.1509 l
+1.0212 0.1507 l
+1.0222 0.1507 l
+1.0232 0.1505 l
+1.0245 0.1510 l
+1.0255 0.1504 l
+1.0265 0.1521 l
+1.0284 0.1513 l
+1.0296 0.1973 l
+1.0306 0.1676 l
+1.0316 0.1648 l
+1.0325 0.1767 l
+1.0335 0.1775 l
+1.0344 0.1753 l
+1.0353 0.1732 l
+1.0363 0.1819 l
+1.0372 0.1800 l
+1.0382 0.1679 l
+1.0392 0.1786 l
+1.0402 0.1828 l
+1.0411 0.1913 l
+1.0420 0.1896 l
+1.0430 0.1769 l
+1.0439 0.1636 l
+1.0449 0.1657 l
+1.0458 0.1628 l
+1.0467 0.1655 l
+1.0477 0.1593 l
+1.0487 0.1685 l
+1.0496 0.1673 l
+1.0505 0.1654 l
+1.0515 0.1736 l
+1.0524 0.1681 l
+1.0534 0.1614 l
+1.0544 0.1748 l
+1.0553 0.1764 l
+1.0562 0.2068 l
+1.0572 0.2025 l
+1.0581 0.1750 l
+1.0591 0.1680 l
+1.0600 0.2192 l
+1.0610 0.3104 l
+1.0619 0.3128 l
+1.0629 0.2829 l
+1.0638 0.3009 l
+1.0647 0.2999 l
+1.0657 0.3040 l
+1.0666 0.1875 l
+1.0676 0.1651 l
+1.0685 0.2618 l
+1.0694 0.1704 l
+1.0705 0.1675 l
+1.0714 0.1581 l
+1.0726 0.1514 l
+1.0745 0.1945 l
+1.0755 0.1941 l
+1.0764 0.1979 l
+1.0774 0.1766 l
+1.0783 0.1778 l
+1.0792 0.2066 l
+1.0802 0.2136 l
+1.0811 0.1899 l
+1.0821 0.1608 l
+1.0830 0.1567 l
+1.0841 0.1568 l
+1.0850 0.1809 l
+1.0860 0.1650 l
+1.0869 0.1525 l
+1.0880 0.1508 l
+1.0889 0.1536 l
+1.0898 0.1515 l
+1.0908 0.1505 l
+1.0918 0.1510 l
+1.0928 0.1506 l
+1.0939 0.1507 l
+1.0949 0.1504 l
+1.0958 0.1509 l
+1.0968 0.1505 l
+1.0977 0.1519 l
+1.0988 0.1506 l
+1.0998 0.1537 l
+1.1010 0.1509 l
+1.1021 0.1512 l
+1.1032 0.1522 l
+1.1044 0.1503 l
+1.1055 0.1510 l
+1.1064 0.1660 l
+1.1074 0.1878 l
+1.1084 0.1506 l
+1.1094 0.1505 l
+1.1105 0.1508 l
+1.1116 0.1521 l
+1.1126 0.1514 l
+1.1135 0.1519 l
+1.1146 0.1506 l
+1.1159 0.1504 l
+1.1168 0.1514 l
+1.1178 0.1513 l
+1.1189 0.1507 l
+1.1199 0.1506 l
+1.1209 0.1505 l
+1.1219 0.1506 l
+1.1228 0.1510 l
+1.1238 0.1510 l
+1.1247 0.1523 l
+1.1259 0.1506 l
+1.1272 0.1501 l
+1.1284 0.1516 l
+1.1296 0.1923 l
+1.1306 0.1683 l
+1.1315 0.1652 l
+1.1325 0.1782 l
+1.1334 0.1740 l
+1.1344 0.1746 l
+1.1353 0.1683 l
+1.1363 0.1837 l
+1.1372 0.1776 l
+1.1382 0.1648 l
+s
+/Font32 FFSF
+[/DeviceRGB] SCS
+Color6 SC
+0.1447 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(0) show
+GR
+/Font32 FFSF
+0.2017 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(1) show
+GR
+/Font32 FFSF
+0.2572 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(2) show
+GR
+/Font32 FFSF
+0.3138 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(3) show
+GR
+/Font32 FFSF
+0.3696 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(4) show
+GR
+/Font32 FFSF
+0.4262 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(5) show
+GR
+/Font32 FFSF
+0.4821 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(6) show
+GR
+/Font32 FFSF
+0.5385 0.1251 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(7) show
+GR
+/Font32 FFSF
+0.5949 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(8) show
+GR
+/Font32 FFSF
+0.6509 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(9) show
+GR
+/Font32 FFSF
+0.7013 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(10) show
+GR
+/Font32 FFSF
+0.7583 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(11) show
+GR
+/Font32 FFSF
+0.8137 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(12) show
+GR
+/Font32 FFSF
+0.8704 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(13) show
+GR
+/Font32 FFSF
+0.9262 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(14) show
+GR
+/Font32 FFSF
+0.9828 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(15) show
+GR
+/Font32 FFSF
+1.0387 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(16) show
+GR
+/Font32 FFSF
+1.0951 0.1247 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(17) show
+GR
+/Font32 FFSF
+0.5420 0.0951 m
+GS
+[0.0280 0.0000 0.0000 0.0280 0 0] CC
+(Runtime \(minutes\)) show
+GR
+/Font32 FFSF
+0.1294 0.1425 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(0) show
+GR
+/Font32 FFSF
+1.1533 0.1425 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(0) show
+GR
+/Font32 FFSF
+0.0957 0.2062 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(1000) show
+GR
+/Font32 FFSF
+1.1533 0.2062 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(1000) show
+GR
+/Font32 FFSF
+0.0957 0.2698 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(2000) show
+GR
+/Font32 FFSF
+1.1533 0.2698 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(2000) show
+GR
+/Font32 FFSF
+0.0957 0.3335 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(3000) show
+GR
+/Font32 FFSF
+1.1533 0.3335 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(3000) show
+GR
+/Font32 FFSF
+0.0957 0.3971 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(4000) show
+GR
+/Font32 FFSF
+1.1533 0.3971 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(4000) show
+GR
+/Font32 FFSF
+0.0957 0.4607 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(5000) show
+GR
+/Font32 FFSF
+1.1533 0.4607 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(5000) show
+GR
+/Font32 FFSF
+0.0794 -0.0066 m
+GS
+[0.0000 0.0280 -0.0280 0.0000 0 0] CC
+(                                                              Seeks p\
+er Second) show
+GR
+n
+0.1500 0.1500 m
+0.1500 0.4682 l
+1.1433 0.4682 l
+1.1433 0.1500 l
+0.1500 0.1500 l
+c
+s
+n
+1.0100 0.4600 m
+1.0100 0.4247 l
+1.1362 0.4247 l
+1.1362 0.4600 l
+c
+[/DeviceRGB] SCS
+Color0 SC
+fill
+[/DeviceRGB] SCS
+Color6 SC
+n
+1.0100 0.4600 m
+1.0100 0.4247 l
+1.1362 0.4247 l
+1.1362 0.4600 l
+1.0100 0.4600 l
+c
+s
+/Font32 FFSF
+1.0808 0.4351 m
+GS
+[0.0224 0.0000 0.0000 0.0224 0 0] CC
+(Issue) show
+GR
+[/DeviceRGB] SCS
+Color2 SC
+n
+1.0208 0.4424 m
+1.0608 0.4424 l
+s
+%%Trailer
+%%BoundingBox: 35 -5 734 581
+%%DocumentNeededResources: font Times-Italic
+%%+ font Times-Roman
+%%EOF
diff --git a/btt/globals.h b/btt/globals.h
new file mode 100644
index 0000000..d05d996
--- /dev/null
+++ b/btt/globals.h
@@ -0,0 +1,347 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+
+#include "blktrace.h"
+#include "rbtree.h"
+#include "list.h"
+
+/*
+ * 0 == 1 blk
+ * 1 == 2 blks
+ * ...
+ * 1022 == 1023 blks
+ * 1023 == 1024 blks
+ * 1024 == > 1024 blks
+ */
+#define N_HIST_BKTS	1025
+
+#define BIT_TIME(t)	((double)SECONDS(t) + ((double)NANO_SECONDS(t) / 1.0e9))
+
+#define BIT_START(iop)	((iop)->t.sector)
+#define BIT_END(iop)	((iop)->t.sector + ((iop)->t.bytes >> 9))
+#define IOP_READ(iop)	((iop)->t.action & BLK_TC_ACT(BLK_TC_READ))
+#define IOP_RW(iop)	(IOP_READ(iop) ? 1 : 0)
+
+#define TO_SEC(nanosec)	((double)(nanosec) / 1.0e9)
+#define TO_MSEC(nanosec) (1000.0 * TO_SEC(nanosec))
+
+enum iop_type {
+	IOP_Q = 0,
+	IOP_X = 1,
+	IOP_A = 2,
+	IOP_G = 3,
+	IOP_M = 4,
+	IOP_D = 5,
+	IOP_C = 6,
+	IOP_R = 7,
+	IOP_I = 8,
+	IOP_S = 9
+};
+#define N_IOP_TYPES	(IOP_S + 1)
+
+struct mode {
+	int most_seeks, nmds;
+	long long *modes;
+};
+
+struct io;
+struct io_list {
+	struct list_head head;
+	struct io *iop;
+	int cy_users;
+};
+
+struct avg_info {
+	__u64 min, max, total;
+	double avg;
+	int n;
+};
+
+struct avgs_info {
+        struct avg_info q2q_dm;
+        struct avg_info q2a_dm;
+        struct avg_info q2c_dm;
+
+        struct avg_info q2q;
+	struct avg_info q2a;
+	struct avg_info q2g;
+	struct avg_info s2g;
+	struct avg_info g2i;
+	struct avg_info q2m;
+	struct avg_info i2d;
+	struct avg_info m2d;
+	struct avg_info d2c;
+	struct avg_info q2c;
+
+	struct avg_info blks;		/* Blocks transferred */
+};
+
+struct range_info {
+	struct list_head head;		/* on: qranges OR cranges */
+	__u64 start, end;
+};
+
+struct region_info {
+	struct list_head qranges;
+	struct list_head cranges;
+};
+
+struct p_info {
+	struct region_info regions;
+	struct avgs_info avgs;
+	__u64 last_q;
+	__u32 pid;
+	char *name;
+};
+
+struct stats {
+	__u64 rqm[2], ios[2], sec[2], wait, svctm;
+	double last_qu_change, last_dev_change, tot_qusz, idle_time;
+	int cur_qusz, cur_dev;
+};
+
+struct stats_t {
+	double n;
+	double rqm_s[2], ios_s[2], sec_s[2];
+	double avgrq_sz, avgqu_sz, await, svctm, p_util;
+};
+
+struct d_info {
+	struct list_head all_head, hash_head;
+	void *heads;
+	struct region_info regions;
+	char *devmap;
+	void *q2q_handle, *seek_handle, *bno_dump_handle, *up_hist_handle;
+	void *q2d_priv, *aqd_handle;
+	void *q2d_plat_handle, *q2c_plat_handle, *d2c_plat_handle;
+	FILE *q2d_ofp, *d2c_ofp, *q2c_ofp, *pit_fp;
+	struct avgs_info avgs;
+	struct stats stats, all_stats;
+	__u64 last_q, n_qs, n_ds;
+	__u64 n_act_q, t_act_q;	/* # currently active when Q comes in */
+	__u32 device;
+
+	int pre_culling;
+	int is_plugged, nplugs, nplugs_t;
+	__u64 nios_up, nios_upt;
+	double start_time, last_plug, plugged_time, end_time;
+};
+
+struct io {
+	struct rb_node rb_node;
+	struct list_head f_head, a_head;
+	struct d_info *dip;
+	struct p_info *pip;
+	void *pdu;
+	__u64 bytes_left, g_time, i_time, m_time, d_time, c_time, d_sec, c_sec;
+	__u64 s_time;
+	__u32 d_nsec, c_nsec;
+
+	struct blk_io_trace t;
+
+	int linked;
+	enum iop_type type;
+};
+
+/* bt_timeline.c */
+
+extern char bt_timeline_version[], *devices, *exes, *input_name, *output_name;
+extern char *seek_name, *iostat_name, *d2c_name, *q2c_name, *per_io_name;
+extern char *bno_dump_name, *unplug_hist_name, *sps_name, *aqd_name, *q2d_name;
+extern char *per_io_trees;
+extern double range_delta, plat_freq;
+extern FILE *rngs_ofp, *avgs_ofp, *xavgs_ofp, *iostat_ofp, *per_io_ofp;
+extern FILE *msgs_ofp;
+extern int verbose, done, time_bounded, output_all_data, seek_absolute;
+extern int easy_parse_avgs, ignore_remaps;
+extern unsigned int n_devs;
+extern unsigned long n_traces;
+extern struct list_head all_devs, all_procs;
+extern struct avgs_info all_avgs;
+extern __u64 last_q;
+extern struct region_info all_regions;
+extern struct list_head all_ios, free_ios;
+extern __u64 iostat_interval, iostat_last_stamp;
+extern time_t genesis, last_vtrace;
+extern double t_astart, t_aend;
+extern __u64 q_histo[N_HIST_BKTS], d_histo[N_HIST_BKTS];
+
+/* args.c */
+void handle_args(int argc, char *argv[]);
+void clean_args();
+
+/* aqd.c */
+void *aqd_alloc(char *str);
+void aqd_free(void *info);
+void aqd_clean(void);
+void aqd_issue(void *info, double ts);
+void aqd_complete(void *info, double ts);
+
+/* devmap.c */
+int dev_map_read(char *fname);
+char *dev_map_find(__u32 device);
+void dev_map_exit(void);
+
+/* devs.c */
+void init_dev_heads(void);
+struct d_info *dip_alloc(__u32 device, struct io *iop);
+void iop_rem_dip(struct io *iop);
+struct d_info *__dip_find(__u32 device);
+void dip_foreach_list(struct io *iop, enum iop_type type, struct list_head *hd);
+void dip_foreach(struct io *iop, enum iop_type type,
+		 void (*fnc)(struct io *iop, struct io *this), int rm_after);
+struct io *dip_find_sec(struct d_info *dip, enum iop_type type, __u64 sec);
+void dip_foreach_out(void (*func)(struct d_info *, void *), void *arg);
+void dip_plug(__u32 dev, double cur_time);
+void dip_unplug(__u32 dev, double cur_time, __u64 nio_ups);
+void dip_unplug_tm(__u32 dev, double cur_time, __u64 nio_ups);
+void dip_exit(void);
+void dip_cleanup(void);
+
+/* dip_rb.c */
+int rb_insert(struct rb_root *root, struct io *iop);
+struct io *rb_find_sec(struct rb_root *root, __u64 sec);
+void rb_foreach(struct rb_node *n, struct io *iop,
+		      void (*fnc)(struct io *iop, struct io *this),
+		      struct list_head *head);
+
+/* iostat.c */
+void iostat_init(void);
+void iostat_getrq(struct io *iop);
+void iostat_merge(struct io *iop);
+void iostat_issue(struct io *iop);
+void iostat_complete(struct io *d_iop, struct io *c_iop);
+void iostat_check_time(__u64 stamp);
+void iostat_dump_stats(__u64 stamp, int all);
+
+/* latency.c */
+void latency_alloc(struct d_info *dip);
+void latency_clean(void);
+void latency_q2d(struct d_info *dip, __u64 tstamp, __u64 latency);
+void latency_d2c(struct d_info *dip, __u64 tstamp, __u64 latency);
+void latency_q2c(struct d_info *dip, __u64 tstamp, __u64 latency);
+
+/* misc.c */
+void add_file(FILE *fp, char *oname);
+void add_buf(void *buf);
+char *make_dev_hdr(char *pad, size_t len, struct d_info *dip, int add_parens);
+FILE *my_fopen(const char *path, const char *mode);
+int my_open(const char *path, int flags);
+void dbg_ping(void);
+void clean_allocs(void);
+
+/* mmap.c */
+void setup_ifile(char *fname);
+void cleanup_ifile(void);
+int next_trace(struct blk_io_trace *t, void **pdu);
+double pct_done(void);
+
+/* output.c */
+int output_avgs(FILE *ofp);
+int output_ranges(FILE *ofp);
+
+/* proc.c */
+void process_alloc(__u32 pid, char *name);
+struct p_info *find_process(__u32 pid, char *name);
+void pip_update_q(struct io *iop);
+void pip_foreach_out(void (*f)(struct p_info *, void *), void *arg);
+void pip_exit(void);
+
+/* bno_dump.c */
+void *bno_dump_alloc(__u32 device);
+void bno_dump_free(void *param);
+void bno_dump_add(void *handle, struct io *iop);
+void bno_dump_clean(void);
+
+/* plat.c */
+void *plat_alloc(char *str);
+void plat_free(void *info);
+void plat_clean(void);
+void plat_x2c(void *info, __u64 ts, __u64 latency);
+
+/* q2d.c */
+void q2d_histo_add(void *priv, __u64 q2d);
+void *q2d_alloc(void);
+void q2d_free(void *priv);
+void q2d_display_header(FILE *fp);
+void q2d_display_dashes(FILE *fp);
+void q2d_display(FILE *fp, void *priv);
+int q2d_ok(void *priv);
+void q2d_acc(void *a1, void *a2);
+
+/* seek.c */
+void *seeki_alloc(char *str);
+void seeki_free(void *param);
+void seek_clean(void);
+void seeki_add(void *handle, struct io *iop);
+double seeki_mean(void *handle);
+long long seeki_nseeks(void *handle);
+long long seeki_median(void *handle);
+int seeki_mode(void *handle, struct mode *mp);
+
+/* trace.c */
+void add_trace(struct io *iop);
+
+/* trace_complete.c */
+void trace_complete(struct io *c_iop);
+
+/* trace_im.c */
+void run_im(struct io *im_iop, struct io *d_iop, struct io *c_iop);
+void run_unim(struct io *im_iop, struct io *d_iop, struct io *c_iop);
+int ready_im(struct io *im_iop, struct io *c_iop);
+void trace_insert(struct io *i_iop);
+void trace_merge(struct io *m_iop);
+void trace_getrq(struct io *g_iop);
+void trace_sleeprq(struct io *s_iop);
+
+/* trace_issue.c */
+void run_issue(struct io *d_iop, struct io *u_iop, struct io *c_iop);
+void run_unissue(struct io *d_iop, struct io *u_iop, struct io *c_iop);
+int ready_issue(struct io *d_iop, struct io *c_iop);
+void trace_issue(struct io *d_iop);
+
+/* trace_plug.c */
+void trace_plug(struct io *p_iop);
+void trace_unplug_io(struct io *u_iop);
+void trace_unplug_timer(struct io *u_iop);
+
+/* trace_queue.c */
+void run_queue(struct io *q_iop, struct io *u_iop, struct io *c_iop);
+int ready_queue(struct io *q_iop, struct io *c_iop);
+void trace_queue(struct io *q_iop);
+
+/* trace_remap.c */
+void run_remap(struct io *a_iop, struct io *u_iop, struct io *c_iop);
+int ready_remap(struct io *a_iop, struct io *c_iop);
+void trace_remap(struct io *a_iop);
+
+/* trace_requeue.c */
+void trace_requeue(struct io *r_iop);
+
+/* unplug_hist.c */
+void *unplug_hist_alloc(__u32 device);
+void unplug_hist_free(void *arg);
+void unplug_hist_add(struct io *u_iop);
+
+#include "inlines.h"
diff --git a/btt/inlines.h b/btt/inlines.h
new file mode 100644
index 0000000..64b5a2c
--- /dev/null
+++ b/btt/inlines.h
@@ -0,0 +1,383 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+
+static inline int remapper_dev(__u32 dev)
+{
+	int mjr = MAJOR(dev);
+	return mjr == 9 || mjr == 253 || mjr == 254;
+}
+
+static inline void region_init(struct region_info *reg)
+{
+	INIT_LIST_HEAD(&reg->qranges);
+	INIT_LIST_HEAD(&reg->cranges);
+}
+
+static inline void __region_exit(struct list_head *range_head)
+{
+	struct list_head *p, *q;
+	struct range_info *rip;
+
+	list_for_each_safe(p, q, range_head) {
+		rip = list_entry(p, struct range_info, head);
+		free(rip);
+	}
+}
+
+static inline void region_exit(struct region_info *reg)
+{
+	__region_exit(&reg->qranges);
+	__region_exit(&reg->cranges);
+}
+
+static inline void update_range(struct list_head *head_p, __u64 time)
+{
+	struct range_info *rip;
+
+	if (!list_empty(head_p)) {
+		rip = list_entry(head_p->prev, struct range_info, head);
+
+		if (time < rip->end)
+			return;
+
+		if (BIT_TIME(time - rip->end) < range_delta) {
+			rip->end = time;
+			return;
+		}
+	}
+
+	rip = malloc(sizeof(*rip));
+	rip->start = rip->end = time;
+	list_add_tail(&rip->head, head_p);
+}
+
+static inline void update_qregion(struct region_info *reg, __u64 time)
+{
+	update_range(&reg->qranges, time);
+}
+
+static inline void update_cregion(struct region_info *reg, __u64 time)
+{
+	update_range(&reg->cranges, time);
+}
+
+static inline void avg_update(struct avg_info *ap, __u64 t)
+{
+        if (ap->n++ == 0)
+                ap->min = ap->total = ap->max = t;
+        else {
+                if (t < ap->min)
+                        ap->min = t;
+                else if (t > ap->max)
+                        ap->max = t;
+                ap->total += t;
+        }
+}
+
+static inline void avg_update_n(struct avg_info *ap, __u64 t, int n)
+{
+        if (ap->n == 0) {
+                ap->min = ap->max = t;
+		ap->total = (n * t);
+	} else {
+                if (t < ap->min)
+                        ap->min = t;
+                else if (t > ap->max)
+                        ap->max = t;
+                ap->total += (n * t);
+        }
+
+	ap->n += n;
+}
+
+static inline void avg_unupdate(struct avg_info *ap, __u64 t)
+{
+	ap->n--;
+	ap->total -= t;
+}
+
+static inline void update_lq(__u64 *last_q, struct avg_info *avg, __u64 time)
+{
+	if (*last_q != ((__u64)-1))
+		avg_update(avg, (time > *last_q) ? time - *last_q : 1);
+	*last_q = time;
+}
+
+static inline void dip_update_q(struct d_info *dip, struct io *iop)
+{
+	if (remapper_dev(dip->device))
+		update_lq(&dip->last_q, &dip->avgs.q2q_dm, iop->t.time);
+	else
+		update_lq(&dip->last_q, &dip->avgs.q2q, iop->t.time);
+	update_qregion(&dip->regions, iop->t.time);
+}
+
+static inline struct io *io_alloc(void)
+{
+	struct io *iop = malloc(sizeof(*iop));
+
+	memset(iop, 0, sizeof(struct io));
+	list_add_tail(&iop->a_head, &all_ios);
+
+	return iop;
+}
+
+static inline void io_free(struct io *iop)
+{
+	list_del(&iop->a_head);
+	free(iop);
+}
+
+static inline void io_free_all(void)
+{
+	struct io *iop;
+	struct list_head *p, *q;
+
+	list_for_each_safe(p, q, &all_ios) {
+		iop = list_entry(p, struct io, a_head);
+		free(iop);
+	}
+}
+
+static inline int io_setup(struct io *iop, enum iop_type type)
+{
+	iop->type = type;
+	iop->dip = dip_alloc(iop->t.device, iop);
+	if (iop->linked) {
+		iop->pip = find_process(iop->t.pid, NULL);
+		iop->bytes_left = iop->t.bytes;
+	}
+
+	return iop->linked;
+}
+
+static inline void io_release(struct io *iop)
+{
+	if (iop->linked)
+		iop_rem_dip(iop);
+	if (iop->pdu)
+		free(iop->pdu);
+
+	io_free(iop);
+}
+
+#define UPDATE_AVGS(_avg, _iop, _pip, _time) do {			\
+		avg_update(&all_avgs. _avg , _time);			\
+		avg_update(&_iop->dip->avgs. _avg , _time);		\
+		if (_pip) avg_update(&_pip->avgs. _avg , _time);	\
+	} while (0)
+
+#define UPDATE_AVGS_N(_avg, _iop, _pip, _time, _n) do {			\
+		avg_update_n(&all_avgs. _avg , _time, _n);		\
+		avg_update_n(&_iop->dip->avgs. _avg , _time, _n);	\
+		if (_pip) avg_update_n(&_pip->avgs. _avg , _time,_n);	\
+	} while (0)
+
+#define UNUPDATE_AVGS(_avg, _iop, _pip, _time) do {			\
+		avg_unupdate(&all_avgs. _avg , _time);			\
+		avg_unupdate(&_iop->dip->avgs. _avg , _time);		\
+		if (_pip) avg_unupdate(&_pip->avgs. _avg , _time);	\
+	} while (0)
+
+static inline void update_q2c(struct io *iop, __u64 c_time)
+{
+	if (remapper_dev(iop->dip->device))
+		UPDATE_AVGS(q2c_dm, iop, iop->pip, c_time);
+	else
+		UPDATE_AVGS(q2c, iop, iop->pip, c_time);
+}
+
+static inline void update_q2a(struct io *iop, __u64 a_time)
+{
+	if (remapper_dev(iop->dip->device))
+		UPDATE_AVGS(q2a_dm, iop, iop->pip, a_time);
+	else
+		UPDATE_AVGS(q2a, iop, iop->pip, a_time);
+}
+
+static inline void update_q2g(struct io *iop, __u64 g_time)
+{
+	UPDATE_AVGS(q2g, iop, iop->pip, g_time);
+}
+
+static inline void update_s2g(struct io *iop, __u64 g_time)
+{
+	UPDATE_AVGS(s2g, iop, iop->pip, g_time);
+}
+
+static inline void unupdate_q2g(struct io *iop, __u64 g_time)
+{
+	UNUPDATE_AVGS(q2g, iop, iop->pip, g_time);
+}
+
+static inline void update_g2i(struct io *iop, __u64 i_time)
+{
+	UPDATE_AVGS(g2i, iop, iop->pip, i_time);
+}
+
+static inline void unupdate_g2i(struct io *iop, __u64 i_time)
+{
+	UNUPDATE_AVGS(g2i, iop, iop->pip, i_time);
+}
+
+static inline void update_q2m(struct io *iop, __u64 m_time)
+{
+	UPDATE_AVGS(q2m, iop, iop->pip, m_time);
+}
+
+static inline void unupdate_q2m(struct io *iop, __u64 m_time)
+{
+	UNUPDATE_AVGS(q2m, iop, iop->pip, m_time);
+}
+
+static inline void update_i2d(struct io *iop, __u64 d_time)
+{
+	UPDATE_AVGS(i2d, iop, iop->pip, d_time);
+}
+
+static inline void unupdate_i2d(struct io *iop, __u64 d_time)
+{
+	UNUPDATE_AVGS(i2d, iop, iop->pip, d_time);
+}
+
+static inline void update_m2d(struct io *iop, __u64 d_time)
+{
+	UPDATE_AVGS(m2d, iop, iop->pip, d_time);
+}
+
+static inline void unupdate_m2d(struct io *iop, __u64 d_time)
+{
+	UNUPDATE_AVGS(m2d, iop, iop->pip, d_time);
+}
+
+static inline void update_d2c(struct io *iop, __u64 c_time)
+{
+	UPDATE_AVGS(d2c, iop, iop->pip, c_time);
+}
+
+static inline void update_blks(struct io *iop)
+{
+	__u64 nblks = iop->t.bytes >> 9;
+	avg_update(&all_avgs.blks, nblks);
+	avg_update(&iop->dip->avgs.blks, nblks);
+	if (iop->pip)
+		avg_update(&iop->pip->avgs.blks, nblks);
+}
+
+static inline struct rb_root *__get_root(struct d_info *dip, enum iop_type type)
+{
+	struct rb_root *roots = dip->heads;
+	return &roots[type];
+}
+
+static inline int dip_rb_ins(struct d_info *dip, struct io *iop)
+{
+	return rb_insert(__get_root(dip, iop->type), iop);
+}
+
+static inline void dip_rb_rem(struct io *iop)
+{
+	rb_erase(&iop->rb_node, __get_root(iop->dip, iop->type));
+}
+
+static inline void dip_rb_fe(struct d_info *dip, enum iop_type type,
+		             struct io *iop,
+			     void (*fnc)(struct io *iop, struct io *this),
+			     struct list_head *head)
+{
+	rb_foreach(__get_root(dip, type)->rb_node, iop, fnc, head);
+}
+
+static inline struct io *dip_rb_find_sec(struct d_info *dip,
+		                         enum iop_type type, __u64 sec)
+{
+	return rb_find_sec(__get_root(dip, type), sec);
+}
+
+static inline __u64 tdelta(__u64 from, __u64 to)
+{
+	return (from < to) ? (to - from) : 1;
+}
+
+static inline int type2c(enum iop_type type)
+{
+	int c;
+
+	switch (type) {
+	case IOP_Q: c = 'Q'; break;
+	case IOP_X: c = 'X'; break;
+	case IOP_A: c = 'A'; break;
+	case IOP_I: c = 'I'; break;
+	case IOP_M: c = 'M'; break;
+	case IOP_D: c = 'D'; break;
+	case IOP_C: c = 'C'; break;
+	case IOP_R: c = 'R'; break;
+	case IOP_G: c = 'G'; break;
+	default   : c = '?'; break;
+	}
+
+	return c;
+}
+
+static inline int histo_idx(__u64 nbytes)
+{
+	int idx = (nbytes >> 9) - 1;
+	return min(idx, N_HIST_BKTS-1);
+}
+
+static inline void update_q_histo(__u64 nbytes)
+{
+	q_histo[histo_idx(nbytes)]++;
+}
+
+static inline void update_d_histo(__u64 nbytes)
+{
+	d_histo[histo_idx(nbytes)]++;
+}
+
+static inline struct io *io_first_list(struct list_head *head)
+{
+	if (list_empty(head))
+		return NULL;
+
+	return list_entry(head->next, struct io, f_head);
+}
+
+static inline void __dump_iop(FILE *ofp, struct io *iop, int extra_nl)
+{
+	fprintf(ofp, "%5d.%09lu %3d,%-3d %c %10llu+%-4u\n",
+		(int)SECONDS(iop->t.time),
+		(unsigned long)NANO_SECONDS(iop->t.time),
+		MAJOR(iop->t.device), MINOR(iop->t.device), type2c(iop->type),
+		(unsigned long long)iop->t.sector, t_sec(&iop->t));
+	if (extra_nl) fprintf(ofp, "\n");
+}
+
+static inline void __dump_iop2(FILE *ofp, struct io *a_iop, struct io *l_iop)
+{
+	fprintf(ofp, "%5d.%09lu %3d,%-3d %c %10llu+%-4u <- (%3d,%-3d) %10llu\n",
+		(int)SECONDS(a_iop->t.time),
+		(unsigned long)NANO_SECONDS(a_iop->t.time),
+		MAJOR(a_iop->t.device), MINOR(a_iop->t.device),
+		type2c(a_iop->type), (unsigned long long)a_iop->t.sector,
+		t_sec(&a_iop->t), MAJOR(l_iop->t.device),
+		MINOR(l_iop->t.device), (unsigned long long)l_iop->t.sector);
+}
diff --git a/btt/iostat.c b/btt/iostat.c
new file mode 100644
index 0000000..8bcd2e5
--- /dev/null
+++ b/btt/iostat.c
@@ -0,0 +1,283 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include <stdio.h>
+#include <unistd.h>
+#include "globals.h"
+
+#define INC_STAT(dip, fld)						\
+	do {								\
+		(dip)->stats. fld ++;					\
+		(dip)->all_stats. fld ++;				\
+	} while (0)
+
+#define DEC_STAT(dip, fld)						\
+	do {								\
+		(dip)->stats. fld --;					\
+		(dip)->all_stats. fld --;				\
+	} while (0)
+
+#define ADD_STAT(dip, fld, val)						\
+	do {								\
+		__u64 __v = (val);					\
+		(dip)->stats. fld += __v;				\
+		(dip)->all_stats. fld += __v;				\
+	} while (0)
+
+#define SUB_STAT(dip, fld, val)						\
+	do {								\
+		__u64 __v = (val);					\
+		(dip)->stats. fld -= __v;				\
+		(dip)->all_stats. fld -= __v;				\
+	} while (0)
+
+__u64 last_start, iostat_last_stamp;
+__u64 iostat_interval = 1000000000;
+char *iostat_name = NULL;
+FILE *iostat_ofp = NULL;
+
+static void dump_hdr(void)
+{
+	fprintf(iostat_ofp, "Device:       rrqm/s   wrqm/s     r/s     w/s    "
+			    "rsec/s    wsec/s     rkB/s     wkB/s "
+			    "avgrq-sz avgqu-sz   await   svctm  %%util   Stamp\n");
+}
+
+static void update_tot_qusz(struct d_info *dip, double now)
+{
+	dip->stats.tot_qusz += ((now - dip->stats.last_qu_change) *
+						dip->stats.cur_qusz);
+	dip->all_stats.tot_qusz += ((now - dip->all_stats.last_qu_change) *
+						dip->all_stats.cur_qusz);
+
+	dip->stats.last_qu_change = dip->all_stats.last_qu_change = now;
+}
+
+static void update_idle_time(struct d_info *dip, double now, int force)
+{
+	if (dip->stats.cur_dev == 0 || force) {
+		dip->stats.idle_time += (now - dip->stats.last_dev_change);
+		dip->all_stats.idle_time +=
+				       (now - dip->all_stats.last_dev_change);
+	}
+	dip->stats.last_dev_change = dip->all_stats.last_dev_change = now;
+}
+
+void __dump_stats(__u64 stamp, int all, struct d_info *dip, struct stats_t *asp)
+{
+	char hdr[16];
+	struct stats *sp;
+	double dt, nios, avgrq_sz, p_util, nrqm, await, svctm;
+	double now = TO_SEC(stamp);
+
+	if (all) {
+		dt = (double)stamp / 1.0e9;
+		sp = &dip->all_stats;
+	} else {
+		dt = (double)(stamp-last_start) / 1.0e9;
+		sp = &dip->stats;
+	}
+
+	nios = (double)(sp->ios[0] + sp->ios[1]);
+	nrqm = (double)(sp->rqm[0] + sp->rqm[1]);
+	update_idle_time(dip, now, 1);
+	update_tot_qusz(dip, now);
+
+	if (nios > 0.0) {
+		avgrq_sz = (double)(sp->sec[0] + sp->sec[1]) / nios;
+		svctm = TO_MSEC(sp->svctm) / nios;
+	} else
+		avgrq_sz = svctm = 0.0;
+
+	await = ((nios + nrqm) > 0.0) ? TO_MSEC(sp->wait) / (nios+nrqm) : 0.0;
+	p_util = (sp->idle_time <= dt) ? 100.0 * (1.0 - (sp->idle_time / dt)) :
+	                                 0.0;
+
+	/*
+	 * For AWAIT: nios should be the same as number of inserts
+	 * and we add in nrqm (number of merges), which should give
+	 * us the total number of IOs sent to the block IO layer.
+	 */
+	fprintf(iostat_ofp, "%-11s ", make_dev_hdr(hdr, 11, dip, 1));
+	fprintf(iostat_ofp, "%8.2lf ", (double)sp->rqm[1] / dt);
+	fprintf(iostat_ofp, "%8.2lf ", (double)sp->rqm[0] / dt);
+	fprintf(iostat_ofp, "%7.2lf ", (double)sp->ios[1] / dt);
+	fprintf(iostat_ofp, "%7.2lf ", (double)sp->ios[0] / dt);
+	fprintf(iostat_ofp, "%9.2lf ", (double)sp->sec[1] / dt);
+	fprintf(iostat_ofp, "%9.2lf ", (double)sp->sec[0] / dt);
+	fprintf(iostat_ofp, "%9.2lf ", (double)(sp->sec[1] / 2) / dt);
+	fprintf(iostat_ofp, "%9.2lf ", (double)(sp->sec[0] / 2) / dt);
+	fprintf(iostat_ofp, "%8.2lf ", avgrq_sz);
+	fprintf(iostat_ofp, "%8.2lf ", (double)sp->tot_qusz / dt);
+	fprintf(iostat_ofp, "%7.2lf ", await);
+	fprintf(iostat_ofp, "%7.2lf ", svctm);
+	fprintf(iostat_ofp, "%6.2lf", p_util);
+	if (all)
+		fprintf(iostat_ofp, "%8s\n", "TOTAL");
+	else {
+		fprintf(iostat_ofp, "%8.2lf\n", TO_SEC(stamp));
+		sp->rqm[0] = sp->rqm[1] = 0;
+		sp->ios[0] = sp->ios[1] = 0;
+		sp->sec[0] = sp->sec[1] = 0;
+		sp->wait = sp->svctm = 0;
+
+		sp->tot_qusz = sp->idle_time = 0.0;
+	}
+
+	if (asp) {
+		int i;
+
+		asp->n += 1.0;
+		for (i = 0; i < 2; i++) {
+			asp->rqm_s[i] += ((double)sp->rqm[i] / dt);
+			asp->ios_s[i] += ((double)sp->ios[i] / dt);
+			asp->sec_s[i] += ((double)sp->sec[i] / dt);
+		}
+		asp->avgrq_sz += avgrq_sz;
+		asp->avgqu_sz += (double)sp->tot_qusz / dt;
+		asp->await += await;
+		asp->svctm += svctm;
+		asp->p_util += p_util;
+	}
+}
+
+static void __dump_stats_t(__u64 stamp, struct stats_t *asp, int all)
+{
+	if (asp->n < 2.0) return;	// What's the point?
+
+	fprintf(iostat_ofp, "%-11s ", "TOTAL");
+	fprintf(iostat_ofp, "%8.2lf ", asp->rqm_s[0]);
+	fprintf(iostat_ofp, "%8.2lf ", asp->rqm_s[1]);
+	fprintf(iostat_ofp, "%7.2lf ", asp->ios_s[0]);
+	fprintf(iostat_ofp, "%7.2lf ", asp->ios_s[1]);
+	fprintf(iostat_ofp, "%9.2lf ", asp->sec_s[0]);
+	fprintf(iostat_ofp, "%9.2lf ", asp->sec_s[1]);
+	fprintf(iostat_ofp, "%9.2lf ", asp->sec_s[0] / 2.0);
+	fprintf(iostat_ofp, "%9.2lf ", asp->sec_s[1] / 2.0);
+	fprintf(iostat_ofp, "%8.2lf ", asp->avgrq_sz / asp->n);
+	fprintf(iostat_ofp, "%8.2lf ", asp->avgqu_sz / asp->n);
+	fprintf(iostat_ofp, "%7.2lf ", asp->await / asp->n);
+	fprintf(iostat_ofp, "%7.2lf ", asp->svctm / asp->n);
+	fprintf(iostat_ofp, "%6.2lf", asp->p_util / asp->n);
+	if (all)
+		fprintf(iostat_ofp, "%8s\n", "TOTAL");
+	else 
+		fprintf(iostat_ofp, "%8.2lf\n", TO_SEC(stamp));
+}
+
+void iostat_init(void)
+{
+	last_start = (__u64)-1;
+	if (iostat_ofp)
+		dump_hdr();
+}
+
+void iostat_dump_stats(__u64 stamp, int all)
+{
+	struct d_info *dip;
+	struct stats_t as;
+
+	memset(&as, 0, sizeof(struct stats_t));
+	if (all)
+		dump_hdr();
+
+	if (devices == NULL) {
+		struct list_head *p;
+
+		__list_for_each(p, &all_devs) {
+			dip = list_entry(p, struct d_info, all_head);
+			__dump_stats(stamp, all, dip, &as);
+		}
+	} else {
+		int i;
+		unsigned int mjr, mnr;
+		char *p = devices;
+
+		while (p && ((i = sscanf(p, "%u,%u", &mjr, &mnr)) == 2)) {
+			dip = __dip_find((__u32)((mjr << MINORBITS) | mnr));
+			__dump_stats(stamp, all, dip, &as);
+
+			p = strchr(p, ';');
+			if (p) p++;
+		}
+	}
+
+	__dump_stats_t(stamp, &as, all);
+
+	if (!all && iostat_ofp)
+		fprintf(iostat_ofp, "\n");
+}
+
+void iostat_check_time(__u64 stamp)
+{
+	if (iostat_ofp) {
+		if (last_start == (__u64)-1)
+			last_start = stamp;
+		else if ((stamp - last_start) >= iostat_interval) {
+			iostat_dump_stats(stamp, 0);
+			last_start = stamp;
+		}
+
+		iostat_last_stamp = stamp;
+	}
+}
+
+void iostat_getrq(struct io *iop)
+{
+	update_tot_qusz(iop->dip, TO_SEC(iop->t.time));
+	INC_STAT(iop->dip, cur_qusz);
+}
+
+void iostat_merge(struct io *iop)
+{
+	INC_STAT(iop->dip, rqm[IOP_RW(iop)]);
+}
+
+void iostat_issue(struct io *iop)
+{
+	int rw = IOP_RW(iop);
+	struct d_info *dip = iop->dip;
+	double now = TO_SEC(iop->t.time);
+
+	INC_STAT(dip, ios[rw]);
+	ADD_STAT(dip, sec[rw], iop->t.bytes >> 9);
+
+	update_idle_time(dip, now, 0);
+	INC_STAT(dip, cur_dev);
+}
+
+void iostat_complete(struct io *q_iop, struct io *c_iop)
+{
+	double now = TO_SEC(c_iop->t.time);
+	struct d_info *dip = q_iop->dip;
+
+	if (q_iop->i_time != (__u64)-1)
+		ADD_STAT(c_iop->dip, wait, tdelta(q_iop->i_time,c_iop->t.time));
+	else if (q_iop->m_time != (__u64)-1)
+		ADD_STAT(c_iop->dip, wait, tdelta(q_iop->m_time,c_iop->t.time));
+
+	update_tot_qusz(dip, now);
+	DEC_STAT(dip, cur_qusz);
+
+	update_idle_time(dip, now, 0);
+	DEC_STAT(dip, cur_dev);
+
+	ADD_STAT(dip, svctm, tdelta(q_iop->t.time, c_iop->t.time));
+}
diff --git a/btt/latency.c b/btt/latency.c
new file mode 100644
index 0000000..e3ecc26
--- /dev/null
+++ b/btt/latency.c
@@ -0,0 +1,73 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include "globals.h"
+
+static inline void latency_out(FILE *ofp, __u64 tstamp, __u64 latency)
+{
+	if (ofp)
+		fprintf(ofp, "%lf %lf\n", TO_SEC(tstamp), TO_SEC(latency));
+}
+
+FILE *latency_open(__u32 device, char *name, char *post)
+{
+	FILE *fp = NULL;
+
+	if (name) {
+		int mjr, mnr;
+		char oname[strlen(name) + 32];
+
+		mjr = device >> MINORBITS;
+		mnr = device & ((1 << MINORBITS) - 1);
+
+		sprintf(oname, "%s_%03d,%03d_%s.dat", name, mjr, mnr, post);
+		if ((fp = my_fopen(oname, "w")) == NULL)
+			perror(oname);
+		else
+			add_file(fp, strdup(oname));
+	}
+
+	return fp;
+}
+
+void latency_alloc(struct d_info *dip)
+{
+	dip->q2d_ofp = latency_open(dip->device, q2d_name, "q2d");
+	dip->d2c_ofp = latency_open(dip->device, d2c_name, "d2c");
+	dip->q2c_ofp = latency_open(dip->device, q2c_name, "q2c");
+}
+
+void latency_q2d(struct d_info *dip, __u64 tstamp, __u64 latency)
+{
+	plat_x2c(dip->q2d_plat_handle, tstamp, latency);
+	latency_out(dip->q2d_ofp, tstamp, latency);
+}
+
+void latency_d2c(struct d_info *dip, __u64 tstamp, __u64 latency)
+{
+	plat_x2c(dip->d2c_plat_handle, tstamp, latency);
+	latency_out(dip->d2c_ofp, tstamp, latency);
+}
+
+void latency_q2c(struct d_info *dip, __u64 tstamp, __u64 latency)
+{
+	plat_x2c(dip->q2c_plat_handle, tstamp, latency);
+	latency_out(dip->q2c_ofp, tstamp, latency);
+}
diff --git a/btt/list.h b/btt/list.h
new file mode 100644
index 0000000..71c4a65
--- /dev/null
+++ b/btt/list.h
@@ -0,0 +1,239 @@
+#ifndef _LINUX_LIST_H
+#define _LINUX_LIST_H
+
+#include <stdio.h>
+
+#ifndef offsetof
+/**
+ * Get offset of a member
+ */
+#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
+#endif
+
+#ifndef container_of
+/**
+ * Casts a member of a structure out to the containing structure
+ * @param ptr        the pointer to the member.
+ * @param type       the type of the container struct this is embedded in.
+ * @param member     the name of the member within the struct.
+ *
+ */
+#define container_of(ptr, type, member) ({                      \
+        const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
+	        (type *)( (char *)__mptr - offsetof(type,member) );})
+#endif
+
+/*
+ * These are non-NULL pointers that will result in page faults
+ * under normal circumstances, used to verify that nobody uses
+ * non-initialized list entries.
+ */
+#define LIST_POISON1  ((void *) 0x00100100)
+#define LIST_POISON2  ((void *) 0x00200200)
+
+struct list_head {
+	struct list_head *next, *prev;
+};
+
+#define LIST_HEAD_INIT(name) { &(name), &(name) }
+
+#define LIST_HEAD(name) \
+	struct list_head name = LIST_HEAD_INIT(name)
+
+static inline void INIT_LIST_HEAD(struct list_head *list)
+{
+	list->next = list;
+	list->prev = list;
+}
+
+/*
+ * Insert a new entry between two known consecutive entries.
+ *
+ * This is only for internal list manipulation where we know
+ * the prev/next entries already!
+ */
+static inline void __list_add(struct list_head *new,
+			      struct list_head *prev,
+			      struct list_head *next)
+{
+	next->prev = new;
+	new->next = next;
+	new->prev = prev;
+	prev->next = new;
+}
+
+/**
+ * list_add - add a new entry
+ * @new: new entry to be added
+ * @head: list head to add it after
+ *
+ * Insert a new entry after the specified head.
+ * This is good for implementing stacks.
+ */
+static inline void list_add(struct list_head *new, struct list_head *head)
+{
+	__list_add(new, head, head->next);
+}
+
+/**
+ * list_add_tail - add a new entry
+ * @new: new entry to be added
+ * @head: list head to add it before
+ *
+ * Insert a new entry before the specified head.
+ * This is useful for implementing queues.
+ */
+static inline void list_add_tail(struct list_head *new, struct list_head *head)
+{
+	__list_add(new, head->prev, head);
+}
+
+/*
+ * Delete a list entry by making the prev/next entries
+ * point to each other.
+ *
+ * This is only for internal list manipulation where we know
+ * the prev/next entries already!
+ */
+static inline void __list_del(struct list_head * prev, struct list_head * next)
+{
+	next->prev = prev;
+	prev->next = next;
+}
+
+/**
+ * list_del - deletes entry from list.
+ * @entry: the element to delete from the list.
+ * Note: list_empty on entry does not return true after this, the entry is
+ * in an undefined state.
+ */
+static inline void list_del(struct list_head *entry)
+{
+	__list_del(entry->prev, entry->next);
+	entry->next = LIST_POISON1;
+	entry->prev = LIST_POISON2;
+}
+
+/**
+ * __list_for_each	-	iterate over a list
+ * @pos:	the &struct list_head to use as a loop counter.
+ * @head:	the head for your list.
+ *
+ * This variant differs from list_for_each() in that it's the
+ * simplest possible list iteration code, no prefetching is done.
+ * Use this for code that knows the list to be very short (empty
+ * or 1 entry) most of the time.
+ */
+#define __list_for_each(pos, head) \
+	for (pos = (head)->next; pos != (head); pos = pos->next)
+
+/**
+ * list_for_each_safe	-	iterate over a list safe against removal of list entry
+ * @pos:	the &struct list_head to use as a loop counter.
+ * @n:		another &struct list_head to use as temporary storage
+ * @head:	the head for your list.
+ */
+#define list_for_each_safe(pos, n, head) \
+	for (pos = (head)->next, n = pos->next; pos != (head); \
+		pos = n, n = pos->next)
+
+/**
+ * list_entry - get the struct for this entry
+ * @ptr:        the &struct list_head pointer.
+ * @type:       the type of the struct this is embedded in.
+ * @member:     the name of the list_struct within the struct.
+ */
+#define list_entry(ptr, type, member) \
+        container_of(ptr, type, member)
+
+static inline int list_len(struct list_head *head_p)
+{
+	struct list_head *p;
+	int n = 0;
+
+	__list_for_each(p, head_p) {
+		n++;
+	}
+
+	return n;
+}
+
+/**
+ * list_empty - tests whether a list is empty
+ * @head: the list to test.
+ */
+static inline int list_empty(const struct list_head *head)
+{
+	return head->next == head;
+}
+
+/**
+ * list_first - Returns first entry on list, or NULL if empty
+ * @head: the list
+ */
+static inline struct list_head *list_first(const struct list_head *head)
+{
+	return list_empty(head) ? NULL : head->next;
+}
+
+/**
+ * list_move_tail - delete from one list and add as another's tail
+ * @list: the entry to move
+ * @head: the head that will follow our entry
+ */
+static inline void list_move_tail(struct list_head *list,
+				  struct list_head *head)
+{
+        __list_del(list->prev, list->next);
+        list_add_tail(list, head);
+}
+
+static inline void __list_splice(struct list_head *list,
+                                 struct list_head *head)
+{
+        struct list_head *first = list->next;
+        struct list_head *last = list->prev;
+        struct list_head *at = head->next;
+
+        first->prev = head;
+        head->next = first;
+
+        last->next = at;
+        at->prev = last;
+}
+
+/**
+ *  * list_splice - join two lists
+ *   * @list: the new list to add.
+ *    * @head: the place to add it in the first list.
+ *     */
+static inline void list_splice(struct list_head *list, struct list_head *head)
+{
+        if (!list_empty(list))
+                __list_splice(list, head);
+}
+
+/**
+ * list_replace - replace old entry by new one
+ * @old : the element to be replaced
+ * @new : the new element to insert
+ *
+ * If @old was empty, it will be overwritten.
+ */
+static inline void list_replace(struct list_head *old,
+				struct list_head *new)
+{
+	new->next = old->next;
+	new->next->prev = new;
+	new->prev = old->prev;
+	new->prev->next = new;
+}
+
+static inline void list_replace_init(struct list_head *old,
+					struct list_head *new)
+{
+	list_replace(old, new);
+	INIT_LIST_HEAD(old);
+}
+
+#endif
diff --git a/btt/misc.c b/btt/misc.c
new file mode 100644
index 0000000..0cd2e98
--- /dev/null
+++ b/btt/misc.c
@@ -0,0 +1,177 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <fcntl.h>
+
+#define INLINE_DECLARE
+#include "globals.h"
+
+struct file_info {
+	struct list_head head;
+	FILE *ofp;
+	char *oname;
+};
+
+struct buf_info {
+	struct list_head head;
+	void *buf;
+};
+
+LIST_HEAD(files_to_clean);
+LIST_HEAD(all_bufs);
+
+static void clean_files(void)
+{
+	struct list_head *p, *q;
+
+	list_for_each_safe(p, q, &files_to_clean) {
+		struct stat buf;
+		struct file_info *fip = list_entry(p, struct file_info, head);
+
+		fclose(fip->ofp);
+		if (!stat(fip->oname, &buf) && (buf.st_size == 0))
+			unlink(fip->oname);
+
+		list_del(&fip->head);
+		free(fip->oname);
+		free(fip);
+	}
+}
+
+static void clean_bufs(void)
+{
+	struct list_head *p, *q;
+
+	list_for_each_safe(p, q, &all_bufs) {
+		struct buf_info *bip = list_entry(p, struct buf_info, head);
+
+		list_del(&bip->head);
+		free(bip->buf);
+		free(bip);
+	}
+}
+
+#ifndef _ANDROID_
+/*
+ * Due to the N(devs) parts of a lot of the output features provided
+ * by btt, it will fail opens on large(ish) systems. Here we try to
+ * keep bumping our open file limits, and if those fail, we return NULL.
+ *
+ * Root users will probably be OK with this, others...
+ */
+static int increase_limit(int resource, rlim_t increase)
+{
+	struct rlimit rlim;
+	int save_errno = errno;
+
+	if (!getrlimit(resource, &rlim)) {
+		rlim.rlim_cur += increase;
+		if (rlim.rlim_cur >= rlim.rlim_max)
+			rlim.rlim_max = rlim.rlim_cur + increase;
+
+		if (!setrlimit(resource, &rlim))
+			return 1;
+	}
+
+	errno = save_errno;
+	return 0;
+}
+#endif
+
+static int handle_open_failure(void)
+{
+	if (errno == ENFILE || errno == EMFILE)
+#ifndef _ANDROID_
+		return increase_limit(RLIMIT_NOFILE, 16);
+#else
+		return -ENOSYS;
+#endif
+
+	return 0;
+}
+
+void add_file(FILE *fp, char *oname)
+{
+	struct file_info *fip = malloc(sizeof(*fip));
+
+	fip->ofp = fp;
+	fip->oname = oname;
+	list_add_tail(&fip->head, &files_to_clean);
+}
+
+void add_buf(void *buf)
+{
+	struct buf_info *bip = malloc(sizeof(*bip));
+
+	bip->buf = buf;
+	list_add_tail(&bip->head, &all_bufs);
+}
+
+void clean_allocs(void)
+{
+	clean_files();
+	clean_bufs();
+}
+
+char *make_dev_hdr(char *pad, size_t len, struct d_info *dip, int add_parens)
+{
+	if (dip->devmap)
+		snprintf(pad, len, "%s", dip->devmap);
+	else if (add_parens)
+		snprintf(pad, len, "(%3d,%3d)",
+			 MAJOR(dip->device), MINOR(dip->device));
+	else
+		snprintf(pad, len, "%d,%d",
+			 MAJOR(dip->device), MINOR(dip->device));
+
+	return pad;
+}
+
+FILE *my_fopen(const char *path, const char *mode)
+{
+	FILE *fp;
+
+	do {
+		fp = fopen(path, mode);
+	} while (fp == NULL && handle_open_failure());
+
+	return fp;
+}
+
+int my_open(const char *path, int flags)
+{
+	int fd;
+
+	do {
+		fd = open(path, flags);
+	} while (fd < 0 && handle_open_failure());
+
+	return fd;
+}
+
+void dbg_ping(void) {}
diff --git a/btt/mmap.c b/btt/mmap.c
new file mode 100644
index 0000000..9d4eb3d
--- /dev/null
+++ b/btt/mmap.c
@@ -0,0 +1,150 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <sys/mman.h>
+#include <string.h>
+
+#include "blktrace.h"
+#include "globals.h"
+
+#define DEF_LEN	(16 * 1024 * 1024)
+
+static int fd;
+static void *cur_map = MAP_FAILED;
+static off_t cur_min, cur, cur_max, total_size;
+static size_t len;
+static struct blk_io_trace *next_t;
+static long pgsz;
+
+int data_is_native = -1;
+
+static inline size_t min_len(size_t a, size_t b)
+{
+	return a < b ? a : b;
+}
+
+static inline size_t convert_to_cpu(struct blk_io_trace *t,
+                                    struct blk_io_trace *tp,
+				    void **pdu)
+{
+	if (data_is_native == -1)
+		check_data_endianness(t->magic);
+
+	if (data_is_native)
+		memcpy(tp, t, sizeof(*tp));
+	else {
+		tp->magic	= be32_to_cpu(t->magic);
+		tp->sequence	= be32_to_cpu(t->sequence);
+		tp->time	= be64_to_cpu(t->time);
+		tp->sector	= be64_to_cpu(t->sector);
+		tp->bytes	= be32_to_cpu(t->bytes);
+		tp->action	= be32_to_cpu(t->action);
+		tp->pid		= be32_to_cpu(t->pid);
+		tp->device	= be32_to_cpu(t->device);
+		tp->cpu		= be16_to_cpu(t->cpu);
+		tp->error	= be16_to_cpu(t->error);
+		tp->pdu_len	= be16_to_cpu(t->pdu_len);
+	}
+
+	if (tp->pdu_len) {
+		*pdu = malloc(tp->pdu_len);
+		memcpy(*pdu, t+1, tp->pdu_len);
+	} else
+		*pdu = NULL;
+
+	return sizeof(*tp) + tp->pdu_len;
+}
+
+static int move_map(void)
+{
+	if (cur_map != MAP_FAILED)
+		munmap(cur_map, len);
+
+	cur_min = (cur & ~(pgsz-1));
+	len = min_len(DEF_LEN, total_size - cur_min);
+	if (len < sizeof(*next_t))
+		return 0;
+
+	cur_map = mmap(NULL, len, PROT_READ, MAP_SHARED, fd,
+		       cur_min);
+	if (cur_map == MAP_FAILED) {
+		perror("mmap");
+		exit(1);
+	}
+
+	cur_max = cur_min + len;
+	return (cur < cur_max);
+}
+
+void setup_ifile(char *fname)
+{
+	struct stat buf;
+
+	pgsz = sysconf(_SC_PAGESIZE);
+
+	fd = my_open(fname, O_RDONLY);
+	if (fd < 0) {
+		perror(fname);
+		exit(1);
+	}
+	if (fstat(fd, &buf) < 0) {
+		perror(fname);
+		exit(1);
+	}
+	total_size = buf.st_size;
+
+	if (!move_map())
+		exit(0);
+}
+
+void cleanup_ifile(void)
+{
+	if (cur_map != MAP_FAILED)
+		munmap(cur_map, len);
+	close(fd);
+}
+
+int next_trace(struct blk_io_trace *t, void **pdu)
+{
+	size_t this_len;
+
+	if ((cur + 512) > cur_max)
+		if (!move_map()) {
+			cleanup_ifile();
+			return 0;
+		}
+
+	next_t = cur_map + (cur - cur_min);
+	this_len = convert_to_cpu(next_t, t, pdu);
+	cur += this_len;
+
+	return 1;
+}
+
+double pct_done(void)
+{
+	return 100.0 * ((double)cur / (double)total_size);
+}
diff --git a/btt/output.c b/btt/output.c
new file mode 100644
index 0000000..8693de7
--- /dev/null
+++ b/btt/output.c
@@ -0,0 +1,891 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include <stdio.h>
+#include "globals.h"
+
+typedef struct avg_info *ai_dip_t;
+ai_dip_t dip_q2q_dm_avg(struct d_info *dip) { return &dip->avgs.q2q_dm; }
+ai_dip_t dip_q2a_dm_avg(struct d_info *dip) { return &dip->avgs.q2a_dm; }
+ai_dip_t dip_q2c_dm_avg(struct d_info *dip) { return &dip->avgs.q2c_dm; }
+
+ai_dip_t dip_q2q_avg(struct d_info *dip) { return &dip->avgs.q2q; }
+ai_dip_t dip_q2c_avg(struct d_info *dip) { return &dip->avgs.q2c; }
+ai_dip_t dip_q2a_avg(struct d_info *dip) { return &dip->avgs.q2a; }
+ai_dip_t dip_q2g_avg(struct d_info *dip) { return &dip->avgs.q2g; }
+ai_dip_t dip_s2g_avg(struct d_info *dip) { return &dip->avgs.s2g; }
+ai_dip_t dip_g2i_avg(struct d_info *dip) { return &dip->avgs.g2i; }
+ai_dip_t dip_q2m_avg(struct d_info *dip) { return &dip->avgs.q2m; }
+ai_dip_t dip_i2d_avg(struct d_info *dip) { return &dip->avgs.i2d; }
+ai_dip_t dip_d2c_avg(struct d_info *dip) { return &dip->avgs.d2c; }
+
+typedef struct avg_info *ai_pip_t;
+ai_pip_t pip_q2q_dm_avg(struct p_info *pip) { return &pip->avgs.q2q_dm; }
+ai_pip_t pip_q2a_dm_avg(struct p_info *pip) { return &pip->avgs.q2a_dm; }
+ai_pip_t pip_q2c_dm_avg(struct p_info *pip) { return &pip->avgs.q2c_dm; }
+
+ai_pip_t pip_q2q_avg(struct p_info *pip) { return &pip->avgs.q2q; }
+ai_pip_t pip_q2c_avg(struct p_info *pip) { return &pip->avgs.q2c; }
+ai_pip_t pip_q2a_avg(struct p_info *pip) { return &pip->avgs.q2a; }
+ai_pip_t pip_q2g_avg(struct p_info *pip) { return &pip->avgs.q2g; }
+ai_pip_t pip_s2g_avg(struct p_info *pip) { return &pip->avgs.s2g; }
+ai_pip_t pip_g2i_avg(struct p_info *pip) { return &pip->avgs.g2i; }
+ai_pip_t pip_q2m_avg(struct p_info *pip) { return &pip->avgs.q2m; }
+ai_pip_t pip_i2d_avg(struct p_info *pip) { return &pip->avgs.i2d; }
+ai_pip_t pip_d2c_avg(struct p_info *pip) { return &pip->avgs.d2c; }
+
+void output_section_hdr(FILE *ofp, char *hdr)
+{
+	fprintf(ofp, "==================== ");
+	fprintf(ofp, "%s", hdr);
+	fprintf(ofp, " ====================\n\n");
+}
+
+void output_hdr(FILE *ofp, char *hdr)
+{
+	fprintf(ofp, "%15s %13s %13s %13s %11s\n",
+	        hdr, "MIN", "AVG", "MAX", "N" );
+	fprintf(ofp, "--------------- ------------- ------------- ------------- -----------\n");
+}
+
+void __output_avg(FILE *ofp, char *hdr, struct avg_info *ap, int do_easy)
+{
+	if (ap->n > 0) {
+		ap->avg = BIT_TIME(ap->total) / (double)ap->n;
+		fprintf(ofp, "%-15s %13.9f %13.9f %13.9f %11d\n", hdr,
+			BIT_TIME(ap->min), ap->avg, BIT_TIME(ap->max), ap->n);
+
+		if (do_easy && easy_parse_avgs) {
+			fprintf(xavgs_ofp,
+				"%s %.9lf %.9lf %.9lf %d\n",
+				hdr, BIT_TIME(ap->min), ap->avg,
+						BIT_TIME(ap->max), ap->n);
+		}
+	}
+}
+
+static inline char *avg2string(struct avg_info *ap, char *string)
+{
+	if (ap->n > 0)
+		sprintf(string, "%13.9f", ap->avg);
+	else
+		sprintf(string, " ");
+	return string;
+}
+
+struct __oda {
+	FILE *ofp;
+	ai_dip_t (*func)(struct d_info *);
+};
+void __output_dip_avg(struct d_info *dip, void *arg)
+{
+	struct __oda *odap = arg;
+	ai_dip_t ap = odap->func(dip);
+	if (ap->n > 0) {
+		char dev_info[15];
+		ap->avg = BIT_TIME(ap->total) / (double)ap->n;
+		__output_avg(odap->ofp, make_dev_hdr(dev_info, 15, dip, 1),
+				ap, 0);
+	}
+}
+
+void output_dip_avg(FILE *ofp, char *hdr, ai_dip_t (*func)(struct d_info *))
+{
+	struct __oda oda = { .ofp = ofp, .func = func};
+	output_hdr(ofp, hdr);
+	dip_foreach_out(__output_dip_avg, &oda);
+	fprintf(ofp, "\n");
+}
+
+struct __q2d {
+	FILE *ofp;
+	void *q2d_all;
+	int n;
+};
+void __output_q2d_histo(struct d_info *dip, void *arg)
+{
+	struct __q2d *q2dp = arg;
+
+	if (q2d_ok(dip->q2d_priv)) {
+		char dev_info[15];
+		FILE *ofp = q2dp->ofp;
+
+		fprintf(q2dp->ofp, "%10s | ",
+					make_dev_hdr(dev_info, 15, dip, 1));
+		q2d_display(ofp, dip->q2d_priv);
+		q2d_acc(q2dp->q2d_all, dip->q2d_priv);
+		q2dp->n++;
+	}
+}
+
+void output_q2d_histo(FILE *ofp)
+{
+	struct __q2d __q2d = {
+		.ofp = ofp,
+		.q2d_all = q2d_alloc(),
+		.n = 0
+	};
+
+	fprintf(ofp, "%10s | ", "DEV");
+	q2d_display_header(ofp);
+	fprintf(ofp, "--------- | ");
+	q2d_display_dashes(ofp);
+	dip_foreach_out(__output_q2d_histo, &__q2d);
+
+	if (__q2d.n) {
+		fprintf(ofp, "========== | ");
+		q2d_display_dashes(ofp);
+		fprintf(ofp, "%10s | ", "AVG");
+		q2d_display(ofp, __q2d.q2d_all);
+		fprintf(ofp, "\n");
+	}
+
+	q2d_free(__q2d.q2d_all);
+}
+
+int n_merges = 0;
+struct {
+	unsigned long long nq, nd, blkmin, blkmax, total;
+} merge_data;
+void __output_dip_merge_ratio(struct d_info *dip, void *arg)
+{
+	double blks_avg;
+	char dev_info[15];
+	double ratio, q2c_n, d2c_n;
+
+	if (dip->n_qs == 0 || dip->n_ds == 0)
+		return;
+	else if (dip->n_qs < dip->n_ds)
+		dip->n_qs = dip->n_ds;
+
+	q2c_n = dip->n_qs;
+	d2c_n = dip->n_ds;
+	if (q2c_n > 0.0 && d2c_n > 0.0) {
+		if (q2c_n < d2c_n)
+			ratio = 1.0;
+		else
+			ratio = q2c_n / d2c_n;
+		blks_avg = (double)dip->avgs.blks.total / d2c_n;
+		fprintf((FILE *)arg,
+			"%10s | %8llu %8llu %7.1lf | %8llu %8llu %8llu %8llu\n",
+			make_dev_hdr(dev_info, 15, dip, 1),
+			(unsigned long long)dip->n_qs,
+			(unsigned long long)dip->n_ds,
+			ratio,
+			(unsigned long long)dip->avgs.blks.min,
+			(unsigned long long)blks_avg,
+			(unsigned long long)dip->avgs.blks.max,
+			(unsigned long long)dip->avgs.blks.total);
+
+		if (easy_parse_avgs) {
+			fprintf(xavgs_ofp,
+				"DMI %s %llu %llu %.9lf %llu %llu %llu %llu\n",
+				make_dev_hdr(dev_info, 15, dip, 0),
+				(unsigned long long)dip->n_qs,
+				(unsigned long long)dip->n_ds,
+				ratio,
+				(unsigned long long)dip->avgs.blks.min,
+				(unsigned long long)blks_avg,
+				(unsigned long long)dip->avgs.blks.max,
+				(unsigned long long)dip->avgs.blks.total);
+		}
+
+		if (n_merges++ == 0) {
+			merge_data.blkmin = dip->avgs.blks.min;
+			merge_data.blkmax = dip->avgs.blks.max;
+		}
+
+		merge_data.nq += dip->n_qs;
+		merge_data.nd += dip->n_ds;
+		merge_data.total += dip->avgs.blks.total;
+		if (dip->avgs.blks.min < merge_data.blkmin)
+			merge_data.blkmin = dip->avgs.blks.min;
+		if (dip->avgs.blks.max > merge_data.blkmax)
+			merge_data.blkmax = dip->avgs.blks.max;
+	}
+}
+
+void output_dip_merge_ratio(FILE *ofp)
+{
+	fprintf(ofp, "%10s | %8s %8s %7s | %8s %8s %8s %8s\n", "DEV", "#Q", "#D", "Ratio", "BLKmin", "BLKavg", "BLKmax", "Total");
+	fprintf(ofp, "---------- | -------- -------- ------- | -------- -------- -------- --------\n");
+	dip_foreach_out(__output_dip_merge_ratio, ofp);
+	if (n_merges > 1) {
+		fprintf(ofp, "---------- | -------- -------- ------- | -------- -------- -------- --------\n");
+		fprintf(ofp, "%10s | %8s %8s %7s | %8s %8s %8s %8s\n", "DEV", "#Q", "#D", "Ratio", "BLKmin", "BLKavg", "BLKmax", "Total");
+		fprintf((FILE *)ofp,
+			"%10s | %8llu %8llu %7.1lf | %8llu %8llu %8llu %8llu\n",
+			"TOTAL", merge_data.nq, merge_data.nd,
+			(float)merge_data.nq / (float)merge_data.nd,
+			merge_data.blkmin,
+			merge_data.total / merge_data.nd,
+			merge_data.blkmax, merge_data.total);
+	}
+	fprintf(ofp, "\n");
+}
+
+struct __ohead_data {
+	__u64 total;
+	int n;
+};
+
+struct ohead_data {
+	FILE *ofp;
+	struct __ohead_data q2g, g2i, q2m, i2d, d2c, q2c;
+};
+
+#define __update_odp(odp, dip, fld)					\
+	do {								\
+		(odp)-> fld .total += dip->avgs. fld . total;		\
+		(odp)-> fld .n     += dip->avgs. fld . n;		\
+	} while (0)
+
+void __output_dip_prep_ohead(struct d_info *dip, void *arg)
+{
+	if (dip->avgs.q2c.n > 0 && dip->avgs.q2c.total > 0) {
+		char dev_info[15];
+		struct ohead_data *odp = arg;
+		double q2c_total = (double)(dip->avgs.q2c.total);
+
+		fprintf(odp->ofp,
+			"%10s | %8.4lf%% %8.4lf%% %8.4lf%% %8.4lf%% %8.4lf%%\n",
+			make_dev_hdr(dev_info, 15, dip, 1),
+			100.0 * (double)(dip->avgs.q2g.total) / q2c_total,
+			100.0 * (double)(dip->avgs.g2i.total) / q2c_total,
+			100.0 * (double)(dip->avgs.q2m.total) / q2c_total,
+			100.0 * (double)(dip->avgs.i2d.total) / q2c_total,
+			100.0 * (double)(dip->avgs.d2c.total) / q2c_total);
+
+		__update_odp(odp, dip, q2g);
+		__update_odp(odp, dip, g2i);
+		__update_odp(odp, dip, q2m);
+		__update_odp(odp, dip, i2d);
+		__update_odp(odp, dip, d2c);
+		__update_odp(odp, dip, q2c);
+	}
+}
+
+#define OD_AVG(od, fld, q2c)						\
+	(od. fld .n == 0) ? (double)0.0 :				\
+		(100.0 * ((double)((od). fld . total) / q2c))
+
+void output_dip_prep_ohead(FILE *ofp)
+{
+	double q2c;
+	struct ohead_data od;
+
+	memset(&od, 0, sizeof(od));
+	od.ofp = ofp;
+
+	fprintf(ofp, "%10s | %9s %9s %9s %9s %9s\n",
+				"DEV", "Q2G", "G2I", "Q2M", "I2D", "D2C");
+	fprintf(ofp, "---------- | --------- --------- --------- --------- ---------\n");
+	dip_foreach_out(__output_dip_prep_ohead, &od);
+
+	if (od.q2g.n == 0 && od.g2i.n == 0 && od.q2m.n == 0 &&
+						od.i2d.n == 0 && od.d2c.n == 0)
+		goto out;
+
+	q2c = od.q2c.total;
+	fprintf(ofp, "---------- | --------- --------- --------- --------- ---------\n");
+	fprintf(ofp, "%10s | %8.4lf%% %8.4lf%% %8.4lf%% %8.4lf%% %8.4lf%%\n", "Overall",
+			OD_AVG(od, q2g, q2c), OD_AVG(od, g2i, q2c),
+			OD_AVG(od, q2m, q2c), OD_AVG(od, i2d, q2c),
+			OD_AVG(od, d2c, q2c));
+
+out:
+	fprintf(ofp, "\n");
+}
+
+struct seek_mode_info {
+	struct seek_mode_info *next;
+	long long mode;
+	int nseeks;
+};
+struct o_seek_info {
+	long long nseeks, median;
+	double mean;
+	struct seek_mode_info *head;
+} seek_info;
+int n_seeks;
+
+void output_seek_mode_info(FILE *ofp, struct o_seek_info *sip)
+{
+	struct seek_mode_info *p, *this, *new_list = NULL;
+
+	while ((this = sip->head) != NULL) {
+		sip->head = this->next;
+		this->next = NULL;
+
+		if (new_list == NULL || this->nseeks > new_list->nseeks)
+			new_list = this;
+		else if (this->nseeks == new_list->nseeks) {
+			for (p = new_list; p != NULL; p = p->next)
+				if (p->mode == this->mode)
+					break;
+
+			if (p)
+				this->nseeks += p->nseeks;
+			else
+				this->next = new_list;
+			new_list = this;
+		}
+	}
+
+	fprintf(ofp, "%10s | %15lld %15.1lf %15lld | %lld(%d)",
+	        "Average", sip->nseeks, sip->mean / sip->nseeks,
+		sip->median / sip->nseeks, new_list->mode, new_list->nseeks);
+
+	if (new_list->next) {
+		int i = 0;
+		for (p = new_list->next; p != NULL; p = p->next)
+			i++;
+		fprintf(ofp, "\n%10s   %15s %15s %15s   ...(%d more)\n", "", "", "", "", i);
+	}
+}
+
+void add_seek_mode_info(struct o_seek_info *sip, struct mode *mp)
+{
+	int i;
+	long long *lp = mp->modes;
+	struct seek_mode_info *smip;
+
+	n_seeks++;
+	for (i = 0; i < mp->nmds; i++, lp++) {
+		for (smip = sip->head; smip; smip = smip->next) {
+			if (smip->mode == *lp) {
+				smip->nseeks += mp->most_seeks;
+				break;
+			}
+		}
+		if (!smip) {
+			struct seek_mode_info *new = malloc(sizeof(*new));
+
+			new->next = sip->head;
+			sip->head = new;
+			new->mode = *lp;
+			new->nseeks = mp->most_seeks;
+
+			add_buf(new);
+		}
+	}
+}
+
+static void do_output_dip_seek_info(struct d_info *dip, FILE *ofp, int is_q2q)
+{
+	double mean;
+	int i, nmodes;
+	long long nseeks;
+	char dev_info[15];
+	long long median;
+	struct mode m;
+	void *handle = is_q2q ? dip->q2q_handle : dip->seek_handle;
+
+	nseeks = seeki_nseeks(handle);
+	if (nseeks > 0) {
+		mean = seeki_mean(handle);
+		median = seeki_median(handle);
+		nmodes = seeki_mode(handle, &m);
+
+		fprintf(ofp, "%10s | %15lld %15.1lf %15lld | %lld(%d)",
+			make_dev_hdr(dev_info, 15, dip, 1), nseeks, mean,
+			median, nmodes > 0 ? m.modes[0] : 0, m.most_seeks);
+		if (nmodes > 2)
+			fprintf(ofp, "\n%10s   %15s %15s %15s   ...(%d more)\n", "", "", "", "", nmodes-1);
+		else  {
+			for (i = 1; i < nmodes; i++)
+				fprintf(ofp, " %lld", m.modes[i]);
+			fprintf(ofp, "\n");
+		}
+
+		if (easy_parse_avgs) {
+			char *rec = is_q2q ? "QSK" : "DSK";
+			fprintf(xavgs_ofp,
+				"%s %s %lld %.9lf %lld %lld %d",
+				rec, make_dev_hdr(dev_info, 15, dip, 0),
+				nseeks, mean, median,
+				nmodes > 0 ? m.modes[0] : 0, m.most_seeks);
+				for (i = 1; i < nmodes; i++)
+					fprintf(xavgs_ofp, " %lld", m.modes[i]);
+				fprintf(xavgs_ofp, "\n");
+		}
+
+		seek_info.nseeks += nseeks;
+		seek_info.mean += (nseeks * mean);
+		seek_info.median += (nseeks * median);
+		add_seek_mode_info(&seek_info, &m);
+		free(m.modes);
+	}
+}
+
+void __output_dip_seek_info(struct d_info *dip, void *arg)
+{
+	do_output_dip_seek_info(dip, (FILE *)arg, 0);
+}
+
+void __output_dip_q2q_seek_info(struct d_info *dip, void *arg)
+{
+	do_output_dip_seek_info(dip, (FILE *)arg, 1);
+}
+
+void output_dip_seek_info(FILE *ofp)
+{
+	n_seeks = 1;
+	memset(&seek_info, 0, sizeof(seek_info));
+
+	fprintf(ofp, "%10s | %15s %15s %15s | %-15s\n", "DEV", "NSEEKS",
+			"MEAN", "MEDIAN", "MODE");
+	fprintf(ofp, "---------- | --------------- --------------- --------------- | ---------------\n");
+	dip_foreach_out(__output_dip_seek_info, ofp);
+	if (n_seeks > 1) {
+		fprintf(ofp, "---------- | --------------- --------------- --------------- | ---------------\n");
+		fprintf(ofp, "%10s | %15s %15s %15s | %-15s\n",
+		        "Overall", "NSEEKS", "MEAN", "MEDIAN", "MODE");
+		output_seek_mode_info(ofp, &seek_info);
+		fprintf(ofp, "\n");
+	}
+	fprintf(ofp, "\n");
+}
+
+void output_dip_q2q_seek_info(FILE *ofp)
+{
+	n_seeks = 1;
+	memset(&seek_info, 0, sizeof(seek_info));
+
+	fprintf(ofp, "%10s | %15s %15s %15s | %-15s\n", "DEV", "NSEEKS",
+			"MEAN", "MEDIAN", "MODE");
+	fprintf(ofp, "---------- | --------------- --------------- --------------- | ---------------\n");
+	dip_foreach_out(__output_dip_q2q_seek_info, ofp);
+	if (n_seeks > 1) {
+		fprintf(ofp, "---------- | --------------- --------------- --------------- | ---------------\n");
+		fprintf(ofp, "%10s | %15s %15s %15s | %-15s\n",
+		        "Overall", "NSEEKS", "MEAN", "MEDIAN", "MODE");
+		output_seek_mode_info(ofp, &seek_info);
+		fprintf(ofp, "\n");
+	}
+	fprintf(ofp, "\n");
+}
+
+struct __opa {
+	FILE *ofp;
+	ai_pip_t (*func)(struct p_info *);
+};
+
+void __output_pip_avg(struct p_info *pip, void *arg)
+{
+	struct __opa *opap = arg;
+	ai_pip_t ap = opap->func(pip);
+
+	if (ap->n > 0) {
+		char proc_name[15];
+		snprintf(proc_name, 15, "%s", pip->name);
+
+		ap->avg = BIT_TIME(ap->total) / (double)ap->n;
+		__output_avg(opap->ofp, proc_name, ap, 0);
+	}
+}
+
+void output_pip_avg(FILE *ofp, char *hdr, ai_pip_t (*func)(struct p_info *))
+{
+	struct __opa opa = { .ofp = ofp, .func = func };
+
+	output_hdr(ofp, hdr);
+	pip_foreach_out(__output_pip_avg, &opa);
+	fprintf(ofp, "\n");
+}
+
+int n_plugs;
+struct plug_info {
+	long n_plugs, n_unplugs_t;
+	double t_percent;
+} plug_info;
+
+void __dip_output_plug(struct d_info *dip, void *arg)
+{
+	char dev_info[15];
+	FILE *ofp = arg;
+	double delta, pct;
+
+	if (dip->is_plugged)
+		dip_unplug(dip->device, dip->end_time, 0);
+	if ((dip->nplugs + dip->nplugs_t) > 0) {
+		delta = dip->end_time - dip->start_time;
+		pct = 100.0 * (dip->plugged_time / delta);
+
+		fprintf(ofp, "%10s | %10d(%10d) | %13.9lf%%\n",
+			make_dev_hdr(dev_info, 15, dip, 1),
+			dip->nplugs, dip->nplugs_t, pct);
+
+		if (easy_parse_avgs) {
+			fprintf(xavgs_ofp,
+				"PLG %s %d %d %.9lf\n",
+				make_dev_hdr(dev_info, 15, dip, 0),
+				dip->nplugs, dip->nplugs_t, pct);
+		}
+
+		n_plugs++;
+		plug_info.n_plugs += dip->nplugs;
+		plug_info.n_unplugs_t += dip->nplugs_t;
+		plug_info.t_percent += pct;
+	}
+}
+
+void __dip_output_plug_all(FILE *ofp, struct plug_info *p)
+{
+	fprintf(ofp, "---------- | ---------- ----------  | ----------------\n");
+	fprintf(ofp, "%10s | %10s %10s  | %s\n",
+	        "Overall", "# Plugs", "# Timer Us", "% Time Q Plugged");
+	fprintf(ofp, "%10s | %10ld(%10ld) | %13.9lf%%\n", "Average",
+	        p->n_plugs / n_plugs, p->n_unplugs_t / n_plugs,
+		p->t_percent / n_plugs);
+
+}
+
+__u64 n_nios_uplugs, n_nios_uplugs_t;
+struct nios_plug_info {
+	__u64 tot_nios_up, tot_nios_up_t;
+} nios_plug_info;
+
+void __dip_output_plug_nios(struct d_info *dip, void *arg)
+{
+	char dev_info[15];
+	FILE *ofp = arg;
+	double a_nios_uplug = 0.0, a_nios_uplug_t = 0.0;
+
+	if (dip->nios_up && dip->nplugs) {
+		a_nios_uplug = (double)dip->nios_up / (double)dip->nplugs;
+		n_nios_uplugs += dip->nplugs;
+		nios_plug_info.tot_nios_up += dip->nios_up;
+	}
+	if (dip->nios_upt && dip->nplugs_t) {
+		a_nios_uplug_t = (double)dip->nios_upt / (double)dip->nplugs_t;
+		n_nios_uplugs_t += dip->nplugs_t;
+		nios_plug_info.tot_nios_up_t += dip->nios_upt;
+	}
+
+	fprintf(ofp, "%10s | %10.1lf   %10.1lf\n",
+		make_dev_hdr(dev_info, 15, dip, 1),
+		a_nios_uplug, a_nios_uplug_t);
+
+	if (easy_parse_avgs) {
+		fprintf(xavgs_ofp,
+			"UPG %s %.9lf %.9lf\n",
+			make_dev_hdr(dev_info, 15, dip, 0),
+			a_nios_uplug, a_nios_uplug_t);
+	}
+}
+
+void __dip_output_uplug_all(FILE *ofp, struct nios_plug_info *p)
+{
+	double ios_unp = 0.0, ios_unp_to = 0.0;
+
+	if (n_nios_uplugs)
+		ios_unp = (double)p->tot_nios_up / (double)n_nios_uplugs;
+	if (n_nios_uplugs_t)
+		ios_unp_to = (double)p->tot_nios_up_t / (double)n_nios_uplugs_t;
+
+	fprintf(ofp, "---------- | ----------   ----------\n");
+	fprintf(ofp, "%10s | %10s   %10s\n",
+		"Overall", "IOs/Unp", "IOs/Unp(to)");
+	fprintf(ofp, "%10s | %10.1lf   %10.1lf\n",
+		"Average", ios_unp, ios_unp_to);
+}
+
+void output_plug_info(FILE *ofp)
+{
+	fprintf(ofp, "%10s | %10s %10s  | %s\n",
+	        "DEV", "# Plugs", "# Timer Us", "% Time Q Plugged");
+	fprintf(ofp, "---------- | ---------- ----------  | ----------------\n");
+	dip_foreach_out(__dip_output_plug, ofp);
+	if (n_plugs > 1)
+		__dip_output_plug_all(ofp, &plug_info);
+	fprintf(ofp, "\n");
+
+	fprintf(ofp, "%10s | %10s   %10s\n",
+		"DEV", "IOs/Unp", "IOs/Unp(to)");
+	fprintf(ofp, "---------- | ----------   ----------\n");
+	dip_foreach_out(__dip_output_plug_nios, ofp);
+	if (n_nios_uplugs || n_nios_uplugs_t)
+		__dip_output_uplug_all(ofp, &nios_plug_info);
+	fprintf(ofp, "\n");
+}
+
+int n_actQs;
+struct actQ_info {
+	__u64 t_qs;
+	__u64 t_act_qs;
+} actQ_info;
+
+void __dip_output_actQ(struct d_info *dip, void *arg)
+{
+	if (dip->n_qs > 0 && !remapper_dev(dip->device)) {
+		char dev_info[15];
+		double a_actQs = (double)dip->t_act_q / (double)dip->n_qs;
+
+		fprintf((FILE *)arg, "%10s | %13.1lf\n",
+			make_dev_hdr(dev_info, 15, dip, 1), a_actQs);
+
+		if (easy_parse_avgs) {
+			fprintf(xavgs_ofp,
+				"ARQ %s %.9lf\n",
+				make_dev_hdr(dev_info, 15, dip, 0), a_actQs);
+		}
+
+		n_actQs++;
+		actQ_info.t_qs += dip->n_qs;
+		actQ_info.t_act_qs += dip->t_act_q;
+	}
+}
+
+void __dip_output_actQ_all(FILE *ofp, struct actQ_info *p)
+{
+	fprintf(ofp, "---------- | -------------\n");
+	fprintf(ofp, "%10s | %13s\n", "Overall", "Avgs Reqs @ Q");
+	fprintf(ofp, "%10s | %13.1lf\n", "Average",
+		(double)p->t_act_qs / (double)p->t_qs);
+}
+
+void output_actQ_info(FILE *ofp)
+{
+	fprintf(ofp, "%10s | %13s\n", "DEV", "Avg Reqs @ Q");
+	fprintf(ofp, "---------- | -------------\n");
+	dip_foreach_out(__dip_output_actQ, ofp);
+	if (n_actQs > 1)
+		__dip_output_actQ_all(ofp, &actQ_info);
+	fprintf(ofp, "\n");
+}
+
+void output_histos(void)
+{
+	int i;
+	FILE *ofp;
+	char fname[256];
+
+	if (output_name == NULL) return;
+
+	sprintf(fname, "%s_qhist.dat", output_name);
+	ofp = my_fopen(fname, "w");
+	if (!ofp) {
+		perror(fname);
+		return;
+	}
+
+	fprintf(ofp, "# BTT histogram data\n");
+	fprintf(ofp, "# Q buckets\n");
+	for (i = 0; i < (N_HIST_BKTS-1); i++)
+		fprintf(ofp, "%4d %lld\n", (i+1), (long long)q_histo[i]);
+	fprintf(ofp, "\n# Q bucket for > %d\n%4d %lld\n", (int)N_HIST_BKTS-1,
+		N_HIST_BKTS-1, (long long)q_histo[N_HIST_BKTS-1]);
+	fclose(ofp);
+
+	sprintf(fname, "%s_dhist.dat", output_name);
+	ofp = my_fopen(fname, "w");
+	if (!ofp) {
+		perror(fname);
+		return;
+	}
+	fprintf(ofp, "# D buckets\n");
+	for (i = 0; i < (N_HIST_BKTS-1); i++)
+		fprintf(ofp, "%4d %lld\n", (i+1), (long long)d_histo[i]);
+	fprintf(ofp, "\n# D bucket for > %d\n%4d %lld\n", (int)N_HIST_BKTS-1,
+		N_HIST_BKTS-1, (long long)d_histo[N_HIST_BKTS-1]);
+	fclose(ofp);
+}
+
+int output_avgs(FILE *ofp)
+{
+	if (output_all_data) {
+		if (exes == NULL || *exes != '\0') {
+			output_section_hdr(ofp, "Per Process");
+			output_pip_avg(ofp, "Q2Qdm", pip_q2q_dm_avg);
+			output_pip_avg(ofp, "Q2Adm", pip_q2a_dm_avg);
+			output_pip_avg(ofp, "Q2Cdm", pip_q2c_dm_avg);
+			fprintf(ofp, "\n");
+
+			output_pip_avg(ofp, "Q2Q", pip_q2q_avg);
+			output_pip_avg(ofp, "Q2A", pip_q2a_avg);
+			output_pip_avg(ofp, "Q2G", pip_q2g_avg);
+			output_pip_avg(ofp, "S2G", pip_s2g_avg);
+			output_pip_avg(ofp, "G2I", pip_g2i_avg);
+			output_pip_avg(ofp, "Q2M", pip_q2m_avg);
+			output_pip_avg(ofp, "I2D", pip_i2d_avg);
+			output_pip_avg(ofp, "D2C", pip_d2c_avg);
+			output_pip_avg(ofp, "Q2C", pip_q2c_avg);
+		}
+
+		output_section_hdr(ofp, "Per Device");
+		output_dip_avg(ofp, "Q2Qdm", dip_q2q_dm_avg);
+		output_dip_avg(ofp, "Q2Adm", dip_q2a_dm_avg);
+		output_dip_avg(ofp, "Q2Cdm", dip_q2c_dm_avg);
+		fprintf(ofp, "\n");
+
+		output_dip_avg(ofp, "Q2Q", dip_q2q_avg);
+		output_dip_avg(ofp, "Q2A", dip_q2a_avg);
+		output_dip_avg(ofp, "Q2G", dip_q2g_avg);
+		output_dip_avg(ofp, "S2G", dip_s2g_avg);
+		output_dip_avg(ofp, "G2I", dip_g2i_avg);
+		output_dip_avg(ofp, "Q2M", dip_q2m_avg);
+		output_dip_avg(ofp, "I2D", dip_i2d_avg);
+		output_dip_avg(ofp, "D2C", dip_d2c_avg);
+		output_dip_avg(ofp, "Q2C", dip_q2c_avg);
+	}
+
+	output_section_hdr(ofp, "All Devices");
+	output_hdr(ofp, "ALL");
+	__output_avg(ofp, "Q2Qdm", &all_avgs.q2q_dm, 0);
+	__output_avg(ofp, "Q2Adm", &all_avgs.q2a_dm, 0);
+	__output_avg(ofp, "Q2Cdm", &all_avgs.q2c_dm, 0);
+	fprintf(ofp, "\n");
+
+	__output_avg(ofp, "Q2Q", &all_avgs.q2q, 1);
+	__output_avg(ofp, "Q2A", &all_avgs.q2a, 1);
+	__output_avg(ofp, "Q2G", &all_avgs.q2g, 1);
+	__output_avg(ofp, "S2G", &all_avgs.s2g, 1);
+	__output_avg(ofp, "G2I", &all_avgs.g2i, 1);
+	__output_avg(ofp, "Q2M", &all_avgs.q2m, 1);
+	__output_avg(ofp, "I2D", &all_avgs.i2d, 1);
+	__output_avg(ofp, "M2D", &all_avgs.m2d, 1);
+	__output_avg(ofp, "D2C", &all_avgs.d2c, 1);
+	__output_avg(ofp, "Q2C", &all_avgs.q2c, 1);
+	fprintf(ofp, "\n");
+
+	output_section_hdr(ofp, "Device Overhead");
+	output_dip_prep_ohead(ofp);
+
+	output_section_hdr(ofp, "Device Merge Information");
+	output_dip_merge_ratio(ofp);
+
+	output_section_hdr(ofp, "Device Q2Q Seek Information");
+	output_dip_q2q_seek_info(ofp);
+
+	output_section_hdr(ofp, "Device D2D Seek Information");
+	output_dip_seek_info(ofp);
+
+	output_section_hdr(ofp, "Plug Information");
+	output_plug_info(ofp);
+
+	output_section_hdr(ofp, "Active Requests At Q Information");
+	output_actQ_info(ofp);
+
+	output_histos();
+
+	if (output_all_data) {
+		output_section_hdr(ofp, "Q2D Histogram");
+		output_q2d_histo(ofp);
+	}
+
+	return 0;
+}
+
+void __output_ranges(FILE *ofp, struct list_head *head_p, float base)
+{
+	struct range_info *rip;
+	struct list_head *p;
+	float limit = base + 0.4;
+
+	__list_for_each(p, head_p) {
+		rip = list_entry(p, struct range_info, head);
+		fprintf(ofp, "%13.9lf %5.1f\n", BIT_TIME(rip->start), base);
+		fprintf(ofp, "%13.9lf %5.1f\n", BIT_TIME(rip->start), limit);
+		fprintf(ofp, "%13.9lf %5.1f\n", BIT_TIME(rip->end), limit);
+		fprintf(ofp, "%13.9lf %5.1f\n", BIT_TIME(rip->end), base);
+	}
+}
+
+int output_regions(FILE *ofp, char *header, struct region_info *reg,
+			  float base)
+{
+	if (list_len(&reg->qranges) == 0 && list_len(&reg->cranges) == 0)
+		return 0;
+
+	fprintf(ofp, "# %16s : q activity\n", header);
+	__output_ranges(ofp, &reg->qranges, base);
+	fprintf(ofp, "\n");
+
+	fprintf(ofp, "# %16s : c activity\n", header);
+	__output_ranges(ofp, &reg->cranges, base + 0.5);
+	fprintf(ofp, "\n");
+
+	return 1;
+}
+
+struct __od {
+	FILE *ofp;
+	float base;
+};
+void __output_dev(struct d_info *dip, void *arg)
+{
+	char header[128];
+	struct __od *odp = arg;
+
+	sprintf(header, "%d,%d", MAJOR(dip->device), MINOR(dip->device));
+	if (output_regions(odp->ofp, header, &dip->regions, odp->base))
+		odp->base += 1.0;
+}
+
+float output_devs(FILE *ofp, float base)
+{
+	struct __od od = { .ofp = ofp, .base = base };
+
+	fprintf(ofp, "# Per device\n" );
+	dip_foreach_out(__output_dev, &od);
+	return od.base;
+}
+
+static inline int exe_match(char *exe, char *name)
+{
+	return (exe == NULL) || (strstr(name, exe) != NULL);
+}
+
+struct __op {
+	FILE *ofp;
+	float base;
+};
+void __output_procs(struct p_info *pip, void *arg)
+{
+	struct __op *opp = arg;
+	output_regions(opp->ofp, pip->name, &pip->regions, opp->base);
+	opp->base += 1.0;
+}
+
+float output_procs(FILE *ofp, float base)
+{
+	struct __op op = { .ofp = ofp, .base = base };
+
+	fprintf(ofp, "# Per process\n" );
+	pip_foreach_out(__output_procs, &op);
+	return op.base;
+}
+
+int output_ranges(FILE *ofp)
+{
+	float base = 0.0;
+
+	fprintf(ofp, "# %s\n", "Total System");
+	if (output_regions(ofp, "Total System", &all_regions, base))
+		base += 1.0;
+
+	if (n_devs > 1)
+		base = output_devs(ofp, base);
+
+	base = output_procs(ofp, base);
+
+	return 0;
+}
diff --git a/btt/plat.c b/btt/plat.c
new file mode 100644
index 0000000..7a9bb2a
--- /dev/null
+++ b/btt/plat.c
@@ -0,0 +1,93 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * (C) Copyright 2008 Hewlett-Packard Development Company, L.P.
+ * 	Alan D. Brunelle <alan.brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include "globals.h"
+
+struct plat_info {
+	long nl;
+	FILE *fp;
+	double first_ts, last_ts, tl;
+};
+
+void *plat_alloc(char *str)
+{
+	char *oname;
+	struct plat_info *pp;
+
+	if (plat_freq <= 0.0) return NULL;
+
+	pp = malloc(sizeof(*pp));
+	pp->nl = 0;
+	pp->first_ts = pp->last_ts = pp->tl = -1.0;
+
+	oname = malloc(strlen(str) + 32);
+	sprintf(oname, "%s.dat", str);
+	if ((pp->fp = my_fopen(oname, "w")) == NULL) {
+		perror(oname);
+		return NULL;
+	}
+	add_file(pp->fp, oname);
+
+	return pp;
+}
+
+void plat_free(void *info)
+{
+	struct plat_info *pp = info;
+
+	if (pp == NULL) return;
+
+	if (pp->first_ts != -1.0) {
+		double delta = pp->last_ts - pp->first_ts;
+
+		fprintf(pp->fp, "%lf %lf\n",
+			pp->first_ts + (delta / 2), pp->tl / pp->nl);
+	}
+	free(info);
+}
+
+void plat_x2c(void *info, __u64 ts, __u64 latency)
+{
+	double now = TO_SEC(ts);
+	double lat = TO_SEC(latency);
+	struct plat_info *pp = info;
+
+	if (pp == NULL) return;
+
+	if (pp->first_ts == -1.0) {
+		pp->first_ts = pp->last_ts = now;
+		pp->nl = 1;
+		pp->tl = lat;
+	} else if ((now - pp->first_ts) >= plat_freq) {
+		double delta = pp->last_ts - pp->first_ts;
+
+		fprintf(pp->fp, "%lf %lf\n",
+			pp->first_ts + (delta / 2), pp->tl / pp->nl);
+
+		pp->first_ts = pp->last_ts = now;
+		pp->nl = 1;
+		pp->tl = lat;
+	} else {
+		pp->last_ts = now;
+		pp->nl += 1;
+		pp->tl += lat;
+	}
+}
diff --git a/btt/proc.c b/btt/proc.c
new file mode 100644
index 0000000..aac49cb
--- /dev/null
+++ b/btt/proc.c
@@ -0,0 +1,263 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include <string.h>
+
+#include "globals.h"
+
+struct pn_info {
+	struct rb_node rb_node;
+	struct p_info *pip;
+	union {
+		char *name;
+		__u32 pid;
+	}  u;
+};
+
+struct rb_root root_pid, root_name;
+
+static void __foreach(struct rb_node *n, void (*f)(struct p_info *, void *),
+			void *arg)
+{
+	if (n) {
+		__foreach(n->rb_left, f, arg);
+		f(rb_entry(n, struct pn_info, rb_node)->pip, arg);
+		__foreach(n->rb_right, f, arg);
+	}
+}
+
+static void __destroy(struct rb_node *n, int free_name, int free_pip)
+{
+	if (n) {
+		struct pn_info *pnp = rb_entry(n, struct pn_info, rb_node);
+
+		__destroy(n->rb_left, free_name, free_pip);
+		__destroy(n->rb_right, free_name, free_pip);
+
+		if (free_name)
+			free(pnp->u.name);
+		if (free_pip) {
+			free(pnp->pip->name);
+			region_exit(&pnp->pip->regions);
+			free(pnp->pip);
+		}
+		free(pnp);
+	}
+}
+
+struct p_info * __find_process_pid(__u32 pid)
+{
+	struct pn_info *this;
+	struct rb_node *n = root_pid.rb_node;
+
+	while (n) {
+		this = rb_entry(n, struct pn_info, rb_node);
+		if (pid < this->u.pid)
+			n = n->rb_left;
+		else if (pid > this->u.pid)
+			n = n->rb_right;
+		else
+			return this->pip;
+	}
+
+	return NULL;
+}
+
+struct p_info *__find_process_name(char *name)
+{
+	int cmp;
+	struct pn_info *this;
+	struct rb_node *n = root_name.rb_node;
+
+	while (n) {
+		this = rb_entry(n, struct pn_info, rb_node);
+		cmp = strcmp(name, this->u.name);
+		if (cmp < 0)
+			n = n->rb_left;
+		else if (cmp > 0)
+			n = n->rb_right;
+		else
+			return this->pip;
+	}
+
+	return NULL;
+}
+
+static void insert_pid(struct p_info *that, __u32 pid)
+{
+	struct pn_info *this;
+	struct rb_node *parent = NULL;
+	struct rb_node **p = &root_pid.rb_node;
+
+	while (*p) {
+		parent = *p;
+		this = rb_entry(parent, struct pn_info, rb_node);
+
+		if (pid < this->u.pid)
+			p = &(*p)->rb_left;
+		else if (pid > this->u.pid)
+			p = &(*p)->rb_right;
+		else
+			return;	// Already there
+	}
+
+	this = malloc(sizeof(struct pn_info));
+	this->u.pid = pid;
+	this->pip = that;
+
+	rb_link_node(&this->rb_node, parent, p);
+	rb_insert_color(&this->rb_node, &root_pid);
+}
+
+static void insert_name(struct p_info *that)
+{
+	int cmp;
+	struct pn_info *this;
+	struct rb_node *parent = NULL;
+	struct rb_node **p = &root_name.rb_node;
+
+	while (*p) {
+		parent = *p;
+		this = rb_entry(parent, struct pn_info, rb_node);
+		cmp = strcmp(that->name, this->u.name);
+
+		if (cmp < 0)
+			p = &(*p)->rb_left;
+		else if (cmp > 0)
+			p = &(*p)->rb_right;
+		else
+			return;	// Already there...
+	}
+
+	this = malloc(sizeof(struct pn_info));
+	this->u.name = strdup(that->name);
+	this->pip = that;
+
+	rb_link_node(&this->rb_node, parent, p);
+	rb_insert_color(&this->rb_node, &root_name);
+}
+
+static void insert(struct p_info *pip)
+{
+	insert_pid(pip, pip->pid);
+	insert_name(pip);
+}
+
+static inline struct p_info *pip_alloc(void)
+{
+	return memset(malloc(sizeof(struct p_info)), 0, sizeof(struct p_info));
+}
+
+struct p_info *find_process(__u32 pid, char *name)
+{
+	struct p_info *pip;
+
+	if (pid != ((__u32)-1)) {
+		if ((pip = __find_process_pid(pid)) != NULL)
+			return pip;
+		else if (name) {
+			pip = __find_process_name(name);
+
+			if (pip && pid != pip->pid) {
+				/*
+				 * This is a process with the same name
+				 * as another, but a different PID.
+				 *
+				 * We'll store a reference in the PID
+				 * tree...
+				 */
+				insert_pid(pip, pid);
+			}
+			return pip;
+		}
+
+		/*
+		 * We're here because we have a pid, and no name, but
+		 * we didn't find a process ...
+		 *
+		 * We'll craft one using the pid...
+		 */
+
+		name = alloca(256);
+		sprintf(name, "pid%09u", pid);
+		process_alloc(pid, name);
+		return __find_process_pid(pid);
+	}
+
+	return __find_process_name(name);
+}
+
+void process_alloc(__u32 pid, char *name)
+{
+	struct p_info *pip = find_process(pid, name);
+
+	if (pip == NULL) {
+		pip = pip_alloc();
+		pip->pid = pid;
+		region_init(&pip->regions);
+		pip->last_q = (__u64)-1;
+		pip->name = strdup(name);
+
+		insert(pip);
+	}
+}
+
+void pip_update_q(struct io *iop)
+{
+	if (iop->pip) {
+		if (remapper_dev(iop->dip->device))
+			update_lq(&iop->pip->last_q, &iop->pip->avgs.q2q_dm,
+								iop->t.time);
+		else
+			update_lq(&iop->pip->last_q, &iop->pip->avgs.q2q,
+								iop->t.time);
+		update_qregion(&iop->pip->regions, iop->t.time);
+	}
+}
+
+void pip_foreach_out(void (*f)(struct p_info *, void *), void *arg)
+{
+	if (exes == NULL)
+		__foreach(root_name.rb_node, f, arg);
+	else {
+		struct p_info *pip;
+		char *exe, *p, *next, *exes_save = strdup(exes);
+
+		p = exes_save;
+		while (exes_save != NULL) {
+			exe = exes_save;
+			if ((next = strchr(exes_save, ',')) != NULL) {
+				*next = '\0';
+				exes_save = next+1;
+			} else
+				exes_save = NULL;
+
+			pip = __find_process_name(exe);
+			if (pip)
+				f(pip, arg);
+		}
+	}
+}
+
+void pip_exit(void)
+{
+	__destroy(root_pid.rb_node, 0, 0);
+	__destroy(root_name.rb_node, 1, 1);
+}
diff --git a/btt/q2d.c b/btt/q2d.c
new file mode 100644
index 0000000..faeb712
--- /dev/null
+++ b/btt/q2d.c
@@ -0,0 +1,121 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * (C) Copyright 2007 Hewlett-Packard Development Company, L.P.
+ *
+ *  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
+ *
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "globals.h"
+
+#define Q2D_MAX_HISTO 9
+struct q2d_info {
+	unsigned long nhistos;
+	unsigned long histos[Q2D_MAX_HISTO + 1];
+};
+
+void q2d_histo_add(void *priv, __u64 q2d_in)
+{
+	int index;
+	struct q2d_info *q2dp = priv;
+	double q2d = BIT_TIME(q2d_in);
+	long msec = (long)(q2d / 0.001);
+
+	switch (msec) {
+	default:          index = 9; break;
+	case 500 ... 999: index = 8; break;
+	case 250 ... 499: index = 7; break;
+	case 100 ... 249: index = 6; break;
+	case  75 ...  99: index = 5; break;
+	case  50 ...  74: index = 4; break;
+	case  25 ...  49: index = 3; break;
+	case  10 ...  24: index = 2; break;
+	case   5 ...   9: index = 1; break;
+	case   0 ...   4: index = 0; break;
+	}
+
+	q2dp->histos[index]++;
+	q2dp->nhistos++;
+}
+
+void *q2d_alloc(void)
+{
+	struct q2d_info *q2dp = malloc(sizeof(*q2dp));
+
+	return memset(q2dp, 0, sizeof(*q2dp));
+}
+
+void q2d_free(void *priv)
+{
+	free(priv);
+}
+
+void q2d_display_header(FILE *fp)
+{
+	fprintf(fp, "%5s ", "<.005");
+	fprintf(fp, "%5s ", "<.010");
+	fprintf(fp, "%5s ", "<.025");
+	fprintf(fp, "%5s ", "<.050");
+	fprintf(fp, "%5s ", "<.075");
+	fprintf(fp, "%5s ", "<.100");
+	fprintf(fp, "%5s ", "<.250");
+	fprintf(fp, "%5s ", "<.500");
+	fprintf(fp, "%5s ", "< 1.0");
+	fprintf(fp, "%5s ", ">=1.0\n");
+}
+
+void q2d_display_dashes(FILE *fp)
+{
+	int i;
+
+	for (i = 0; i <= Q2D_MAX_HISTO; i++)
+		fprintf(fp, "===== ");
+	fprintf(fp, "\n");
+}
+
+void q2d_display(FILE *fp, void *priv)
+{
+	int i;
+	struct q2d_info *q2dp = priv;
+	double nh = (double)q2dp->nhistos;
+
+	for (i = 0; i <= Q2D_MAX_HISTO; i++) {
+		double p = 100.0 * (double)q2dp->histos[i] / nh;
+		fprintf(fp, "%5.1lf ", p);
+	}
+	fprintf(fp, "\n");
+}
+
+int q2d_ok(void *priv)
+{
+	struct q2d_info *q2dp = priv;
+
+	return q2dp && q2dp->nhistos > 0;
+}
+
+void q2d_acc(void *a1, void *a2)
+{
+	int i;
+	struct q2d_info *ap = a1;
+	struct q2d_info *tp = a2;
+
+	for (i = 0; i <= Q2D_MAX_HISTO; i++)
+		ap->histos[i] += tp->histos[i];
+	ap->nhistos += tp->nhistos;
+}
diff --git a/btt/seek.c b/btt/seek.c
new file mode 100644
index 0000000..4a03fbe
--- /dev/null
+++ b/btt/seek.c
@@ -0,0 +1,305 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include <float.h>
+#include "globals.h"
+
+struct seek_bkt {
+	struct rb_node rb_node;
+	long long sectors;
+	int nseeks;
+};
+
+/* Seeks per second */
+struct sps_bkt {
+	double t_start, t_last;
+	unsigned long nseeks;
+};
+
+struct seeki {
+	FILE *rfp, *wfp, *cfp, *sps_fp;
+	struct rb_root root;
+	struct sps_bkt sps;
+	long long tot_seeks;
+	double total_sectors;
+	long long last_start, last_end;
+};
+
+static FILE *seek_open(char *str, char rw)
+{
+	FILE *fp;
+	char *oname;
+
+	if (seek_name == NULL) return NULL;
+
+	oname = malloc(strlen(seek_name) + strlen(str) + 32);
+	sprintf(oname, "%s_%s_%c.dat", seek_name, str, rw);
+	if ((fp = my_fopen(oname, "w")) == NULL)
+		perror(oname);
+	else
+		add_file(fp, oname);
+
+	return fp;
+}
+
+static void __insert(struct rb_root *root, long long sectors)
+{
+	struct seek_bkt *sbp;
+	struct rb_node *parent = NULL;
+	struct rb_node **p = &root->rb_node;
+
+	while (*p) {
+		parent = *p;
+		sbp = rb_entry(parent, struct seek_bkt, rb_node);
+		if (sectors < sbp->sectors)
+			p = &(*p)->rb_left;
+		else if (sectors > sbp->sectors)
+			p = &(*p)->rb_right;
+		else {
+			sbp->nseeks++;
+			return;
+		}
+	}
+
+	sbp = malloc(sizeof(struct seek_bkt));
+	sbp->nseeks = 1;
+	sbp->sectors = sectors;
+
+	rb_link_node(&sbp->rb_node, parent, p);
+	rb_insert_color(&sbp->rb_node, root);
+}
+
+static void __destroy(struct rb_node *n)
+{
+	if (n) {
+		struct seek_bkt *sbp = rb_entry(n, struct seek_bkt, rb_node);
+
+		__destroy(n->rb_left);
+		__destroy(n->rb_right);
+		free(sbp);
+	}
+}
+
+static void sps_emit(struct seeki *sip)
+{
+	double tstamp, s_p_s;
+	struct sps_bkt *sps = &sip->sps;
+	double delta = sps->t_last - sps->t_start;
+
+	if ((sps->nseeks == 1) || (delta < DBL_EPSILON)) {
+		s_p_s = (double)(sps->nseeks);
+		tstamp = sps->t_start;
+	} else {
+
+		s_p_s = (double)(sps->nseeks) / delta;
+		tstamp = sps->t_start + (delta / 2);
+	}
+
+	fprintf(sip->sps_fp, "%15.9lf %.2lf\n", sps->t_start, s_p_s);
+
+	sps->t_start = 0;
+	sps->nseeks = 0;
+}
+
+static void sps_add(struct seeki *sip, double t)
+{
+	if (sip->sps_fp) {
+		struct sps_bkt *sps = &sip->sps;
+
+		if (sps->nseeks != 0 && ((t - sps->t_start) >= 1.0))
+			sps_emit(sip);
+
+		sps->t_last = t;
+		if (sps->nseeks == 0) {
+			sps->t_start = t;
+			sps->nseeks = 1;
+		} else
+			sps->nseeks++;
+	}
+}
+
+static int __median(struct rb_node *n, long long sofar, long long target,
+		    long long *rvp)
+{
+	struct seek_bkt *sbp;
+
+	sbp = rb_entry(n, struct seek_bkt, rb_node);
+	if ((sofar + sbp->nseeks) >= target) {
+		*rvp = sbp->sectors;
+		return 1;
+	}
+
+	if (n->rb_left && __median(n->rb_left, sofar, target, rvp))
+		return 1;
+
+	if (n->rb_right && __median(n->rb_right, sofar, target, rvp))
+		return 1;
+
+	return 0;
+
+}
+
+static void __mode(struct rb_node *n, struct mode *mp)
+{
+	struct seek_bkt *sbp;
+
+	if (n->rb_left)
+		__mode(n->rb_left, mp);
+	if (n->rb_right)
+		__mode(n->rb_right, mp);
+
+	sbp = rb_entry(n, struct seek_bkt, rb_node);
+	if (mp->modes == NULL) {
+		mp->modes = malloc(sizeof(long long));
+		mp->nmds = 0;
+	} else if (sbp->nseeks > mp->most_seeks)
+		mp->nmds = 0;
+	else if (sbp->nseeks == mp->most_seeks)
+		mp->modes = realloc(mp->modes, (mp->nmds + 1) *
+							sizeof(long long));
+	else
+		return;
+
+	mp->most_seeks = sbp->nseeks;
+	mp->modes[mp->nmds++] = sbp->sectors;
+}
+
+long long seek_dist(struct seeki *sip, struct io *iop)
+{
+	long long dist;
+	long long start = BIT_START(iop), end = BIT_END(iop);
+
+	if (seek_absolute)
+		dist = start - sip->last_end;
+	else {
+		/* Some overlap means no seek */
+		if (((sip->last_start <= start) && (start <= sip->last_end)) ||
+		    ((sip->last_start <= end) && (end <= sip->last_end)))
+			dist = 0;
+		else if (start > sip->last_end)
+			dist = start - sip->last_end;
+		else
+			dist = start - sip->last_start;
+
+	}
+
+	sip->last_start = start;
+	sip->last_end = end;
+	return dist;
+}
+
+void *seeki_alloc(char *str)
+{
+	struct seeki *sip = malloc(sizeof(struct seeki));
+
+	sip->rfp = seek_open(str, 'r');
+	sip->wfp = seek_open(str, 'w');
+	sip->cfp = seek_open(str, 'c');
+	sip->tot_seeks = 0;
+	sip->total_sectors = 0.0;
+	sip->last_start = sip->last_end = 0;
+	memset(&sip->root, 0, sizeof(sip->root));
+
+	if (sps_name) {
+		char *oname;
+
+		memset(&sip->sps, 0, sizeof(sip->sps));
+
+		oname = malloc(strlen(sps_name) + strlen(str) + 32);
+		sprintf(oname, "%s_%s.dat", sps_name, str);
+		if ((sip->sps_fp = my_fopen(oname, "w")) == NULL)
+			perror(oname);
+		else
+			add_file(sip->sps_fp, oname);
+	} else
+		sip->sps_fp = NULL;
+
+	return sip;
+}
+
+void seeki_free(void *param)
+{
+	struct seeki *sip = param;
+
+	if (sip->sps_fp && sip->sps.nseeks != 0)
+		sps_emit(sip);
+
+	/*
+	 * Associated files are cleaned up by seek_clean
+	 */
+	__destroy(sip->root.rb_node);
+	free(sip);
+}
+
+void seeki_add(void *handle, struct io *iop)
+{
+	struct seeki *sip = handle;
+	char rw = IOP_READ(iop) ? 'r' : 'w';
+	long long dist = seek_dist(sip, iop);
+	double tstamp = BIT_TIME(iop->t.time);
+	FILE *fp = IOP_READ(iop) ? sip->rfp : sip->wfp;
+
+	if (fp)
+		fprintf(fp, "%15.9lf %13lld %c\n", tstamp, dist, rw);
+	if (sip->cfp)
+		fprintf(sip->cfp, "%15.9lf %13lld %c\n", tstamp, dist, rw);
+
+	dist = llabs(dist);
+	sip->tot_seeks++;
+	sip->total_sectors += dist;
+	__insert(&sip->root, dist);
+
+	sps_add(sip, tstamp);
+}
+
+long long seeki_nseeks(void *handle)
+{
+	return ((struct seeki *)handle)->tot_seeks;
+}
+
+double seeki_mean(void *handle)
+{
+	struct seeki *sip = handle;
+	return sip->total_sectors / sip->tot_seeks;
+}
+
+long long seeki_median(void *handle)
+{
+	long long rval = 0LL;
+	struct seeki *sip = handle;
+
+	if (sip->root.rb_node)
+		(void)__median(sip->root.rb_node, 0LL, sip->tot_seeks / 2,
+			       &rval);
+
+	return rval;
+}
+
+int seeki_mode(void *handle, struct mode *mp)
+{
+	struct seeki *sip = handle;
+	struct rb_root *root = &sip->root;
+
+	memset(mp, 0, sizeof(struct mode));
+	if (root->rb_node)
+		__mode(root->rb_node, mp);
+
+	return mp->nmds;
+}
diff --git a/btt/trace.c b/btt/trace.c
new file mode 100644
index 0000000..e18a887
--- /dev/null
+++ b/btt/trace.c
@@ -0,0 +1,105 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include "globals.h"
+
+static void __add_trace(struct io *iop)
+{
+	time_t now = time(NULL);
+
+	n_traces++;
+	iostat_check_time(iop->t.time);
+
+	if (verbose && ((now - last_vtrace) > 0)) {
+		printf("%10lu t (%6.2lf%%)\r", n_traces, pct_done());
+		if ((n_traces % 1000000) == 0) printf("\n");
+		fflush(stdout);
+		last_vtrace = now;
+	}
+
+	switch (iop->t.action & 0xffff) {
+	case __BLK_TA_QUEUE:		trace_queue(iop); break;
+	case __BLK_TA_REMAP:		trace_remap(iop); break;
+	case __BLK_TA_INSERT:		trace_insert(iop); break;
+	case __BLK_TA_GETRQ:		trace_getrq(iop); break;
+	case __BLK_TA_BACKMERGE:	trace_merge(iop); break;
+	case __BLK_TA_FRONTMERGE:	trace_merge(iop); break;
+	case __BLK_TA_REQUEUE:		trace_requeue(iop); break;
+	case __BLK_TA_ISSUE:		trace_issue(iop); break;
+	case __BLK_TA_COMPLETE:		trace_complete(iop); break;
+	case __BLK_TA_PLUG:		trace_plug(iop); break;
+	case __BLK_TA_UNPLUG_IO:	trace_unplug_io(iop); break;
+	case __BLK_TA_UNPLUG_TIMER:	trace_unplug_timer(iop); break;
+	case __BLK_TA_SLEEPRQ:		trace_sleeprq(iop); break;
+	default:
+		io_release(iop);
+		return;
+	}
+}
+
+static void trace_message(struct io *iop)
+{
+	char scratch[15];
+	char msg[iop->t.pdu_len + 1];
+
+	if (!io_setup(iop, IOP_M))
+		return;
+
+	memcpy(msg, iop->pdu, iop->t.pdu_len);
+	msg[iop->t.pdu_len] = '\0';
+
+	fprintf(msgs_ofp, "%s %5d.%09lu %s\n",
+		make_dev_hdr(scratch, 15, iop->dip, 1),
+		(int)SECONDS(iop->t.time),
+		(unsigned long)NANO_SECONDS(iop->t.time), msg);
+}
+
+void add_trace(struct io *iop)
+{
+	if (iop->t.action & BLK_TC_ACT(BLK_TC_NOTIFY)) {
+		if (iop->t.action == BLK_TN_PROCESS) {
+			if (iop->t.pid == 0)
+				process_alloc(0, "kernel");
+			else {
+				char *slash = strchr(iop->pdu, '/');
+				if (slash)
+					*slash = '\0';
+
+				process_alloc(iop->t.pid, iop->pdu);
+			}
+		} else if (iop->t.action == BLK_TN_MESSAGE)
+			trace_message(iop);
+		io_release(iop);
+	} else if (iop->t.action & BLK_TC_ACT(BLK_TC_PC)) {
+		io_release(iop);
+	} else {
+		if (time_bounded) {
+			if (BIT_TIME(iop->t.time) < t_astart) {
+				io_release(iop);
+				return;
+			} else if (BIT_TIME(iop->t.time) > t_aend) {
+				io_release(iop);
+				done = 1;
+				return;
+			}
+		}
+		__add_trace(iop);
+	}
+}
diff --git a/btt/trace_complete.c b/btt/trace_complete.c
new file mode 100644
index 0000000..6f616bc
--- /dev/null
+++ b/btt/trace_complete.c
@@ -0,0 +1,125 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include "globals.h"
+
+static inline void __out(FILE *ofp, __u64 tm, enum iop_type type,
+					__u64 sec, __u32 nsec, int indent)
+{
+	if (tm != (__u64)-1) {
+		if (indent)
+			fprintf(ofp, "         ");
+		fprintf(ofp, "%5d.%09lu %c %10llu+%-4u\n",
+			(int)SECONDS(tm), (unsigned long)NANO_SECONDS(tm),
+			type2c(type), (unsigned long long)sec, nsec);
+	}
+}
+
+static void display_io_track(FILE *ofp, struct io *iop)
+{
+	fprintf(ofp, "%3d,%-3d: ", MAJOR(iop->t.device), MINOR(iop->t.device));
+	__out(ofp, iop->t.time, IOP_Q, iop->t.sector, t_sec(&iop->t), 0);
+
+	if (iop->g_time != (__u64)-1)
+		__out(ofp, iop->g_time, IOP_G, iop->t.sector, t_sec(&iop->t),1);
+	if (iop->i_time != (__u64)-1)
+		__out(ofp, iop->i_time, IOP_I, iop->t.sector, t_sec(&iop->t),1);
+	if (iop->m_time != (__u64)-1)
+		__out(ofp, iop->m_time, IOP_M, iop->t.sector, t_sec(&iop->t),1);
+
+	__out(ofp, iop->d_time, IOP_D, iop->d_sec, iop->d_nsec, 1);
+	__out(ofp, iop->c_time, IOP_C, iop->c_sec, iop->c_nsec, 1);
+	fprintf(ofp, "\n");
+}
+
+static void handle_complete(struct io *c_iop)
+{
+	LIST_HEAD(head);
+	struct list_head *p, *q;
+	__u64 d_time = (__u64)-1;
+	FILE *pit_fp = c_iop->dip->pit_fp;
+
+	update_blks(c_iop);
+	update_cregion(&all_regions, c_iop->t.time);
+	update_cregion(&c_iop->dip->regions, c_iop->t.time);
+	if (c_iop->pip)
+		update_cregion(&c_iop->pip->regions, c_iop->t.time);
+	aqd_complete(c_iop->dip->aqd_handle, BIT_TIME(c_iop->t.time));
+
+	dip_foreach_list(c_iop, IOP_Q, &head);
+	list_for_each_safe(p, q, &head) {
+		struct io *q_iop = list_entry(p, struct io, f_head);
+		__u64 q2c = tdelta(q_iop->t.time, c_iop->t.time);
+
+		c_iop->bytes_left -= q_iop->t.bytes;
+
+		update_q2c(q_iop, q2c);
+		latency_q2c(q_iop->dip, q_iop->t.time, q2c);
+
+		if (q_iop->d_time != (__u64)-1) {
+			__u64 d2c = tdelta(q_iop->d_time, c_iop->t.time);
+
+			update_d2c(q_iop, d2c);
+			latency_d2c(q_iop->dip, c_iop->t.time, d2c);
+			iostat_complete(q_iop, c_iop);
+
+			d_time = q_iop->d_time;
+		}
+
+		if (per_io_ofp) {
+			q_iop->c_time = c_iop->t.time;
+			q_iop->c_sec = c_iop->t.sector;
+			q_iop->c_nsec = t_sec(&c_iop->t);
+			display_io_track(per_io_ofp, q_iop);
+		}
+
+		if (q_iop->dip->pit_fp) {
+			fprintf(pit_fp, "%d.%09lu ",
+				(int)SECONDS(q_iop->t.time),
+				(unsigned long)NANO_SECONDS(q_iop->t.time));
+		}
+
+		list_del(&q_iop->f_head);
+		io_release(q_iop);
+	}
+
+	if (per_io_ofp)
+		fprintf(per_io_ofp,
+			"-----------------------------------------\n");
+
+	if (c_iop->dip->pit_fp) {
+		fprintf(pit_fp, "| %d.%09lu | %d.%09lu\n",
+			(int)SECONDS(d_time),
+			(unsigned long)NANO_SECONDS(d_time),
+			(int)SECONDS(c_iop->t.time),
+			(unsigned long)NANO_SECONDS(c_iop->t.time));
+	}
+}
+
+void trace_complete(struct io *c_iop)
+{
+	if (c_iop->t.bytes == 0)
+		return;
+
+	if (io_setup(c_iop, IOP_C))
+		handle_complete(c_iop);
+
+	io_release(c_iop);
+}
diff --git a/btt/trace_im.c b/btt/trace_im.c
new file mode 100644
index 0000000..49c876c
--- /dev/null
+++ b/btt/trace_im.c
@@ -0,0 +1,107 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include "globals.h"
+
+static void handle_g(struct io *g_iop)
+{
+	struct io *q_iop;
+
+	iostat_getrq(g_iop);
+
+	q_iop = dip_find_sec(g_iop->dip, IOP_Q, g_iop->t.sector);
+	if (q_iop) {
+		q_iop->g_time = g_iop->t.time;
+		update_q2g(q_iop, tdelta(q_iop->t.time, g_iop->t.time));
+		if (q_iop->s_time != 0)
+			update_s2g(q_iop, tdelta(q_iop->s_time, g_iop->t.time));
+	}
+}
+
+static void handle_s(struct io *s_iop)
+{
+	struct io *q_iop = dip_find_sec(s_iop->dip, IOP_Q, s_iop->t.sector);
+
+	if (q_iop)
+		q_iop->s_time = s_iop->t.time;
+}
+
+static void handle_i(struct io *i_iop)
+{
+	struct io *q_iop = dip_find_sec(i_iop->dip, IOP_Q, i_iop->t.sector);
+
+	if (q_iop) {
+		q_iop->i_time = i_iop->t.time;
+		if (q_iop->g_time != (__u64)-1)
+			update_g2i(q_iop, tdelta(q_iop->g_time, i_iop->t.time));
+	}
+}
+
+static void handle_m(struct io *m_iop)
+{
+	struct io *q_iop;
+
+	iostat_merge(m_iop);
+
+	q_iop = dip_find_sec(m_iop->dip, IOP_Q, m_iop->t.sector);
+	if (q_iop) {
+		q_iop->m_time = m_iop->t.time;
+		update_q2m(q_iop, tdelta(q_iop->t.time, m_iop->t.time));
+	}
+
+	if (m_iop->dip->n_act_q != 0)
+		m_iop->dip->n_act_q--;
+}
+
+void trace_sleeprq(struct io *s_iop)
+{
+	if (s_iop->t.bytes == 0)
+		return;
+	if (io_setup(s_iop, IOP_S))
+		handle_s(s_iop);
+	io_release(s_iop);
+}
+
+void trace_getrq(struct io *g_iop)
+{
+	if (g_iop->t.bytes == 0)
+		return;
+	if (io_setup(g_iop, IOP_G))
+		handle_g(g_iop);
+	io_release(g_iop);
+}
+
+void trace_insert(struct io *i_iop)
+{
+	if (i_iop->t.bytes == 0)
+		return;
+	if (io_setup(i_iop, IOP_I))
+		handle_i(i_iop);
+	io_release(i_iop);
+}
+
+void trace_merge(struct io *m_iop)
+{
+	if (m_iop->t.bytes == 0)
+		return;
+	if (io_setup(m_iop, IOP_M))
+		handle_m(m_iop);
+	io_release(m_iop);
+}
diff --git a/btt/trace_issue.c b/btt/trace_issue.c
new file mode 100644
index 0000000..976fe1c
--- /dev/null
+++ b/btt/trace_issue.c
@@ -0,0 +1,73 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include "globals.h"
+
+static void handle_issue(struct io *d_iop)
+{
+	LIST_HEAD(head);
+	struct list_head *p, *q;
+
+	if (d_iop->dip->n_act_q != 0)
+		d_iop->dip->n_act_q--;
+
+	seeki_add(d_iop->dip->seek_handle, d_iop);
+	bno_dump_add(d_iop->dip->bno_dump_handle, d_iop);
+	iostat_issue(d_iop);
+	d_iop->dip->n_ds++;
+	if (!remapper_dev(d_iop->t.device))
+		update_d_histo(d_iop->t.bytes);
+	aqd_issue(d_iop->dip->aqd_handle, BIT_TIME(d_iop->t.time));
+
+	dip_foreach_list(d_iop, IOP_Q, &head);
+	list_for_each_safe(p, q, &head) {
+		struct io *q_iop = list_entry(p, struct io, f_head);
+
+		if (q_iop->i_time != (__u64)-1)
+			update_i2d(q_iop, tdelta(q_iop->i_time, d_iop->t.time));
+		else if (q_iop->m_time != (__u64)-1)
+			update_m2d(q_iop, tdelta(q_iop->m_time, d_iop->t.time));
+
+		d_iop->bytes_left -= q_iop->t.bytes;
+		list_del(&q_iop->f_head);
+
+		q_iop->d_time = d_iop->t.time;
+		q_iop->d_sec = d_iop->t.sector;
+		q_iop->d_nsec = t_sec(&d_iop->t);
+
+		if (output_all_data)
+			q2d_histo_add(q_iop->dip->q2d_priv,
+						d_iop->t.time - q_iop->t.time);
+		latency_q2d(q_iop->dip, d_iop->t.time, 
+						d_iop->t.time - q_iop->t.time);
+	}
+}
+
+void trace_issue(struct io *d_iop)
+{
+	if (d_iop->t.bytes == 0)
+		return;
+
+	if (io_setup(d_iop, IOP_D))
+		handle_issue(d_iop);
+
+	io_release(d_iop);
+
+}
diff --git a/btt/trace_plug.c b/btt/trace_plug.c
new file mode 100644
index 0000000..b1925ae
--- /dev/null
+++ b/btt/trace_plug.c
@@ -0,0 +1,47 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2007 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include "globals.h"
+
+static __u64 get_nio_up(struct io *u_iop)
+{
+	__u64 *val = u_iop->pdu;
+	return be64_to_cpu(*val);
+}
+
+void trace_unplug_io(struct io *u_iop)
+{
+	unplug_hist_add(u_iop);
+	dip_unplug(u_iop->t.device, BIT_TIME(u_iop->t.time), get_nio_up(u_iop));
+	io_release(u_iop);
+}
+
+void trace_unplug_timer(struct io *ut_iop)
+{
+	dip_unplug_tm(ut_iop->t.device, BIT_TIME(ut_iop->t.time),
+			get_nio_up(ut_iop));
+	io_release(ut_iop);
+}
+
+void trace_plug(struct io *p_iop)
+{
+	dip_plug(p_iop->t.device, BIT_TIME(p_iop->t.time));
+	io_release(p_iop);
+}
diff --git a/btt/trace_queue.c b/btt/trace_queue.c
new file mode 100644
index 0000000..82c5760
--- /dev/null
+++ b/btt/trace_queue.c
@@ -0,0 +1,53 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include "globals.h"
+
+static void handle_queue(struct io *q_iop)
+{
+	seeki_add(q_iop->dip->q2q_handle, q_iop);
+	update_qregion(&all_regions, q_iop->t.time);
+	dip_update_q(q_iop->dip, q_iop);
+	pip_update_q(q_iop);
+	if (remapper_dev(q_iop->t.device))
+		update_lq(&last_q, &all_avgs.q2q_dm, q_iop->t.time);
+	else {
+		update_q_histo(q_iop->t.bytes);
+		update_lq(&last_q, &all_avgs.q2q, q_iop->t.time);
+	}
+
+	q_iop->i_time = q_iop->g_time = q_iop->i_time = q_iop->m_time =
+						q_iop->d_time = (__u64)-1;
+	q_iop->dip->n_qs++;
+
+	q_iop->dip->t_act_q += q_iop->dip->n_act_q;
+	q_iop->dip->n_act_q++;
+}
+
+void trace_queue(struct io *q_iop)
+{
+	if (q_iop->t.bytes == 0)
+		return;
+
+	if (io_setup(q_iop, IOP_Q))
+		handle_queue(q_iop);
+	else
+		io_release(q_iop);
+}
diff --git a/btt/trace_remap.c b/btt/trace_remap.c
new file mode 100644
index 0000000..560ae2b
--- /dev/null
+++ b/btt/trace_remap.c
@@ -0,0 +1,59 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include "globals.h"
+
+static inline void cvt_pdu_remap(struct blk_io_trace_remap *rp)
+{
+	rp->device_from = be32_to_cpu(rp->device_from);
+	rp->device_to   = be32_to_cpu(rp->device_to);
+	rp->sector_from = be64_to_cpu(rp->sector_from);
+}
+
+/*
+ * q_iop == volume device
+ * a_iop == underlying device
+ */
+void trace_remap(struct io *a_iop)
+{
+	struct io *q_iop;
+	struct d_info *q_dip;
+	struct blk_io_trace_remap *rp;
+
+	if (ignore_remaps)
+		goto out;
+
+	rp = a_iop->pdu;
+	cvt_pdu_remap(rp);
+
+	if (!io_setup(a_iop, IOP_A))
+		goto out;
+
+	q_dip = __dip_find(rp->device_from);
+	if (!q_dip)
+		goto out;
+
+	q_iop = dip_find_sec(q_dip, IOP_Q, rp->sector_from);
+	if (q_iop)
+		update_q2a(q_iop, tdelta(q_iop->t.time, a_iop->t.time));
+
+out:
+	io_release(a_iop);
+}
diff --git a/btt/trace_requeue.c b/btt/trace_requeue.c
new file mode 100644
index 0000000..f1324d9
--- /dev/null
+++ b/btt/trace_requeue.c
@@ -0,0 +1,35 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include "globals.h"
+
+static void handle_requeue(struct io *r_iop)
+{
+	r_iop->dip->n_qs++;
+	r_iop->dip->t_act_q += r_iop->dip->n_act_q;
+	r_iop->dip->n_act_q++;
+}
+
+void trace_requeue(struct io *r_iop)
+{
+	if (io_setup(r_iop, IOP_R))
+		handle_requeue(r_iop);
+	io_release(r_iop);
+}
diff --git a/btt/unplug_hist.c b/btt/unplug_hist.c
new file mode 100644
index 0000000..8fd4285
--- /dev/null
+++ b/btt/unplug_hist.c
@@ -0,0 +1,87 @@
+/*
+ * blktrace output analysis: generate a timeline & gather statistics
+ *
+ * Copyright (C) 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+ *
+ *  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
+ *
+ */
+#include "globals.h"
+
+#define BKT_WIDTH	5
+#define MAX_BKT		19
+#define EXCESS_BKT	20
+#define NBKTS		(EXCESS_BKT + 1)
+
+struct hist_bkt {
+	__u32 dev;
+	int hist[NBKTS * sizeof(int)];
+};
+
+void *unplug_hist_alloc(__u32 device)
+{
+	struct hist_bkt *hbp;
+
+	if (unplug_hist_name == NULL) return NULL;
+
+	hbp = malloc(sizeof(*hbp));
+	hbp->dev = device;
+	memset(hbp->hist, 0, NBKTS * sizeof(int));
+
+	return hbp;
+}
+
+void unplug_hist_add(struct io *u_iop)
+{
+	struct d_info *dip;
+
+	dip = __dip_find(u_iop->t.device);
+	if (dip && dip->up_hist_handle) {
+		__u64 *val = u_iop->pdu;
+		int idx, n_unplugs = be64_to_cpu(*val);
+		struct hist_bkt *hbp = dip->up_hist_handle;
+
+		idx = (n_unplugs / BKT_WIDTH);
+		if (idx > EXCESS_BKT)
+			idx = EXCESS_BKT;
+
+		hbp->hist[idx]++;
+	}
+}
+
+void unplug_hist_free(void *arg)
+{
+	if (arg) {
+		FILE *fp;
+		struct hist_bkt *hbp = arg;
+		int mjr = hbp->dev >> MINORBITS;
+		int mnr = hbp->dev & ((1 << MINORBITS) - 1);
+		char *oname = malloc(strlen(unplug_hist_name) + 32);
+
+		sprintf(oname, "%s_%03d,%03d.dat", unplug_hist_name, mjr, mnr);
+		if ((fp = my_fopen(oname, "w")) != NULL) {
+			int i;
+
+			for (i = 0; i < NBKTS; i++)
+				fprintf(fp, "%d %d\n", i, hbp->hist[i]);
+			fclose(fp);
+
+		} else
+			perror(oname);
+
+		free(oname);
+		free(hbp);
+	}
+}
diff --git a/doc/Makefile b/doc/Makefile
new file mode 100644
index 0000000..0be4425
--- /dev/null
+++ b/doc/Makefile
@@ -0,0 +1,15 @@
+DOCTMP	= blktrace.log blktrace.aux blktrace.dvi
+
+all: blktrace.pdf
+
+blktrace.tex:
+	@touch blktrace.tex
+
+blktrace.pdf: blktrace.tex
+	@latex blktrace.tex
+	@latex blktrace.tex
+	@dvipdfm -p a4 blktrace
+	@rm -rf $(DOCTMP)
+
+clean:
+	-rm -f blktrace.pdf $(DOCTMP)
diff --git a/doc/blkiomon.8 b/doc/blkiomon.8
new file mode 100644
index 0000000..dbed0df
--- /dev/null
+++ b/doc/blkiomon.8
@@ -0,0 +1,116 @@
+.TH BLKIOMON 8 "July 17, 2008" "" ""
+
+
+.SH NAME
+blkiomon \- monitor block device I/O based o blktrace data
+
+
+.SH SYNOPSIS
+.B blkiomon \-I \fIinterval\fR [ \-h \fIfile\fR ] [ \-b \fIfile\fR ]
+[ \-D \fIfile\fR ] [ \-Q \fIpath_name\fR
+\-q \fImsg_queue_id\fR \-m \fImsg_id\fR ] [ \-V ]
+.br
+
+
+.SH DESCRIPTION
+blkiomon is a block device I/O monitor. It periodically generates per-device
+request size and request latency statistics from blktrace data. It provides
+histograms as well as data that can be used to calculate min, max, average
+and variance. For this purpose, it consumes D and C traces read from stdin.
+
+There are options for binary output and human-readable output to files and
+stdout. Output to a message queue is supported as well.
+
+There is no need to use blkparse with blkiomon. blkiomon is capable of
+consuming binary output written to stdout by blktrace.
+
+
+.SH OPTIONS
+
+\-I \fIinterval\fR
+.br
+\-\-interval=\fIinterval\fR
+.RS
+Set sample interval
+.RE
+
+\-h \fIfile\fR
+.br
+\-\-human\-readable=\fIfile\fR
+.RS
+Human-readable output file. Use '\-' for stdout.
+.RE
+
+\-b \fIfile\fR
+.br
+\-\-binary=\fIfile\fR
+.RS
+Binary output file. Use '\-' for stdout.
+.RE
+
+\-D \fIfile\fR
+.br
+\-\-debug=\fIfile\fR
+.RS
+Output file for debugging data. Use '\-' for stdout.
+.RE
+
+\-Q \fIpath_name\fR
+.br
+\-\-msg\-queue=\fIpath_name\fR
+.RS
+Sets \fIpath_name\fR as path name for existing message queue to be used
+for binary output.
+.RE
+
+\-q \fImsg_queue_id\fR
+.br
+\-\-msg\-queue\-id=\fImsg_queue_id\fR
+.RS
+Sets \fImsg_queue_id\fR as ID for an existing message queue to be used
+for binary output.
+.RE
+
+\-m \fImsg_id\fR
+.br
+\-\-msg\-id=\fImsg_id\fR
+.RS
+Sets \fImsg_id\fR as message identifier to be used for binary output
+messages written to an existing message queue.
+.RE
+
+\-V
+.br
+\-\-version
+.RS
+Print program version.
+.RE
+
+
+.SH EXAMPLES
+To get I/O statistics for /dev/sdw every 10 seconds for a period of one hour,
+use the following command:
+
+    % blktrace /dev/sdw -a issue -a complete -w 3600 -o - | blkiomon -I 10 -h -
+
+
+.SH AUTHORS
+blkiomon and this man page were written by Martin Peschke.
+
+
+.SH "REPORTING BUGS"
+Report bugs to <linux\-btrace@vger.kernel.org>
+
+
+.SH COPYRIGHT
+Copyright \(co 2008 IBM Corp.
+.br
+This is free software.  You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+
+
+.SH "SEE ALSO"
+btrace (8), blktrace (8), blkparse (1), verify_blkparse (1), blkrawverify (1),
+btt (1)
+
diff --git a/doc/blkparse.1 b/doc/blkparse.1
new file mode 100644
index 0000000..11dab65
--- /dev/null
+++ b/doc/blkparse.1
@@ -0,0 +1,567 @@
+.TH BLKPARSE 1 "March  6, 2007" "blktrace git\-20070306202522" ""
+
+
+.SH NAME
+blkparse \- produce formatted output of event streams of block devices
+
+
+.SH SYNOPSIS
+.B blkparse [ \fIoptions\fR ] 
+.br
+
+
+.SH DESCRIPTION
+The \fIblkparse\fR utility will attempt to combine streams of events for
+various devices on various CPUs, and produce a formatted output of the event
+information.  Specifically, it will take the (machine-readable) output of the
+\fIblktrace\fR utility and convert it to a nicely formatted and human-readable
+form.
+
+As with \fIblktrace\fR, some details concerning \fIblkparse\fR
+will help in understanding the command line options presented below.
+
+
+.TP 2
+\-
+By default, \fIblkparse\fR expects to run in a post-processing mode; one where
+the trace events have been saved by a previous run of blktrace, and blkparse
+is combining event streams and dumping formatted data.
+
+blkparse may be run in a live manner concurrently with blktrace by specifying
+\fB\-i \-\fR to blkparse, and combining it with the live option for blktrace.
+An example would be:
+
+   % blktrace \-d /dev/sda \-o \- | blkparse \-i \-
+
+.TP 2
+\-
+You can set how many blkparse batches event reads via the \fB\-b\fR option, the
+default is to handle events in batches of 512.
+
+.TP 2
+\-
+If you have saved event traces in blktrace with different output names (via
+the \fB\-o\fR option to blktrace), you must specify the same input name via the
+\fB\-i\fR option.
+
+.TP 2
+\-
+The format of the output data can be controlled via the \fB\-f\fR or \fB\-F\fR
+options \-\- see OUTPUT DESCRIPTION AND FORMATTING for details.
+
+.PP
+By default, blkparse sends formatted data to standard output. This may
+be changed via the \fB\-o\fR option, or text output can be disabled via the
+\fB\-O\fR option. A merged binary stream can be produced using the \fB\-d\fR
+option.
+
+
+
+.SH OPTIONS
+
+\-b \fIbatch\fR
+.br
+\-\-batch={batch}
+.RS
+Standard input read batching
+.RE
+
+\-i \fIfile\fR
+.br
+\-\-input=\fIfile\fR
+.RS
+Specifies base name for input files \-\- default is \fIdevice\fR.blktrace.\fIcpu\fR.
+
+As noted above, specifying \fB\-i \-\fR runs in live mode with blktrace
+(reading data from standard in).
+.RE
+
+\-F \fItyp,fmt\fR
+.br
+\-\-format=\fItyp,fmt\fR
+.br
+\-f \fIfmt\fR
+.br
+\-\-format\-spec=\fIfmt\fR
+.RS
+Sets output format
+(See OUTPUT DESCRIPTION AND FORMATTING for details.)
+
+The \-f form specifies a format for all events
+
+The \-F form allows one to specify a format for a specific
+event type. The single\-character \fItyp\fR field is one of the
+action specifiers described in ACTION IDENTIFIERS.
+.RE
+
+\-M
+.br
+\-\-no-msgs
+.RS
+When \-d is specified, this will stop messages from being output to the
+file. (Can seriously reduce the size of the resultant file when using
+the CFQ I/O scheduler.)
+.RE
+
+\-h
+.br
+\-\-hash\-by\-name
+.RS
+Hash processes by name, not by PID
+.RE
+
+\-o \fIfile\fR
+.br
+\-\-output=\fIfile\fR
+.RS
+Output file
+.RE
+
+\-O
+.br
+\-\-no\-text\-output
+.RS
+Do \fInot\fR produce text output, used for binary (\fB\-d\fR) only
+.RE
+
+\-d \fIfile\fR
+.br
+\-\-dump\-binary=\fIfile\fR
+.RS
+Binary output file
+.RE
+
+\-q
+.br
+\-\-quiet
+.RS
+Quiet mode
+.RE
+
+\-s
+.br
+\-\-per\-program\-stats
+.RS
+Displays data sorted by program
+.RE
+
+\-t
+.br
+\-\-track\-ios
+.RS
+Display time deltas per IO
+.RE
+
+\-w \fIspan\fR
+.br
+\-\-stopwatch=\fIspan\fR
+.RS
+Display traces for the \fIspan\fR specified \-\- where span can be:
+.br
+\fIend\-time\fR \-\- Display traces from time 0 through \fIend\-time\fR (in ns)
+.br
+or
+.br
+\fIstart:end\-time\fR \-\- Display traces from time \fIstart\fR
+through end\-time (in ns).
+.RE
+
+\-v
+.br
+\-\-verbose
+.RS
+More verbose marginal on marginal errors
+.RE
+
+\-V
+.br
+\-\-version
+.RS
+Display version
+.RE
+
+
+.SH "TRACE ACTIONS"
+The following trace actions are recognised:
+
+.HP 4
+\fBC -- complete\fR
+A previously issued request has been completed.  The output will detail the
+sector and size of that request, as well as the success or failure of it.
+
+.HP 4
+\fBD -- issued\fR
+A request that previously resided on the block layer queue or in the i/o
+scheduler has been sent to the driver.
+
+.HP 4
+\fBI -- inserted\fR
+A request is being sent to the i/o scheduler for addition to the internal queue
+and later service by the driver. The request is fully formed at this time.
+
+.HP 4
+\fBQ -- queued\fR
+This notes intent to queue i/o at the given location.  No real requests exists
+yet.
+
+.HP 4
+\fBB -- bounced\fR
+The data pages attached to this \fIbio\fR are not reachable by the hardware
+and must be bounced to a lower memory location. This causes a big slowdown in
+i/o performance, since the data must be copied to/from kernel buffers. Usually
+this can be fixed with using better hardware -- either a better i/o controller,
+or a platform with an IOMMU.
+
+.HP 4
+\fBM -- back merge\fR
+A previously inserted request exists that ends on the boundary of where this i/o
+begins, so the i/o scheduler can merge them together.
+
+.HP 4
+\fBF -- front merge\fR
+Same as the back merge, except this i/o ends where a previously inserted
+requests starts.
+
+.HP 4
+\fBM --front or back merge\fR
+One of the above
+
+.HP 4
+\fBM -- front or back merge\fR
+One of the above.
+
+.HP 4
+\fBG -- get request\fR
+To send any type of request to a block device, a \fIstruct request\fR
+container must be allocated first.
+
+.HP 4
+\fBS -- sleep\fR
+No available request structures were available, so the issuer has to wait for
+one to be freed.
+
+.HP 4
+\fBP -- plug\fR
+When i/o is queued to a previously empty block device queue, Linux will plug the
+queue in anticipation of future ios being added before this data is needed.
+
+.HP 4
+\fBU -- unplug\fR
+Some request data already queued in the device, start sending requests to the
+driver. This may happen automatically if a timeout period has passed (see next
+entry) or if a number of requests have been added to the queue.
+
+.HP 4
+\fBT -- unplug due to timer\fR
+If nobody requests the i/o that was queued after plugging the queue, Linux will
+automatically unplug it after a defined period has passed.
+
+.HP 4
+\fBX -- split\fR
+On raid or device mapper setups, an incoming i/o may straddle a device or
+internal zone and needs to be chopped up into smaller pieces for service. This
+may indicate a performance problem due to a bad setup of that raid/dm device,
+but may also just be part of normal boundary conditions. dm is notably bad at
+this and will clone lots of i/o.
+
+.HP 4
+\fBA -- remap\fR
+For stacked devices, incoming i/o is remapped to device below it in the i/o
+stack. The remap action details what exactly is being remapped to what.
+
+
+
+
+.SH "OUTPUT DESCRIPTION AND FORMATTING"
+
+The output from blkparse can be tailored for specific use -- in particular, to ease
+parsing of output, and/or limit output fields to those the user wants to see. The
+data for fields which can be output include:
+
+.IP \fBa\fR 4
+Action, a (small) string (1 or 2 characters) -- see table below for more details
+
+.IP \fBc\fR 4
+CPU id
+
+.IP \fBC\fR 4
+Command
+
+.IP \fBd\fR 4
+RWBS field, a (small) string (1-3 characters)  -- see section below for more details
+
+.IP \fBD\fR 4
+7-character string containing the major and minor numbers of
+the event's device (separated by a comma).
+
+.IP \fBe\fR 4
+Error value
+
+.IP \fBm\fR 4
+Minor number of event's device.
+
+.IP \fBM\fR 4
+Major number of event's device.
+
+.IP \fBn\fR 4
+Number of blocks
+
+.IP \fBN\fR 4
+Number of bytes
+
+.IP \fBp\fR 4
+Process ID
+
+.IP \fBP\fR 4
+Display packet data \-\- series of hexadecimal values
+
+.IP \fBs\fR 4
+Sequence numbers
+
+.IP \fBS\fR 4
+Sector number
+
+.IP \fBt\fR 4
+Time stamp (nanoseconds)
+
+.IP \fBT\fR 4
+Time stamp (seconds)
+
+.IP \fBu\fR 4
+Elapsed value in microseconds (\fI\-t\fR command line option)
+
+.IP \fBU\fR 4
+Payload unsigned integer
+
+.PP
+Note that the user can optionally specify field display width, and optionally a
+left-aligned specifier. These precede field specifiers, with a '%' character,
+followed by the optional left-alignment specifier (\-) followed by the width (a
+decimal number) and then the field.
+
+Thus, to specify the command in a 12-character field that is left aligned:
+
+    \-f "%\-12C"
+
+
+.SH "ACTION IDENTIFIERS"
+
+The following table shows the various actions which may be output:
+
+.IP A
+IO was remapped to a different device
+
+.IP B
+IO bounced
+
+.IP C
+IO completion
+
+.IP D
+IO issued to driver
+
+.IP F
+IO front merged with request on queue
+
+.IP G
+Get request
+
+.IP I
+IO inserted onto request queue
+
+.IP M
+IO back merged with request on queue
+
+.IP P
+Plug request
+
+.IP Q
+IO handled by request queue code
+
+.IP S
+Sleep request
+
+.IP T
+Unplug due to timeout
+
+.IP U
+Unplug request
+
+.IP X
+Split
+
+
+.SH "RWBS DESCRIPTION"
+
+This is a small string containing at least one character ('R' for read, 'W'
+for write, or 'D' for block discard operation), and optionally either
+a 'B' (for barrier operations) or 'S' (for synchronous operations).
+
+
+.SH "DEFAULT OUTPUT"
+
+The standard header (or initial fields displayed) include:
+
+    "%D %2c %8s %5T.%9t %5p %2a %3d"
+
+Breaking this down:
+
+.IP \fB%D\fR
+Displays the event's device major/minor as: %3d,%\-3d.
+
+.IP \fB%2c\fR
+CPU ID (2-character field).
+
+.IP \fB%8s\fR
+Sequence number
+
+.IP \fB%5T.%9t\fR
+5-character field for the seconds portion of the time stamp and a 9-character field for the nanoseconds in the time stamp.
+
+.IP \fB%5p\fR
+5-character field for the process ID.
+
+.IP \fB%2a\fR
+2-character field for one of the actions.
+
+.IP \fB%3d\fR
+3-character field for the RWBS data.
+
+Seeing this in action:
+
+    8,0    3        1     0.000000000   697  G   W 223490 + 8 [kjournald]
+
+The header is the data in this line up to the 223490 (starting block).
+The default output for all event types includes this header.
+
+
+
+.SH "DEFAULT OUTPUT PER ACTION"
+
+\fBC \-\- complete\fR
+.RS 4
+If a payload is present, this is presented between
+parenthesis following the header, followed by the error value.
+
+If no payload is present, the sector and number of blocks are presented
+(with an intervening plus (+) character). If the \fB\-t\fR option
+was specified, then the elapsed time is presented. In either case,
+it is followed by the error value for the completion.
+.RE
+
+\fBB \-\- bounced\fR
+.br
+\fBD \-\- issued\fR
+.br
+\fBI \-\- inserted\fR
+.br
+\fBQ \-\- queued\fR
+.RS 4
+If a payload is present, the number of payload bytes
+is output, followed by the payload in hexadecimal between parenthesis.
+
+If no payload is present, the sector and number of blocks are presented
+(with an intervening plus (+) character). If the \fB\-t\fR option was
+specified, then the elapsed time is presented (in parenthesis). In
+either case, it is followed by the command associated with the event
+(surrounded by square brackets).
+.RE
+
+\fBF \-\- front merge\fR
+.br
+\fBG \-\- get request\fR
+.br
+\fBM \-\- back merge\fR
+.br
+\fBS \-\- sleep\fR
+.RS 4
+The starting sector and number of blocks is output
+(with an intervening plus (+) character), followed by the command
+associated with the event (surrounded by square brackets).
+.RE
+
+\fBP \-\- plug\fR
+.RS 4
+The command associated with the event (surrounded by
+square brackets) is output.
+.RE
+
+\fBU \-\- unplug\fR
+.br
+\fBT \-\- unplug due to timer\fR
+.RS 4
+The command associated with the event
+(surrounded by square brackets) is output, followed by the number of
+requests outstanding.
+.RE
+
+\fBX \-\- split\fR
+.RS 4
+The original starting sector followed by the new
+sector (separated by a slash (/) is output, followed by the command
+associated with the event (surrounded by square brackets).
+.RE
+
+\fBA \-\- remap\fR
+.RS 4
+Sector and length is output, along with the original
+device and sector offset.
+.RE
+
+
+.SH EXAMPLES
+To trace the i/o on the device \fI/dev/hda\fB and parse the output to human
+readable form, use the following command:
+
+    % blktrace \-d /dev/sda \-o \- | blkparse \-i \-
+
+(see \fIblktrace\fR (8) for more information).
+This same behaviour can be achieve with the convenience script \fIbtrace\fR.
+The command
+
+    % btrace /dev/sda
+
+has exactly the same effect as the previous command. See \fIbtrace\fR (8) for
+more information.
+
+To trace the i/o on a device and save the output for later processing with
+\fIblkparse\fR, use \fIblktrace\fR like this:
+
+    % blktrace /dev/sda /dev/sdb
+
+This will trace i/o on the devices \fI/dev/sda\fR and \fI/dev/sdb\fR and save
+the recorded information in the files \fIsda\fR and \fIsdb\fR in the current
+directory, for the two different devices, respectively.  This trace
+information can later be parsed by the \fIblkparse\fR utility:
+
+    % blkparse sda sdb
+
+which will output the previously recorded tracing information in human
+readable form to stdout. 
+
+
+.SH AUTHORS
+\fIblkparse\fR was written by Jens Axboe, Alan D. Brunelle and Nathan Scott.  This
+man page was created from the \fIblktrace\fR documentation by Bas Zoetekouw.
+
+
+.SH "REPORTING BUGS"
+Report bugs to <linux\-btrace@vger.kernel.org>
+
+.SH COPYRIGHT
+Copyright \(co 2006 Jens Axboe, Alan D. Brunelle and Nathan Scott.
+.br
+This is free software.  You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.br
+This manual page was created for Debian by Bas Zoetekouw.  It was derived from
+the documentation provided by the authors and it may be used, distributed and
+modified under the terms of the GNU General Public License, version 2.
+.br
+On Debian systems, the text of the GNU General Public License can be found in
+/usr/share/common\-licenses/GPL\-2.
+
+.SH "SEE ALSO"
+btrace (8), blktrace (8), verify_blkparse (1), blkrawverify (1), btt (1)
+
diff --git a/doc/blkrawverify.1 b/doc/blkrawverify.1
new file mode 100644
index 0000000..9d3b4bc
--- /dev/null
+++ b/doc/blkrawverify.1
@@ -0,0 +1,47 @@
+.TH BLKRAWVERIFY 1 "March  6, 2007" "blktrace git\-20070306202522" ""
+
+
+.SH NAME
+blkrawverify \- verifies an output file produced by blkparse
+
+
+.SH SYNOPSIS
+.B blkrawverify <\fIdev\fR> [<\fIdev\fR>...]
+.br
+
+
+.SH DESCRIPTION
+
+The \fIblkrawverify\fR utility can be used to verify data retrieved via
+\fIblktrace\fR. It will check for valid event formats, forward progressing
+sequence numbers and time stamps, also does reasonable checks for other
+potential issues within individual events.
+
+Errors found will be tracked in <\fIdev\fR>.verify.out.
+
+
+.SH AUTHORS
+\fIblkparse\fR was written by Jens Axboe, Alan D. Brunelle and Nathan Scott.  This
+man page was created from the \fIblktrace\fR documentation by Bas Zoetekouw.
+
+
+.SH "REPORTING BUGS"
+Report bugs to <linux\-btrace@vger.kernel.org>
+
+.SH COPYRIGHT
+Copyright \(co 2006 Jens Axboe, Alan D. Brunelle and Nathan Scott.
+.br
+This is free software.  You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.br
+This manual page was created for Debian by Bas Zoetekouw.  It was derived from
+the documentation provided by the authors and it may be used, distributed and
+modified under the terms of the GNU General Public License, version 2.
+.br
+On Debian systems, the text of the GNU General Public License can be found in
+/usr/share/common\-licenses/GPL\-2.
+
+.SH "SEE ALSO"
+btrace (8), blktrace (8), blkparse (1), verify_blkparse (1), btt (1)
+
diff --git a/doc/blktrace.8 b/doc/blktrace.8
new file mode 100644
index 0000000..58e8f90
--- /dev/null
+++ b/doc/blktrace.8
@@ -0,0 +1,259 @@
+.TH BLKTRACE 8 "March  6, 2007" "blktrace git\-20070306202522" ""
+
+
+.SH NAME
+blktrace \- generate traces of the i/o traffic on block devices
+
+
+.SH SYNOPSIS
+.B blktrace \-d \fIdev\fR [ \-r \fIdebugfs_path\fR ] [ \-o \fIoutput\fR ] [\-k ] [ \-w \fItime\fR ] [ \-a \fIaction\fR ] [ \-A \fIaction_mask\fR ] [ \-v ]
+.br
+
+
+.SH DESCRIPTION
+blktrace is a block layer IO tracing mechanism which provides detailed
+information about request queue operations up to user space. There are three
+major components: a kernel component, a utility to record the i/o trace
+information for the kernel to user space, and utilities to analyse and view the
+trace information.  This man page describes blktrace, which records the i/o event
+trace information for a specific block device to a file.
+
+The \fBblktrace\fR utility extracts event traces from the kernel (via
+the relaying through the debug file system). Some background details
+concerning the run\-time behaviour of blktrace will help to understand some
+of the more arcane command line options:
+
+.TP 2
+\-
+blktrace receives data from the kernel in buffers passed up through the
+debug file system (relay). Each device being traced has a file created in
+the mounted directory for the debugfs, which defaults to 
+\fI/sys/kernel/debug\fR \-\- this can be overridden with the \fB\-r\fR command
+line argument.
+
+.TP 2
+\-
+blktrace defaults to collecting all events that can be traced. To
+limit the events being captured, you can specify one or more filter masks
+via the \fB\-a\fR option.
+
+Alternatively, one may specify the entire mask utilising a hexadecimal
+value that is version\-specific. (Requires understanding of the internal
+representation of the filter mask.)
+
+.TP 2
+\-
+As noted above, the events are passed up via a series of buffers stored
+into debugfs files. The size and number of buffers can be specified via
+the \fB\-b\fR and \fB\-n\fR arguments respectively.
+
+.TP 2
+\-
+blktrace stores the extracted data into files stored in the
+local directory. The format of the file names is (by default)
+\fBdevice\fR.\fBblktrace\fR.\fBcpu\fR, where \fBdevice\fR is the base
+device name (e.g, if we are tracing /dev/sda, the base device name would
+be \fBsda\fR); and \fBcpu\fR identifies a CPU for the event stream.
+
+The \fBdevice\fR portion of the event file name can be changed via
+the \fB\-o\fR option.
+
+.TP 2
+\-
+blktrace may also be run concurrently with blkparse to produce
+\fBlive\fR output \-\- to do this specify \fB\-o \-\fR for blktrace.
+
+.TP 2
+\- 
+The default behaviour for blktrace is to run forever until explicitly
+killed by the user (via a control-C, or kill utility invocation).
+There are two ways to modify this:
+
+.TP 5
+  1. 
+You may utilise the blktrace utility itself to kill
+a running trace -- via the \fB\-k\fR option.
+
+.TP 5
+  2.
+You can specify a run-time duration for blktrace via the
+\fB\-w\fR option -- then blktrace will run for the specified number
+of seconds, and then halt.
+
+
+.SH OPTIONS
+
+\-A \fIhex-mask\fR 
+.br
+\-\-set-mask=\fIhex-mask\fR
+.RS
+Set filter mask to \fIhex-mask\fR (see below for masks)
+.RE
+
+\-a \fImask\fR      
+.br
+\-\-act-mask=\fImask\fR      
+.RS
+Add \fImask\fR to current filter (see below for masks) 
+.RE
+
+\-b \fIsize\fR    
+.br
+\-\-buffer\-size=\fIsize\fR   
+.RS
+Specifies buffer size for event extraction (scaled by 1024). The default
+buffer size is 512KiB.
+.RE
+
+\-d \fIdev\fR
+.br
+\-\-dev=\fIdev\fR 
+.RS
+Adds \fIdev\fR as a device to trace  
+.RE
+
+\-I \fIfile\fR
+.br
+\-\-input-devs=\fIfile\fR 
+.RS
+Adds the devices found in \fIfile\fR as devices to trace
+.RE
+
+\-k 
+.br
+\-\-kill 
+.RS
+Kill on-going trace  
+.RE
+
+\-n \fInum\-sub\fR 
+.br
+\-\-num\-sub=\fInum-sub\fR    
+.RS
+Specifies number of buffers to use. blktrace defaults to 4 sub buffers.
+.RE
+
+\-o \fIfile\fR 
+.br
+\-\-output=\fIfile\fR        
+.RS
+Prepend \fIfile\fR to output file name(s)  
+.RE
+
+\-r \fIrel-path\fR
+.br
+\-\-relay=\fIrel-path\fR     
+.RS
+Specifies debugfs mount point  
+.RE
+
+\-V               
+.br
+\-\-version                  
+Outputs version  
+.RE
+
+\-w \fIseconds\fR 
+.br
+\-\-stopwatch=\fIseconds\fR  
+.RS
+Sets run time to the number of seconds specified  
+.RE
+
+
+.SH FILTER MASKS
+The following masks may be passed with the \fI\-a\fR command line
+option, multiple filters may be combined via multiple \fI\-a\fR command
+line options.
+
+.RS
+\fIbarrier\fR: barrier attribute 
+.br
+\fIcomplete\fR: completed by driver
+.br
+\fIfs\fR: requests 
+.br
+\fIissue\fR: issued to driver 
+.br
+\fIpc\fR: packet command events
+.br
+\fIqueue\fR: queue operations 
+.br
+\fIread\fR: read traces 
+.br
+\fIrequeue\fR: requeue operations 
+.br
+\fIsync\fR: synchronous attribute 
+.br
+\fIwrite\fR: write traces
+.br
+\fInotify\fR: trace messages
+.RE
+
+
+.SH REQUEST TYPES
+blktrace distinguishes between two types of block layer requests, file system
+and SCSI commands. The former are dubbed \fBfs\fR requests, the latter
+\fBpc\fR requests. File system requests are normal read/write operations, i.e.
+any type of read or write from a specific disk location at a given size. These
+requests typically originate from a user process, but they may also be
+initiated by the vm flushing dirty data to disk or the file system syncing a
+super or journal block to disk. \fBpc\fR requests are SCSI commands. blktrace
+sends the command data block as a payload so that blkparse can decode it.
+
+
+.SH EXAMPLES
+To trace the i/o on the device \fI/dev/hda\fR and parse the output to human
+readable form, use the following command:
+
+    % blktrace \-d /dev/sda \-o \- | blkparse \-i \-
+
+This same behaviour can be achieve with the convenience script \fIbtrace\fR.
+The command
+
+    % btrace /dev/sda
+
+has exactly the same effect as the previous command. See \fIbtrace\fR (8) for
+more information.
+
+To trace the i/o on a device and save the output for later processing with
+\fIblkparse\fR, use \fIblktrace\fR like this:
+
+    % blktrace /dev/sda /dev/sdb
+
+This will trace i/o on the devices \fI/dev/sda\fR and \fI/dev/sdb\fR and save
+the recorded information in the files \fIsda\fR and \fIsdb\fR in the current
+directory, for the two different devices, respectively.  This trace
+information can later be parsed by the \fIblkparse\fR utility:
+
+    % blkparse sda sdb
+
+which will output the previously recorded tracing information in human
+readable form to stdout.  See \fIblkparse\fR (1) for more information.
+
+
+.SH AUTHORS
+blktrace was written by Jens Axboe, Alan D. Brunelle and Nathan Scott.  This
+man page was created from the blktrace documentation by Bas Zoetekouw.
+
+
+.SH "REPORTING BUGS"
+Report bugs to <linux\-btrace@vger.kernel.org>
+
+.SH COPYRIGHT
+Copyright \(co 2006 Jens Axboe, Alan D. Brunelle and Nathan Scott.
+.br
+This is free software.  You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.br
+This manual page was created for Debian by Bas Zoetekouw.  It was derived from
+the documentation provided by the authors and it may be used, distributed and
+modified under the terms of the GNU General Public License, version 2.
+.br
+On Debian systems, the text of the GNU General Public License can be found in
+/usr/share/common\-licenses/GPL\-2.
+
+.SH "SEE ALSO"
+btrace (8), blkparse (1), verify_blkparse (1), blkrawverify (1), btt (1)
+
diff --git a/doc/blktrace.tex b/doc/blktrace.tex
new file mode 100644
index 0000000..54fe451
--- /dev/null
+++ b/doc/blktrace.tex
@@ -0,0 +1,814 @@
+\documentclass{article}
+
+%
+% Copyright (C) 2005, 2006 Alan D. Brunelle <Alan.Brunelle@hp.com>
+%
+%  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
+%
+
+\title{blktrace User Guide}
+\author{blktrace: Jens Axboe (jens.axboe@oracle.com)\\
+        User Guide: Alan D. Brunelle (Alan.Brunelle@hp.com)}
+\date{27 May 2008}
+
+\begin{document}
+\maketitle
+%---------------------
+\section{\label{sec:intro}Introduction}
+
+blktrace is a block layer IO tracing mechanism which provides detailed
+information about request queue operations up to user space. There are
+three major components that are provided:
+
+\begin{description}
+  \item[Kernel patch] A patch to the Linux kernel which includes the
+  kernel event logging interfaces, and patches to areas within the block
+  layer to emit event traces. If you run a 2.6.17-rc1 or newer kernel,
+  you don't need to patch blktrace support as it is already included.
+
+  \item[blktrace] A utility which transfers event traces from the kernel
+  into either long-term on-disk storage, or provides direct formatted
+  output (via blkparse).
+
+  \item[blkparse] A utility which formats events stored in files, or when
+  run in \emph{live} mode directly outputs data collected by blktrace.
+\end{description}
+
+\subsection{blktrace Download Area}
+
+The blktrace and blkparse utilities and associated kernel patch are provided
+as part of the following git repository:
+
+git://git.kernel.org/pub/scm/linux/kernel/git/axboe/blktrace.git bt
+
+%--------------------------
+\newpage\section{\label{sec:quick-start}Quick Start Guide}
+
+The following sections outline some quick steps towards utilizing
+blktrace. Some of the specific instructions below may need to be tailored
+to your environment.
+
+\subsection{\label{sec:get-blktrace}Retrieving blktrace}
+
+As noted above, the kernel patch along with the blktrace and blkparse utilities are stored in a git repository. One simple way to get going would be:
+
+\begin{verbatim}
+% git clone git://git.kernel.org/pub/scm/linux/kernel/git/axboe/blktrace.git bt
+% cd bt
+% git checkout
+\end{verbatim}
+
+\subsection{\label{sec:patching}Patching and configuring the Linux kernel}
+
+A patch for a \emph{specific Linux kernel} is provided in bt/kernel (where
+\emph{bt} is the name of the directory from the above git sequence). The
+detailed actual patching instructions for a Linux kernel is outside the
+scope of this document, but the following may be used as a sample template.
+Note that you may skip this step, if you kernel is at least 2.6.17-rc1.
+
+As an example, bt/kernel contains blk-trace-2.6.14-rc1-git-G2, download
+linux-2.6.13.tar.bz2 and patch-2.6.14-rc1.bz2
+
+\begin{verbatim}
+% tar xjf linux-2.6.13.tar.bz2 
+% mv linux-2.6.13 linux-2.6.14-rc1
+% cd linux-2.6.14-rc1
+% bunzip2 -c ../patch-2.6.14-rc1.bz2 | patch -p1
+\end{verbatim}
+
+At this point you may (optionally) remove linux-2.6.13.tar.bz2 and
+patch-2.6.14-rc1.bz2.
+
+At this point you should configure the Linux kernel for your specific
+system -- again, outside the scope of this document -- and then enable
+\emph{Support for tracing block io actions.} To do this, run
+
+\begin{verbatim}
+% make menuconfig                    or make xconfig, or edit .config, or ...
+\end{verbatim}
+
+and navigate through \emph{Device Drivers} and \emph{Block devices}
+and then down to \emph{Support for tracing block io actions} and hit Y.
+
+Install the new kernel (and modules\ldots) and reboot. 
+
+\subsection{\label{sec:mount}Mounting the debugfs file system}
+
+blktrace utilizes files under the debug file system, and thus must have
+the mount point set up -- mounted on the directory /sys/kernel/debug.
+To do this one may do either of the following:
+
+\begin{enumerate}
+  \item Manually mount after each boot:
+\begin{verbatim}
+% mount -t debugfs debugfs /sys/kernel/debug
+\end{verbatim}
+
+  \item Add an entry into /etc/fstab, and have it done automatically at
+  each boot\footnote{Note: after adding the entry to /etc/fstab, you
+  could then mount the directory this time only by doing: \% mount debug}:
+\begin{verbatim}
+debug /sys/kernel/debug debugfs default 0 0
+\end{verbatim}
+\end{enumerate}
+
+\subsection{\label{sec:build}Build the tools}
+
+To build and install the tools, execute the following sequence (as root):
+
+\begin{verbatim}
+% cd bt
+% make && make install
+\end{verbatim}
+
+\subsection{\label{sec:live-blktrace}blktrace -- live}
+
+Now to simply watch what is going on for a specific disk (to stop the
+trace, hit control-C):
+
+\begin{verbatim}
+% blktrace -d /dev/sda -o - | blkparse -i -
+  8,0    3        1     0.000000000   697  G   W 223490 + 8 [kjournald]
+  8,0    3        2     0.000001829   697  P   R [kjournald]
+  8,0    3        3     0.000002197   697  Q   W 223490 + 8 [kjournald]
+  8,0    3        4     0.000005533   697  M   W 223498 + 8 [kjournald]
+  8,0    3        5     0.000008607   697  M   W 223506 + 8 [kjournald]
+  8,0    3        6     0.000011569   697  M   W 223514 + 8 [kjournald]
+  8,0    3        7     0.000014407   697  M   W 223522 + 8 [kjournald]
+  8,0    3        8     0.000017367   697  M   W 223530 + 8 [kjournald]
+  8,0    3        9     0.000020161   697  M   W 223538 + 8 [kjournald]
+  8,0    3       10     0.000024062   697  D   W 223490 + 56 [kjournald]
+  8,0    1       11     0.009507758     0  C   W 223490 + 56 [0]
+  8,0    1       12     0.009538995   697  G   W 223546 + 8 [kjournald]
+  8,0    1       13     0.009540033   697  P   R [kjournald]
+  8,0    1       14     0.009540313   697  Q   W 223546 + 8 [kjournald]
+  8,0    1       15     0.009542980   697  D   W 223546 + 8 [kjournald]
+  8,0    1       16     0.013542170     0  C   W 223546 + 8 [0]
+...
+^C
+...
+CPU1 (8,0):
+ Reads Queued:           0,        0KiB  Writes Queued:           7,      128KiB
+ Read Dispatches:        0,        0KiB  Write Dispatches:        7,      128KiB
+ Reads Completed:        0,        0KiB  Writes Completed:       11,      168KiB
+ Read Merges:            0               Write Merges:           25
+ IO unplugs:             0               Timer unplugs:           0
+...
+CPU3 (8,0):
+ Reads Queued:           0,        0KiB  Writes Queued:           1,       28KiB
+ Read Dispatches:        0,        0KiB  Write Dispatches:        1,       28KiB
+ Reads Completed:        0,        0KiB  Writes Completed:        0,        0KiB
+ Read Merges:            0               Write Merges:            6
+ IO unplugs:             0               Timer unplugs:           0
+
+Total (8,0):
+ Reads Queued:           0,        0KiB  Writes Queued:          11,      168KiB
+ Read Dispatches:        0,        0KiB  Write Dispatches:       11,      168KiB
+ Reads Completed:        0,        0KiB  Writes Completed:       11,      168KiB
+ Read Merges:            0               Write Merges:           31
+ IO unplugs:             0               Timer unplugs:           3
+
+Events (8,0): 89 entries, 0 skips
+\end{verbatim}
+
+A \emph{btrace} script is included in the distribution to ease live
+tracing of devices. The above could also be accomplished by issuing:
+
+\begin{verbatim}
+% btrace /dev/sda
+\end{verbatim}
+
+By default, \emph{btrace} runs the trace in quiet mode so it will not
+include statistics when you break the run. Add the \emph{-S} option to
+get that dumped as well.
+
+\subsection{\label{sec:pc-blktrace}blktrace -- SCSI commands}
+
+The previous section showed typical file system io actions, but blktrace
+can also show SCSI commands going in and out of the queue as submitted
+by applications using the SCSI Generic (\emph{sg}) interface.
+
+\begin{verbatim}
+% btrace /dev/cdrom
+[...]
+  3,0    0       25     0.004884107 13528  G   R 0 + 0 [inquiry]
+  3,0    0       26     0.004890361 13528  I   R 56 (12 00 00 00 38 ..) [inquiry]
+  3,0    0       27     0.004891223 13528  P   R [inquiry]
+  3,0    0       28     0.004893250 13528  D   R 56 (12 00 00 00 38 ..) [inquiry]
+  3,0    0       29     0.005344910     0  C   R (12 00 00 00 38 ..) [0]
+\end{verbatim}
+
+Here we see a program issuing an INQUIRY command to the CDROM device.
+The program requested a read of 56 bytes of data, the CDB is included
+in parenthesis after the data length. The completion event shows shows
+that the command completed successfully. Tracing SCSI commands can be
+very useful for debugging problems with programs talking directly to the
+device. An example of that would be \emph{cdrecord} burning.
+
+\subsection{\label{sec:blktrace-post}blktrace -- post-processing}
+
+Another way to run blktrace is to have blktrace save data away for later
+formatting by blkparse. This would be useful if you want to get 
+measurements while running specific loads.
+
+To do this, one would specify the device (or devices) to be watched. Then 
+go run you test cases. Stop the trace, and at your leisure utilize
+blkparse to see the results.
+
+In this example, devices /dev/sdaa, /dev/sdc and /dev/sdo are used in an 
+LVM volume called adb3/vol.
+
+\begin{verbatim}
+% blktrace /dev/sdaa /dev/sdc /dev/sdo &
+[1] 9713
+%
+% mkfs -t ext3 /dev/adb3/vol
+mke2fs 1.35 (28-Feb-2004)
+Filesystem label=
+OS type: Linux
+Block size=4096 (log=2)
+Fragment size=4096 (log=2)
+16793600 inodes, 33555456 blocks
+1677772 blocks (5.00%) reserved for the super user
+First data block=0
+Maximum filesystem blocks=4294967296
+1025 block groups
+32768 blocks per group, 32768 fragments per group
+16384 inodes per group
+Superblock backups stored on blocks: 
+        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
+	4096000, 7962624, 11239424, 20480000, 23887872
+
+Writing inode tables: done                            
+Creating journal (8192 blocks): done
+Writing superblocks and filesystem accounting information: done
+
+This filesystem will be automatically checked every 27 mounts or
+180 days, whichever comes first.  Use tune2fs -c or -i to override.
+%
+% kill -15 9713
+\end{verbatim}
+
+Then you could process the events later:
+
+\begin{verbatim}
+%
+% blkparse sdaa sdc sdo > events
+% less events
+  8,32   1        1     0.000000000  9728  G   R 384 + 32 [mkfs.ext3]
+  8,32   1        2     0.000001959  9728  P   R [mkfs.ext3]
+  8,32   1        3     0.000002446  9728  Q   R 384 + 32 [mkfs.ext3]
+  8,32   1        4     0.000005110  9728  D   R 384 + 32 [mkfs.ext3]
+  8,32   3        5     0.000200570     0  C   R 384 + 32 [0]
+  8,224  3        1     0.021658989  9728  G   R 384 + 32 [mkfs.ext3]
+...
+ 65,160  3   163392    41.117070504     0  C   W 87469088 + 1376 [0]
+  8,32   3   163374    41.122683668     0  C   W 88168160 + 1376 [0]
+ 65,160  3   163393    41.129952433     0  C   W 87905984 + 1376 [0]
+ 65,160  3   163394    41.130049431     0  D   W 89129344 + 1376 [swapper]
+ 65,160  3   163395    41.130067135     0  D   W 89216704 + 1376 [swapper]
+ 65,160  3   163396    41.130083785     0  D   W 89304096 + 1376 [swapper]
+ 65,160  3   163397    41.130099455     0  D   W 89391488 + 1376 [swapper]
+ 65,160  3   163398    41.130114732     0  D   W 89478848 + 1376 [swapper]
+ 65,160  3   163399    41.130128885     0  D   W 89481536 + 64 [swapper]
+  8,32   3   163375    41.134758196     0  C   W 86333152 + 1376 [0]
+ 65,160  3   163400    41.142229726     0  C   W 89129344 + 1376 [0]
+ 65,160  3   163401    41.144952314     0  C   W 89481536 + 64 [0]
+  8,32   3   163376    41.147441930     0  C   W 88342912 + 1376 [0]
+ 65,160  3   163402    41.155869604     0  C   W 89478848 + 1376 [0]
+  8,32   3   163377    41.159466082     0  C   W 86245760 + 1376 [0]
+ 65,160  3   163403    41.166944976     0  C   W 89216704 + 1376 [0]
+ 65,160  3   163404    41.178968252     0  C   W 89304096 + 1376 [0]
+ 65,160  3   163405    41.191860173     0  C   W 89391488 + 1376 [0]
+...
+Events (sdo): 0 entries, 0 skips
+
+CPU0 (65,160):
+ Reads Queued:           0,        0KiB  Writes Queued:           9,    5,520KiB
+ Read Dispatches:        0,        0KiB  Write Dispatches:        0,        0KiB
+ Reads Completed:        0,        0KiB  Writes Completed:        0,        0KiB
+ Read Merges:            0               Write Merges:          336
+ IO unplugs:             0               Timer unplugs:           0
+CPU1 (65,160):
+ Reads Queued:       2,411,   38,576KiB  Writes Queued:         769,  425,408KiB
+ Read Dispatches:    2,407,   38,512KiB  Write Dispatches:      118,   61,680KiB
+ Reads Completed:        0,        0KiB  Writes Completed:        0,        0KiB
+ Read Merges:            0               Write Merges:       25,819
+ IO unplugs:             0               Timer unplugs:           4
+CPU2 (65,160):
+ Reads Queued:           2,       32KiB  Writes Queued:          18,   10,528KiB
+ Read Dispatches:        2,       32KiB  Write Dispatches:        3,    1,344KiB
+ Reads Completed:        0,        0KiB  Writes Completed:        0,        0KiB
+ Read Merges:            0               Write Merges:          640
+ IO unplugs:             0               Timer unplugs:           0
+CPU3 (65,160):
+ Reads Queued:      20,572,  329,152KiB  Writes Queued:         594,  279,712KiB
+ Read Dispatches:   20,576,  329,216KiB  Write Dispatches:    1,474,  740,720KiB
+ Reads Completed:   22,985,  367,760KiB  Writes Completed:    1,390,  721,168KiB
+ Read Merges:            0               Write Merges:       16,888
+ IO unplugs:             0               Timer unplugs:           0
+
+Total (65,160):
+ Reads Queued:      22,985,  367,760KiB  Writes Queued:       1,390,  721,168KiB
+ Read Dispatches:   22,985,  367,760KiB  Write Dispatches:    1,595,  803,744KiB
+ Reads Completed:   22,985,  367,760KiB  Writes Completed:    1,390,  721,168KiB
+ Read Merges:            0               Write Merges:       43,683
+ IO unplugs:             0               Timer unplugs:           4
+...
+\end{verbatim}
+
+%----------------------------
+\newpage\section{\label{sec:blktrace-ug}blktrace User Guide}
+
+The \emph{blktrace} utility extracts event traces from the kernel (via
+the relaying through the debug file system). Some background details
+concerning the run-time behaviour of blktrace will help to understand some
+of the more arcane command line options:
+
+\begin{itemize}
+  \item blktrace receives data from the kernel in buffers passed up
+  through the debug file system (relay). Each device being traced has
+  a file created in the mounted directory for the debugfs, which defaults
+  to \emph{/sys/kernel/debug} -- this can be overridden with the \emph{-r}
+  command line argument.
+  
+  \item blktrace defaults to collecting \emph{all} events that can be
+  traced. To limit the events being captured, you can specify one or
+  more filter masks via the \emph{-a} option.
+
+  Alternatively, one may specify the entire mask utilizing a hexadecimal
+  value that is version-specific. (Requires understanding of the internal
+  representation of the filter mask.)
+
+  \item As noted above, the events are passed up via a series of buffers
+  stored into debugfs files. The size and number of buffers can be
+  specified via the \emph{-b} and \emph{-n} arguments respectively.
+
+  \item blktrace stores the extracted data into files stored in the
+  \emph{local} directory. The format of the file names is (by default)
+  \emph{device}.blktrace.\emph{cpu}, where \emph{device} is the base
+  device name (e.g, if we are tracing /dev/sda, the base device name would
+  be \emph{sda}); and \emph{cpu} identifies a CPU for the event stream.
+
+  The \emph{device} portion of the event file name can be changed via
+  the \emph{-o} option.
+
+  \item blktrace may also be run concurrently with blkparse to produce
+  \emph{live} output -- to do this specify \emph{-o -} for blktrace.
+
+  \item The default behaviour for blktrace is to run forever until explicitly killed by the user (via a control-C, or \emph{kill} utility invocation). There are two ways to modify this: 
+
+  \begin{enumerate}
+    \item You may utilize the blktrace utility itself to \emph{kill}
+    a running trace -- via the \emph{-k} option.
+
+    \item You can specify a run-time duration for blktrace via the
+    \emph{-w} option -- then blktrace will run for the specified number
+    of seconds, and then halt.
+  \end{enumerate}
+\end{itemize}
+
+\subsection{\label{sec:blktrace-args}Command line arguments}
+\begin{tabular}{|l|l|l|}\hline
+Short              & Long                       & Description \\ \hline\hline
+-A \emph{hex-mask} & --set-mask=\emph{hex-mask} & Set filter mask to \emph{hex-mask} \\ \hline
+-a \emph{mask}     & --act-mask=\emph{mask}     & Add \emph{mask} to current filter (see below for masks) \\ \hline
+-b \emph{size}     & --buffer-size=\emph{size}  & Specifies buffer size for event extraction (scaled by $2^{10}$) \\ \hline
+-d \emph{dev}      & --dev=\emph{dev}           & Adds \emph{dev} as a device to trace \\ \hline
+-k                 & --kill                     & Kill on-going trace \\ \hline
+-n \emph{num-sub}  & --num-sub=\emph{num-sub}   & Specifies number of buffers to use \\ \hline
+-o \emph{file}     & --output=\emph{file}       & Prepend \emph{file} to output file name(s) \\ \hline
+-r \emph{rel-path} & --relay=\emph{rel-path}    & Specifies debugfs mount point \\ \hline
+-V                 & --version                  & Outputs version \\ \hline
+-w \emph{seconds}  & --stopwatch=\emph{seconds} & Sets run time to the number of seconds specified \\ \hline
+-I \emph{devs file}& --input-devs=\emph{devs file}& Adds devices found in \emph{devs file} to list of devices to trace. \\
+                   &                              & (One device per line.) \\ \hline
+\end{tabular}
+
+\subsubsection{\label{sec:filter-mask}Filter Masks}
+The following masks may be passed with the \emph{-a} command line
+option, multiple filters may be combined via multiple \emph{-a} command
+line options.\smallskip
+
+\begin{tabular}{|l|l|}\hline
+barrier & \emph{barrier} attribute \\ \hline
+complete & \emph{completed} by driver \\ \hline
+fs & \emph{FS} requests \\ \hline
+issue & \emph{issued} to driver \\ \hline
+pc & \emph{packet command} events \\ \hline
+queue & \emph{queue} operations \\ \hline
+read & \emph{read} traces \\ \hline
+requeue & \emph{requeue} operations \\ \hline
+sync & \emph{synchronous} attribute \\ \hline
+write & \emph{write} traces \\ \hline
+notify & \emph{notify} trace messages \\ \hline
+\end{tabular}
+
+\subsubsection{\label{sec:request-types}Request types}
+blktrace disguingishes between two types of block layer requests,
+file system and scsi commands. The former are dubbed \emph{fs}
+requests, the latter \emph{pc} requests. File system requests are
+normal read/write operations, ie any type of read or write from a
+specific disk location at a given size. These requests typically
+originate from a user process, but they may also be initiated by
+the vm flushing dirty data to disk or the file system syncing
+a super or journal block to disk. \emph{pc} requests are SCSI
+commands. blktrace sends the command data block as a payload
+so that blkparse can decode it.
+
+%----------------------------
+\newpage\section{\label{sec:blkparse-ug}blkparse User Guide}
+
+The \emph{blkparse} utility will attempt to combine streams of events
+for various devices on various CPUs, and produce a formatted output of
+the event information. As with blktrace, some details concerning blkparse
+will help in understanding the command line options presented below.
+
+\begin{itemize}
+  \item By default, blkparse expects to run in a post-processing mode
+  -- one where the trace events have been saved by a previous run
+  of blktrace, and blkparse is combining event streams and dumping
+  formatted data. 
+
+  blkparse \emph{may} be run in a \emph{live} manner concurrently with
+  blktrace by specifying \emph{-i -} to blkparse, and combining it with
+  the live option for blktrace. An example would be:
+
+  \begin{verbatim}
+  % blktrace -d /dev/sda -o - | blkparse -i -
+  \end{verbatim}
+
+  \item You can set how many blkparse batches event reads via the
+  \emph{-b} option, the default is to handle events in batches of 512.
+
+  \item If you have saved event traces in blktrace with different output
+  names (via the \emph{-o} option to blktrace), you must specify the
+  same \emph{input} name via the \emph{-i} option.
+
+  \item The format of the output data can be controlled via the \emph{-f}
+  or \emph{-F} options -- see section~\ref{sec:blkparse-format} for details.
+
+  By default, blkparse sends formatted data to standard output. This may
+  be changed via the \emph{-o} option, or text output can be disabled
+  via the\emph{-O} option. A merged binary stream can be produced using
+  the \emph{-d} option.
+
+\end{itemize}
+
+\newpage\subsection{\label{sec:blkparse-args}Command line arguments}
+\begin{tabular}{|l|l|l|}\hline
+Short              & Long                       & Description \\ \hline\hline
+-b \emph{batch}    & --batch={batch}            & Standard input read batching \\ \hline
+
+-i \emph{file}     & --input=\emph{file}        & Specifies base name for input files -- default is \emph{device}.blktrace.\emph{cpu}. \\
+                   &                            & As noted above, specifying \emph{-i -} runs in \emph{live} mode with blktrace \\
+		   &                            & (reading data from standard in). \\ \hline
+
+-F \emph{typ,fmt}  & --format=\emph{typ,fmt}    & Sets output format \\
+-f \emph{fmt}      & --format-spec=\emph{fmt}   & (See section~\ref{sec:blkparse-format} for details.) \\ 
+                   &                            & \\
+		   &                            & The -f form specifies a format for all events \\
+                   &                            & \\
+		   &                            & The -F form allows one to specify a format for a specific \\
+		   &                            & event type. The single-character \emph{typ} field is one of the \\
+		   &                            & action specifiers in section~\ref{sec:act-table} \\ \hline
+
+
+-m                 & --missing                  & Print missing entries\\ \hline
+
+-h                 & --hash-by-name             & Hash processes by name, not by PID\\ \hline
+
+-o \emph{file}     & --output=\emph{file}       & Output file \\ \hline
+-O                 & --no-text-output           & Do \emph{not} produce text output, used for binary (-d) only \\ \hline
+
+-d \emph{file}     & --dump-binary=\emph{file}  & Binary output file \\ \hline
+
+-q                 & --quiet                    & Quite mode \\ \hline
+
+-s                 & --per-program-stats        & Displays data sorted by program \\ \hline
+
+-t                 & --track-ios                & Display time deltas per IO \\ \hline
+
+-w \emph{span}     & --stopwatch=\emph{span}    & Display traces for the \emph{span} specified -- where span can be: \\ 
+                   &                            & \emph{end-time} -- Display traces from time 0 through \emph{end-time} (in ns) \\
+		   &                            & or \\
+		   &                            & \emph{start:end-time} -- Display traces from time \emph{start} \\
+		   &                            & through {end-time} (in ns). \\ \hline
+
+-M                 & --no-msgs                  & Do not add messages to binary output file \\\hline
+-v                 & --verbose                  & More verbose marginal on marginal errors \\ \hline
+-V                 & --version                  & Display version \\ \hline
+
+\end{tabular}
+
+\newpage
+\subsection{\label{sec:blkparse-actions}Trace actions}
+
+\begin{description}
+  \item[C -- complete] A previously issued request has been completed.
+  The output will detail the sector and size of that request, as well
+  as the success or failure of it.
+
+  \item[D -- issued] A request that previously resided on the block layer
+  queue or in the io scheduler has been sent to the driver.
+
+  \item[I -- inserted] A request is being sent to the io scheduler for
+  addition to the internal queue and later service by the driver. The
+  request is fully formed at this time.
+
+  \item[Q -- queued] This notes intent to queue io at the given location.
+  No real requests exists yet.
+
+  \item[B -- bounced] The data pages attached to this \emph{bio} are
+  not reachable by the hardware and must be bounced to a lower memory
+  location. This causes a big slowdown in io performance, since the data
+  must be copied to/from kernel buffers. Usually this can be fixed with
+  using better hardware - either a better io controller, or a platform
+  with an IOMMU.
+
+  \item[m -- message] Text message generated via kernel call to
+  \texttt{blk\_add\_trace\_msg}.
+
+  \item[M -- back merge] A previously inserted request exists that ends
+  on the boundary of where this io begins, so the io scheduler can merge
+  them together.
+
+  \item[F -- front merge] Same as the back merge, except this io ends
+  where a previously inserted requests starts.
+
+  \item[G -- get request] To send any type of request to a block device,
+  a \emph{struct request} container must be allocated first.
+
+  \item[S -- sleep] No available request structures were available, so
+  the issuer has to wait for one to be freed.
+
+  \item[P -- plug] When io is queued to a previously empty block device
+  queue, Linux will plug the queue in anticipation of future ios being
+  added before this data is needed.
+
+  \item[U -- unplug] Some request data already queued in the device,
+  start sending requests to the driver. This may happen automatically
+  if a timeout period has passed (see next entry) or if a number of
+  requests have been added to the queue.
+
+  \item[T -- unplug due to timer] If nobody requests the io that was queued
+  after plugging the queue, Linux will automatically unplug it after a
+  defined period has passed.
+
+  \item[X -- split] On raid or device mapper setups, an incoming io may
+  straddle a device or internal zone and needs to be chopped up into
+  smaller pieces for service. This may indicate a performance problem due
+  to a bad setup of that raid/dm device, but may also just be part of
+  normal boundary conditions. dm is notably bad at this and will clone
+  lots of io.
+
+  \item[A -- remap] For stacked devices, incoming io is remapped to device
+  below it in the io stack. The remap action details what exactly is
+  being remapped to what.
+
+\end{description}
+
+\subsection{\label{sec:blkparse-format}Output Description and Formatting}
+
+The output from blkparse can be tailored for specific use - in particular,
+to ease parsing of output, and/or limit output fields to those the user
+wants to see. The data for fields which can be output include:
+
+\smallskip
+\begin{tabular}{|l|l|}\hline
+Field    & Description \\
+Specifier & \\ \hline\hline
+\emph{a} & Action, a (small) string (1 or 2 characters) -- see table below for more details \\ \hline
+\emph{c} & CPU id \\ \hline
+\emph{C} & Command \\ \hline
+\emph{d} & RWBS field, a (small) string (1-3 characters)  -- see section below for more details \\ \hline
+\emph{D} & 7-character string containing the major and minor numbers of
+the event's device \\
+         & (separated by a comma). \\ \hline
+\emph{e} & Error value \\ \hline
+\emph{m} & Minor number of event's device. \\ \hline
+\emph{M} & Major number of event's device. \\ \hline
+\emph{n} & Number of blocks \\ \hline
+\emph{N} & Number of bytes \\ \hline
+\emph{p} & Process ID \\ \hline
+\emph{P} & Display packet data -- series of hexadecimal values\\ \hline
+\emph{s} & Sequence numbers \\ \hline
+\emph{S} & Sector number \\ \hline
+\emph{t} & Time stamp (nanoseconds) \\ \hline
+\emph{T} & Time stamp (seconds) \\ \hline
+\emph{u} & Elapsed value in microseconds (\emph{-t} command line option) \\ \hline
+\emph{U} & Payload unsigned integer \\ \hline
+\end{tabular}
+
+Note that the user can optionally specify field display width, and
+optionally a left-aligned specifier. These precede field specifiers,
+with a '\%' character, followed by the optional left-alignment specifer
+(-) followed by the width (a decimal number) and then the field.
+
+Thus, to specify the command in a 12-character field that is left aligned:
+
+\begin{verbatim}
+-f "%-12C"
+\end{verbatim}
+
+\newpage
+\subsubsection{\label{sec:act-table}Action Table}
+The following table shows the various actions which may be output.
+
+\begin{tabular}{|l|l|}\hline
+Act & Description \\ \hline\hline
+A & IO was remapped to a different device \\ \hline
+B & IO bounced \\ \hline
+C & IO completion \\ \hline
+D & IO issued to driver \\ \hline
+F & IO front merged with request on queue \\ \hline
+G & Get request \\ \hline
+I & IO inserted onto request queue \\ \hline
+M & IO back merged with request on queue \\ \hline
+P & Plug request \\ \hline
+Q & IO handled by request queue code \\ \hline
+S & Sleep request \\ \hline
+T & Unplug due to timeout \\ \hline
+U & Unplug request \\ \hline
+X & Split \\ \hline
+\end{tabular}
+
+\subsubsection{\label{sec:act-table}RWBS Description}
+This is a small string containing at least one character ('R' for read,
+'W' for write, or 'D' for block discard operation), and optionally either
+a 'B' (for barrier operations) or 'S' (for synchronous operations).
+
+\subsubsection{\label{sec:default-output}Default output}
+
+The standard \emph{header} (or initial fields displayed) include:
+
+\begin{verbatim}
+"%D %2c %8s %5T.%9t %5p %2a %3d "
+\end{verbatim}
+
+Breaking this down:
+
+\begin{description}
+  \item[\%D] Displays the event's device major/minor as: \%3d,\%-3d.
+  \item[\%2c] CPU ID (2-character field).
+  \item[\%8s] Sequence number
+  \item[\%5T.\%9t] 5-charcter field for the seconds portion of the
+  time stamp and a 9-character field for the nanoseconds in the time stamp.
+  \item[\%5p] 5-character field for the process ID.
+  \item[\%2a] 2-character field for one of the actions.
+  \item[\%3d] 3-character field for the RWBS data.
+\end{description}
+
+Seeing this in action:
+
+\begin{verbatim}
+  8,0    3        1     0.000000000   697  G   W 223490 + 8 [kjournald]
+\end{verbatim}
+
+The header is the data in this line up to the 223490 (starting block). 
+
+The default output for all event types includes this header.
+
+\paragraph{Default output per action}
+
+\begin{description}
+  \item[C -- complete] If a payload is present, this is presented between
+  parenthesis following the header, followed by the error value. 
+
+  If no payload is present, the sector and number of blocks are presented
+  (with an intervening plus (+) character). If the \emph{-t} option
+  was specified, then the elapsed time is presented. In either case,
+  it is followed by the error value for the completion.
+
+  \item[D -- issued]
+  \item[I -- inserted]
+  \item[Q -- queued]
+  \item[B -- bounced] If a payload is present, the number of payload bytes
+  is output, followed by the payload in hexadecimal between parenthesis.
+
+  If no payload is present, the sector and number of blocks are presented
+  (with an intervening plus (+) character). If the \emph{-t} option was
+  specified, then the elapsed time is presented (in parenthesis). In
+  either case, it is followed by the command associated with the event
+  (surrounded by square brackets).
+
+  \item[M -- back merge]
+  \item[F -- front merge]
+  \item[G -- get request]
+  \item[S -- sleep] The starting sector and number of blocks is output
+  (with an intervening plus (+) character), followed by the command
+  associated with the event (surrounded by square brackets).
+
+  \item[P -- plug] The command associated with the event (surrounded by
+  square brackets) is output.
+
+  \item[U -- unplug]
+  \item[T -- unplug due to timer] The command associated with the event
+  (surrounded by square brackets) is output, followed by the number of
+  requests outstanding.
+
+  \item[X -- split] The original starting sector followed by the new
+  sector (separated by a slash (/) is output, followed by the command
+  associated with the event (surrounded by square brackets).
+
+  \item[A -- remap] Sector and length is output, along with the original
+  device and sector offset.
+
+  \item[m -- message] The supplied message is appended to the end of
+  the standard header.
+
+\end{description}
+
+%------------------------------
+\newpage
+\newpage\section*{\label{sec:blktrace-kg}Appendix: blktrace Kernel Guide}
+
+The blktrace facility provides an efficient event transfer mechanism which
+supplies block IO layer state transition data via the relay
+filesystem. This section provides some details as to the interfaces
+blktrace utilizes in the kernel to effect this. It is good background data
+to help understand some of the outputs and command-line options above.
+
+\subsection{blktrace.h Definitions}
+Files which include $<linux/blktrace.h>$ are supplied with the following
+definitions:
+
+\subsubsection{Trace Action Specifiers}
+\begin{tabular}{|l|l|}\hline
+  BLK\_TA\_QUEUE & (RQ) Command queued to request\_queue. \\
+                 & (BIO) Command queued by elevator. \\ \hline
+  BLK\_TA\_BACKMERGE & Back merging elevator operation \\ \hline
+  BLK\_TA\_FRONTMERGE & Front merging elevator operation \\ \hline
+  BLK\_TA\_GETRQ & Free request retrieved. \\ \hline
+  BLK\_TA\_SLEEPRQ & No requests available, device unplugged. \\ \hline
+  BLK\_TA\_REQUEUE & Request requeued. \\ \hline
+  BLK\_TA\_ISSUE & Command set to driver for request\_queue. \\ \hline
+  BLK\_TA\_COMPLETE & Command completed by driver. \\ \hline
+  BLK\_TA\_PLUG & Device is plugged \\ \hline
+  BLK\_TA\_UNPLUG\_IO & Unplug device as IO is made available. \\ \hline
+  BLK\_TA\_UNPLUG\_TIMER & Unplug device after timer expired. \\ \hline
+  BLK\_TA\_INSERT & Insert request into queue. \\ \hline
+  BLK\_TA\_SPLIT & BIO split into 2 or more requests. \\ \hline
+  BLK\_TA\_BOUNCE & BIO was bounced \\ \hline
+  BLK\_TA\_REMAP & BIO was remapped \\ \hline
+\end{tabular}
+
+%..........................................
+\subsection{blktrace.h Routines}
+Files which include $<linux/blktrace.h>$ are supplied with the following
+kernel routine invocable interfaces:
+
+\begin{description}
+  \item[blk\_add\_trace\_rq(struct request\_queue *q, struct request\_queue 
+  								*rq, u32 what)]
+	Adds a trace event describing the state change of the passed in
+	request\_queue. The \emph{what} parameter describes the change in
+	the request\_queue state, and is one of the request queue action 
+	specifiers -- BLK\_TA\_QUEUE, BLK\_TA\_REQUEUE, BLK\_TA\_ISSUE,
+	or BLK\_TA\_COMPLETE.
+
+  \item[blk\_add\_trace\_bio(struct request\_queue *q, struct bio *bio, 
+  								u32 what)]
+	Adds a trace event for the BIO passed in. The \emph{what} parameter
+	describes the action being performed on the BIO, and is one of
+	BLK\_TA\_BACKMERGE, BLK\_TA\_FRONTMERGE, or BLK\_TA\_QUEUE.
+
+  \item[blk\_add\_trace\_generic(struct request\_queue *q, struct bio *bio, 
+							int rw, u32 what)]
+	Adds a \emph{generic} trace event -- not one of the request queue
+	or BIO traces. The \emph{what} parameter describes the action being 
+	performed on the BIO (if bio is non-NULL), and is one of
+	BLK\_TA\_PLUG, BLK\_TA\_GETRQ or BLK\_TA\_SLEEPRQ.
+
+  \item[blk\_add\_trace\_pdu\_int(struct request\_queue *q, u32 what,
+  								u32 pdu)]
+	Adds a trace with some payload data -- in this case, an unsigned
+	32-bit entity (the \emph{pdu} parameter). The \emph{what} parameter
+	describes the nature of the payload, and is one of
+	BLK\_TA\_UNPLUG\_IO or BLK\_TA\_UNPLUG\_TIMER.
+
+  \item[blk\_add\_trace\_remap(struct request\_queue *q, struct bio  *bio,
+						dev\_t dev, sector\_t sector)]
+	Adds a trace with a remap event. \emph{dev} and \emph{sector} denote
+	the original device this \emph{bio} was mapped from.
+
+  \item[blk\_add\_trace\_msg(struct request\_queue *q, char *fmt, ...)]
+	Adds a formatted message to the output stream. The total message
+	size can not exceed BLK\_TN\_MSG\_MSG characters (currently
+	1024). Standard format conversions are supported (as supplied
+	by \texttt{vscnprintf}.
+
+\end{description}
+\end{document}
diff --git a/doc/bno_plot.1 b/doc/bno_plot.1
new file mode 100644
index 0000000..bd7eb3c
--- /dev/null
+++ b/doc/bno_plot.1
@@ -0,0 +1,64 @@
+.TH BNO_PLOT 1 "February 22, 2007" "blktrace git\-20080213182518" ""
+
+
+.SH NAME
+bno_plot \- generate interactive 3D plot of IO blocks and sizes
+
+
+.SH SYNOPSIS
+.B bno_plot
+[ \-h | \-\-help ]
+.br
+         [ \-v | \-\-verbose ]
+.br
+         [ \-K | \-\-keys-below ]
+.br
+         [ <file...> ]
+.br
+
+
+.SH DESCRIPTION
+
+bno_plot is a visualization tool for the block layer IO tracing tool called
+blktrace(8).  As noted in its documentation, blktrace 
+is a block layer IO tracing mechanism which provides detailed
+information about request queue operations up to user space.
+
+bno_plot utilizes gnuplot to generate a 3D plot of the block number output from
+btt.  If no \fI<files>\fR are specified, it will utilize all files generated after
+btt was run with \fI-B blknos\fR (meaning: all files of the form \fIblknos*[rw].dat\fR).
+
+The \fI-K\fR option forces bno_plot to put the keys below the graph.  If it is
+not specified, all keys for input files are put in the upper right corner of the
+graph. If the number of devices exceed 10, then bno_plot will automatically
+push the keys under the graph.
+
+To use this utility, the gnuplot package needs to be installed.
+
+To exit the plotter, enter 'quit' or ^D at the 'gnuplot> ' prompt.
+
+.SH AUTHORS
+\fIbno_plot\fR was written by Alan D. Brunelle.  This man page was created
+from the \fIblktrace\fR documentation by Bas Zoetekouw.
+
+
+.SH "REPORTING BUGS"
+Report bugs to <linux\-btrace@vger.kernel.org>
+
+.SH COPYRIGHT
+Copyright \(co 2008 Hewlett-Packard Development Company, L.P.
+.br
+This is free software.  You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.br
+This manual page was created for Debian by Bas Zoetekouw.  It was derived from
+the documentation provided by the authors and it may be used, distributed and
+modified under the terms of the GNU General Public License, version 2.
+.br
+On Debian systems, the text of the GNU General Public License can be found in
+/usr/share/common\-licenses/GPL\-2.
+
+.SH "SEE ALSO"
+btt (1), gnuplot (1), blktrace (8), blkparse (1), verify_blkparse (1), blkrawverify (1)
+
diff --git a/doc/btrace.8 b/doc/btrace.8
new file mode 100644
index 0000000..a1f34c2
--- /dev/null
+++ b/doc/btrace.8
@@ -0,0 +1,88 @@
+.TH BTRACE 8 "March  6, 2007" "blktrace git\-20070306202522" ""
+
+
+.SH NAME
+btrace \- perform live tracing for block devices
+
+
+.SH SYNOPSIS
+.B btrace [\-s] [\-t] [\-w \fIN\fN] [\-n \fIN\fR] [\-b \fIN\fR] [\-r \fI<dbg mnt>\fR] [\-a <\fItrace\fR>...] <\fIdev\fR>...
+.br
+
+
+.SH DESCRIPTION
+
+The \fIbtrace\fR script provides a quick and easy way to do live tracing of
+block devices.  It calls \fIblktrace\fR on the specified devices
+and pipes the output through \fIblkparse\fR for formatting.  See blktrace (8)
+for more in-depth information about how \fIblktrace\fR works.  
+
+.SH OPTIONS
+
+.HP 4
+.B \-s
+Displays data sorted by program (see \fIblkparse\fR (1)).
+
+.HP 4
+.B \-t 
+Displays time deltas per IO (see \fIblkparse\fR (1)).
+
+.HP 4
+.B \-w \fIN\fR
+Sets run time to the number of seconds specified (see \fIblktrace\fR (8)).
+
+.HP 4
+.B \-n \fIN\fR
+Specifies the number of buffers to use (see \fIblktrace\fR (8)).
+
+.HP 4
+.B \-b \fIN\fR
+Specifies buffer size for event extraction (scaled by 1024) (see
+\fIblktrace\fR (8)).
+
+.HP 4
+.B \-r \fI<dbg mnt>\fR
+Specifies the debugfs mountpoint.
+
+.HP 4
+.B \-a <\fItrace\fR>...
+Adds mask to current filter (see \fIblktrace\fR (8)).
+
+.HP 4
+.B <\fIdev\fR>
+Specifies the device to trace.
+
+
+.SH EXAMPLE
+Simply running
+
+    % btrace /dev/sda
+
+will show a trace of the device \fI/dev/sda\fR.
+
+
+.SH AUTHORS
+\fIblkparse\fR was written by Jens Axboe, Alan D. Brunelle and Nathan Scott.  This
+man page was created from the \fIblktrace\fR documentation by Bas Zoetekouw.
+
+
+.SH "REPORTING BUGS"
+Report bugs to <linux\-btrace@vger.kernel.org>
+
+.SH COPYRIGHT
+Copyright \(co 2006 Jens Axboe, Alan D. Brunelle and Nathan Scott.
+.br
+This is free software.  You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.br
+This manual page was created for Debian by Bas Zoetekouw.  It was derived from
+the documentation provided by the authors and it may be used, distributed and
+modified under the terms of the GNU General Public License, version 2.
+.br
+On Debian systems, the text of the GNU General Public License can be found in
+/usr/share/common\-licenses/GPL\-2.
+
+.SH "SEE ALSO"
+blktrace (8), blkparse (1), verify_blkparse (1), blkrawverify (1), btt (1)
+
diff --git a/doc/btrecord.8 b/doc/btrecord.8
new file mode 100644
index 0000000..c0655ab
--- /dev/null
+++ b/doc/btrecord.8
@@ -0,0 +1,210 @@
+.TH BTRECORD 8 "December  8, 2007" "blktrace git\-20071207142532" ""
+
+
+.SH NAME
+btrecord \- recreate IO loads recorded by blktrace
+
+
+.SH SYNOPSIS
+.B Usage: 
+
+btrecord [ \fIoptions\fR ] <\fIdev\fR...>
+
+
+.SH DESCRIPTION
+
+.P
+The \fIbtrecord\fR and \fIbtreplay\fR tools provide the ability to
+record and replay IOs captured by the \fIblktrace\fR utility. Attempts
+are made to maintain ordering, CPU mappings and time-separation of IOs. 
+
+
+.P
+The \fIblktrace\fR utility provides the ability to collect detailed
+traces from the kernel for each IO processed by the block IO layer. The
+traces provide a complete timeline for each IO processed, including
+detailed information concerning when an IO was first received by the block
+IO layer \(em indicating the device, CPU number, time stamp, IO direction,
+sector number and IO size (number of sectors). Using this information,
+one is able to \fBreplay\fR the IO again on the same machine or another
+set up entirely.
+
+.P
+The basic operating work-flow to replay IOs would be something like:
+
+.IP \- 2
+  Run \fIblktrace\fR to collect traces. Here you specify the
+  device or devices that you wish to trace and later replay IOs upon. Note:
+  the only traces you are interested in are \fBQUEUE\fR requests \(em
+  thus, to save system resources (including storage for traces), one could
+  specify the \fI-a queue\fR command line option to \fIblktrace\fR.
+
+.IP \- 2
+  While \fIblktrace\fR is running, you run the workload that you
+  are interested in. 
+
+.IP \- 2
+  When the work load has completed, you stop the \fIblktrace\fR
+  utility (thus saving all traces over the complete workload). 
+
+.IP \- 2
+  You extract the pertinent IO information from the traces saved by
+  \fIblktrace\fR using the \fIbtrecord\fR utility. This will parse
+  each trace file created by \fIblktrace\fR, and crafty IO descriptions
+  to be used in the next phase of the workload processing.
+
+.IP \- 2
+  Once \fIbtrecord\fR has successfully created a series of data
+  files to be processed, you can run the \fIbtreplay\fR utility which
+  attempts to generate the same IOs seen during the sample workload phase.
+
+
+.SH OPTIONS
+
+\-d <\fIdir\fR>
+.br
+\-\-input\-directory=<\fIdir\fR>
+.RS
+Set input directory.
+This option requires a single parameter providing the directory
+name for where input files are to be found. The default directory is the
+current directory (\fI.\fR).
+.RE
+
+\-D <\fIdir\fR>
+.br
+\-\-output\-directory=<\fIdir\fR>
+.RS
+Set output directory.
+This option requires a single parameter providing the directory
+name for where output files are to be found. The default directory is the
+current directory (\fI.\fR).
+.RE
+
+\-F
+.br
+\-\-find\-traces
+.RS
+Find trace files automatically
+This option instructs \fIbtreplay\fR to go find all the trace files in the
+directory specified (either via the \fI-d\fR option, or in the default
+directory (\fI.\fR).
+.RE
+
+\-h
+.br
+\-\-help
+.RS
+Show help and exit.
+.RE
+
+\-V
+.br
+\-\-version
+.RS
+Show version number and exit.
+.RE
+
+\-m <\fInanoseconds\fR>
+.br
+\-\-input\-base=<\fInanoseconds\fR>
+.RS
+The \fI\-m\fR option requires a single parameter which specifies an
+amount of time (in nanoseconds) to include in any one bunch of IOs that
+are to be processed. The smaller the value, the smaller the number of
+IOs processed at one time \(em perhaps yielding in more realistic replay.
+However, after a certain point the amount of overhead per bunch may result
+in additional real replay time, thus yielding less accurate replay times.
+.P
+The default value is 10,000,000 nanoseconds (10 milliseconds).
+.RE
+
+\-M <\fInum\fR>
+.br
+\-\-max\-pkts=<\fInum\fR>
+.RS
+Set maximum number of packets per bunch.
+The \fI\-M\fR option requires a single parameter which specifies the
+maximum number of IOs to store in a single bunch. As with the \fI\-m\fR
+option, smaller values may or may not yield more accurate replay times.
+
+The default value is 8, with a maximum value of up to 512 being supported.
+.RE
+
+\-o <\fIbasename\fR>
+.br
+\-\-output\-base=<\fIbasename\fR>
+.RS
+Set base name for output files.
+Each output file has 3 fields:
+.IP 1. 3
+ Device identifier (taken directly from the device name of the
+ \fIblktrace\fR output file).
+.IP 2. 3
+ \fIbtrecord\fR base name \(em by default ``replay''.
+.IP 3. 3
+ The CPU number (again, taken directly from the
+ \fIblktrace\fR output file name).
+.P
+This option requires a single parameter that will override the default name
+(replay), and replace it with the specified value.
+.RE
+
+\-v
+.br
+\-\-verbose
+.RS
+Enable verbose output.
+This option will output some simple statistics at the end of a successful
+run.  Example output is:
+.nf
+.P
+sdab:0: 580661 pkts (tot), 126030 pkts (replay), 89809 bunches, 1.4 pkts/bunch
+sdab:1: 2559775 pkts (tot), 430172 pkts (replay), 293029 bunches, 1.5 pkts/bunch
+sdab:2: 653559 pkts (tot), 136522 pkts (replay), 102288 bunches, 1.3 pkts/bunch
+sdab:3: 474773 pkts (tot), 117849 pkts (replay), 69572 bunches, 1.7 pkts/bunch
+.fi
+.P
+The meaning of the columns is:
+.IP 1. 3
+  The first field contains the device name and CPU identifier. Thus:
+  \fIsdab:0:\fR means the device \fIsdab\fR and traces on CPU 0. 
+.IP 2.
+  The second field contains the total number of packets processed for each
+  device file. 
+.IP 3.
+  The next field shows the number of packets eligible for replay. 
+.IP 4.
+  The fourth field contains the total number of IO bunches. 
+.IP 5.
+  The last field shows the average number of IOs per bunch recorded.
+.RE
+
+
+.SH AUTHORS
+\fIbtrecord\fR was written by Alan D. Brunelle.  This
+man page was created from the \fIbtreplay\fR documentation by Bas Zoetekouw.
+
+
+.SH "REPORTING BUGS"
+Report bugs to <linux\-btrace@vger.kernel.org>
+
+.SH COPYRIGHT
+Copyright \(co 2007 Alan D. Brunelle, Alan D. Brunelle and Nathan Scott.
+.br
+This is free software.  You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.br
+This manual page was created for Debian by Bas Zoetekouw.  It was derived from
+the documentation provided by the authors and it may be used, distributed and
+modified under the terms of the GNU General Public License, version 2.
+.br
+On Debian systems, the text of the GNU General Public License can be found in
+/usr/share/common\-licenses/GPL\-2.
+
+.SH "SEE ALSO"
+The full documentation for btreplay can be found in /usr/share/doc/blktrace on Debian systems.
+.br
+blktrace (8), blkparse (1), btreplay (8)
+
diff --git a/doc/btreplay.8 b/doc/btreplay.8
new file mode 100644
index 0000000..1efcd0d
--- /dev/null
+++ b/doc/btreplay.8
@@ -0,0 +1,233 @@
+.TH BTREPLAY 8 "December  8, 2007" "blktrace git\-20071207142532" ""
+
+
+.SH NAME
+btreplay \- recreate IO loads recorded by blktrace
+
+
+.SH SYNOPSIS
+.B btreplay [ \fIoptions\fR ] <\fIdev\fR...>
+
+
+.SH DESCRIPTION
+
+.P
+The \fIbtrecord\fR and \fIbtreplay\fR tools provide the ability to
+record and replay IOs captured by the \fIblktrace\fR utility. Attempts
+are made to maintain ordering, CPU mappings and time-separation of IOs. 
+
+
+.P
+The \fIblktrace\fR utility provides the ability to collect detailed
+traces from the kernel for each IO processed by the block IO layer. The
+traces provide a complete timeline for each IO processed, including
+detailed information concerning when an IO was first received by the block
+IO layer \(em indicating the device, CPU number, time stamp, IO direction,
+sector number and IO size (number of sectors). Using this information,
+one is able to \fBreplay\fR the IO again on the same machine or another
+set up entirely.
+
+.P
+The basic operating work-flow to replay IOs would be something like:
+
+.IP \- 2
+  Run \fIblktrace\fR to collect traces. Here you specify the
+  device or devices that you wish to trace and later replay IOs upon. Note:
+  the only traces you are interested in are \fBQUEUE\fR requests \(em
+  thus, to save system resources (including storage for traces), one could
+  specify the \fI-a queue\fR command line option to \fIblktrace\fR.
+
+.IP \- 2
+  While \fIblktrace\fR is running, you run the workload that you
+  are interested in. 
+
+.IP \- 2
+  When the work load has completed, you stop the \fIblktrace\fR
+  utility (thus saving all traces over the complete workload). 
+
+.IP \- 2
+  You extract the pertinent IO information from the traces saved by
+  \fIblktrace\fR using the \fIbtrecord\fR utility. This will parse
+  each trace file created by \fIblktrace\fR, and crafty IO descriptions
+  to be used in the next phase of the workload processing.
+
+.IP \- 2
+  Once \fIbtrecord\fR has successfully created a series of data
+  files to be processed, you can run the \fIbtreplay\fR utility which
+  attempts to generate the same IOs seen during the sample workload phase.
+
+
+.SH OPTIONS
+
+\-c <\fInum\fR>
+.br
+\-\-cpus=<\fInum\fR>
+.RS
+Set number of CPUs to use.
+.RE
+
+\-d <\fIdir\fR>
+.br
+\-\-input\-directory=<\fIdir\fR>
+.RS
+Set input directory.
+This option requires a single parameter providing the directory
+name for where input files are to be found. The default directory is the
+current directory (\fI.\fR).
+.RE
+
+\-F
+.br
+\-\-find\-records
+.RS
+Find record files automatically
+This option instructs \fIbtreplay\fR to go find all the record files in the
+directory specified (either via the \fI-d\fR option, or in the default
+directory (\fI.\fR).
+.RE
+
+\-h
+.br
+\-\-help
+.RS
+Show help and exit.
+.RE
+
+\-i <\fIbasename\fR>
+.br
+\-\-input\-base=<\fIbasename\fR>
+.RS
+Set base name for input files.
+Each input file has 3 fields:
+.IP 1. 3
+ Device identifier (taken directly from the device name of the
+ \fIblktrace\fR output file).
+.IP 2. 3
+ \fIbtrecord\fR base name \(em by default ``replay''.
+.IP 3. 3
+ The CPU number (again, taken directly from the
+ \fIblktrace\fR output file name).
+.P
+This option requires a single parameter that will override the default name
+(replay), and replace it with the specified value.
+.RE
+
+\-I <\fInum\fR>
+.br
+\-\-iterations=<\fInum\fR>
+.RS
+Set number of iterations to run.
+This option requires a single parameter which specifies the number of times
+to run through the input files. The default value is 1
+.RE
+
+\-M <\fIfilename\fR>
+.br
+\-\-map\-devs=<\fIfilename\fR>
+.RS
+Specify device mappings.  
+This option requires a single parameter which specifies the name of a
+file contain device mappings. The file must be very simply managed, with
+just two pieces of data per line:
+
+.IP \- 2
+  The device name on the recorded system (with the '\fI/dev/\fR'
+  removed). Example: \fI/dev/sda\fR would just be \fIsda\fR.
+
+.IP \- 2
+  The device name on the replay system to use (again, without the
+  '\fI/dev/\fR' path prepended).
+
+.P
+An example file for when one would map devices \fI/dev/sda\fR and
+\fI/dev/sdb\fR on the recorded system to \fIdev/sdg\fR and
+\fIsdh\fR on the replay system would be:
+
+.nf
+.IP
+sda sdg
+sdb sdh
+.fi
+
+.P
+The only entries in the file that are allowed are these two element lines \(em
+we do not (yet?) support the notion of blank lines, or comment lines, or the
+like.
+
+.P
+The utility allows for multiple \fI-M\fR options to be
+supplied on the command line.
+.RE
+
+\-N
+.br
+\-\-no\-stalls
+.RS
+Disable pre-bunch stalls.
+When specified on the command line, all pre-bunch stall indicators will be
+ignored. IOs will be replayed without inter-bunch delays.
+.RE
+
+\-v
+.br
+\-\-verbose
+.RS
+Enable verbose output.
+When specified on the command line, this option instructs \fIbtreplay\fR
+to store information concerning each \fBstall\fR and IO operation
+performed by \fIbtreplay\fR. The name of each file so created will be
+the input file name used with an extension of \fI.rep\fR appended onto
+it. Thus, an input file of the name \fIsdab.replay.3\fR would generate a
+verbose output file with the name \fIsdab.replay.3.rep\fR in the
+directory specified for input files.
+.P
+In addition, \fIbtreplay\fR will also output to \fIstderr\fR the
+names of the input files being processed.
+.RE
+
+\-V
+.br
+\-\-version
+.RS
+Show version number and exit.
+.RE
+
+\-W
+.br
+\-\-write-enable
+.RS
+Enable writing during replay.
+As a precautionary measure, by default \fIbtreplay\fR will not
+process \fBwrite\fR requests. In order to enable \fIbtreplay\fR to
+actually \fBwrite\fR to devices one must explicitly specify the
+\fI\-W\fR option.
+.RE
+
+
+.SH AUTHORS
+\fIbtreplay\fR was written by Alan D. Brunelle.  This
+man page was created from the \fIbtreplay\fR documentation by Bas Zoetekouw.
+
+
+.SH "REPORTING BUGS"
+Report bugs to <linux\-btrace@vger.kernel.org>
+
+.SH COPYRIGHT
+Copyright \(co 2007 Alan D. Brunelle, Alan D. Brunelle and Nathan Scott.
+.br
+This is free software.  You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.br
+This manual page was created for Debian by Bas Zoetekouw.  It was derived from
+the documentation provided by the authors and it may be used, distributed and
+modified under the terms of the GNU General Public License, version 2.
+.br
+On Debian systems, the text of the GNU General Public License can be found in
+/usr/share/common\-licenses/GPL\-2.
+
+.SH "SEE ALSO"
+The full documentation for btreplay can be found in /usr/share/doc/blktrace on Debian systems.
+.br
+blktrace (8), blkparse (1), btrecord (8)
+
diff --git a/doc/btt.1 b/doc/btt.1
new file mode 100644
index 0000000..b9c9ee7
--- /dev/null
+++ b/doc/btt.1
@@ -0,0 +1,369 @@
+.TH BTT 1 "September 29, 2007" "blktrace git\-20070910192508" ""
+
+
+.SH NAME
+btt \- analyse block i/o traces produces by blktrace
+
+
+.SH SYNOPSIS
+.B btt 
+.br
+[ \-a               | \-\-seek\-absolute ]
+.br
+[ \-A               | \-\-all\-data ]
+.br
+[ \-B <\fIoutput name\fR> | \-\-dump\-blocknos=<\fIoutput name\fR> ]
+.br
+[ \-d <\fIseconds\fR>     | \-\-range\-delta=<\fIseconds\fR> ]
+.br
+[ \-D <\fIdev;...\fR>     | \-\-devices=<\fIdev;...\fR> ]
+.br
+[ \-e <\fIexe,...\fR>     | \-\-exes=<\fIexe,...\fR>  ]
+.br
+[ \-h               | \-\-help ]
+.br
+[ \-i <\fIinput name\fR>  | \-\-input\-file=<\fIinput name\fR> ]
+.br
+[ \-I <\fIoutput name\fR> | \-\-iostat=<\fIoutput name\fR> ]
+.br
+[ \-l <\fIoutput name\fR> | \-\-d2c\-latencies=<\fIoutput name\fR> ]
+.br
+[ \-L <\fIfreq\fR>        | \-\-periodic\-latencies=<\fIfreq\fR> ]
+.br
+[ \-M <\fIdev map\fR>     | \-\-dev\-maps=<\fIdev map\fR>
+.br
+[ \-o <\fIoutput name\fR> | \-\-output\-file=<\fIoutput name\fR> ]
+.br
+[ \-p <\fIoutput name\fR> | \-\-per\-io\-dump=<\fIoutput name\fR> ]
+.br
+[ \-P <\fIoutput name\fR> | \-\-per\-io\-trees=<\fIoutput name\fR> ]
+.br
+[ \-q <\fIoutput name\fR> | \-\-q2c\-latencies=<\fIoutput name\fR> ]
+.br
+[ \-Q <\fIoutput name\fR> | \-\-active\-queue\-depth=<\fIoutput name\fR> ]
+.br
+[ \-r               | \-\-no\-remaps ]
+.br
+[ \-s <\fIoutput name\fR> | \-\-seeks=<\fIoutput name\fR> ]
+.br
+[ \-S <\fIinterval\fR>    | \-\-iostat\-interval=<\fIinterval\fR> ]
+.br
+[ \-t <\fIsec\fR>         | \-\-time\-start=<\fIsec\fR> ]
+.br
+[ \-T <\fIsec\fR>         | \-\-time\-end=<\fIsec\fR> ]
+.br
+[ \-u <\fIoutput name\fR> | \-\-unplug\-hist=<\fIoutput name\fR> ]
+.br
+[ \-v               | \-\-verbose ]
+.br
+[ \-V               | \-\-version ]
+.br
+[ \-z <\fIoutput name\fR> | \-\-q2d\-latencies=<\fIoutput name\fR> ]
+
+
+.SH DESCRIPTION
+
+btt is a post\-processing tool for the block layer IO tracing tool called
+blktrace(8).  As noted in its documentation, blktrace 
+is a block layer IO tracing mechanism which provides detailed
+information about request queue operations up to user space.
+
+btt will take in binary dump data from blkparse, and analyse the events,
+producing a series of output from the analysis. It will also build .dat
+files containing "range data" \-\- showing things like Q activity (periods
+of time while Q events are being produced), C activity (likewise for
+command completions), and etc.
+
+Included with the distribution is a simple 3D plotting utility,
+\fIbno_plot\fR, which can plot the block numbers btt outputs if the \fI-B\fR
+option is specified. The display will display each IO generated, with the time
+(seconds) along the X-axis, the block number (start) along the Y-axis and the
+number of blocks transferred in the IO represented along the Z-axis.
+
+
+.SH OPTIONS
+
+.B \-a
+.br
+.B \-\-seek\-absolute
+.RS 4
+When specified on the command line, this directs btt to calculate
+seek distances based solely upon the ending block address of one IO,
+and the start of the next.  By default \fBbtt\fR uses the concept
+of the closeness to either the beginning or end of the previous IO. See
+the Users Manual for more details about seek distances.
+.RE
+
+.B \-A
+.br
+.B \-\-all\-data
+.RS 4
+Normally \fBbtt\fR will not print out verbose information concerning
+per-process and per-device data.  If you desire that level of detail you can
+specify this option.
+.RE
+
+.B \-B <\fIoutput name\fR>
+.br
+.B \-\-dump\-blocknos=<\fIoutput name\fR>
+.RS 4
+This option will output absolute block numbers to three files prefixed
+by the specified output name:
+.HP
+.I prefix_device_r.dat
+.br
+All read block numbers are output, first column is time (seconds), second is
+the block number, and the third column is the ending block number.
+.HP
+.I prefix_device_w.dat
+.br
+All write block numbers are output, first column is time (seconds), second is
+the block number, and the third column is the ending block number.
+.HP
+.I prefix_device_c.dat
+.br
+All block numbers (read and write) are output, first column is time (seconds),
+second is the block number, and the third column is the ending block number.
+.RE
+
+.B \-d <\fIseconds\fR>
+.br
+.B \-\-range\-delta=<\fIseconds\fR>
+.RS 4
+\fBbtt\fR outputs a file containing Q and C activity, the notion of active
+traces simply means that there are Q or C traces occurring within a certain
+period of each other. The default values is 0.1 seconds; with this option
+allowing one to change that granularity. The smaller the value, the more data
+points provided.
+.RE
+
+.B \-D <\fIdev;...\fR>
+.br
+.B \-\-devices=<\fIdev;...\fR>
+.RS 4
+Normally, \fBbtt\fR will produce data for all devices detected in the
+traces parsed. With this option, one can reduce the analysis to one or more
+devices provided in the string passed to this option. The device identifiers
+are the major and minor number of each device, and each device identifier is
+separated by a colon (:). A valid specifier for devices 8,0 and 8,8 would then
+be: \fI8,0:8,8\fR.
+.RE
+
+.B \-e <\fIexe,...\fR>
+.br
+.B \-\-exes=<\fIexe,...\fR>
+.RS 4
+The \-e option supplies the list of executables that will have I/Os
+analysed.
+.RE
+
+.B \-h
+.br
+.B \-\-help
+.RS 4
+Shows a short summary of possible command line option
+.RE
+
+.B \-i <\fIinput name\fR>
+.br
+.B \-\-input\-file <\fIinput file\fR>
+.RS 4
+Specifies the input file to analyse.  This should be a trace file produced
+by \fIblktrace\fR (8).
+.RE
+
+.B \-I <\fIoutput name\fR>
+.br
+.B \-\-iostat=<\fIoutput name\fR>
+.RS 4
+The \-I option directs btt to output iostat\-like data to the specified
+file.  Refer to the iostat (sysstat) documentation for details on the
+data columns. 
+.RE
+
+.B \-l <\fIoutput name\fR>
+.br
+.B \-\-d2c\-latencies=<\fIoutput name\fR>
+.RS 4
+The \-l option allows one to output per\-IO D2C latencies
+respectively. The supplied argument provides the basis for the output
+name for each device.
+.RE
+
+.B \-L <\fIfreq\fR>
+.br
+.B \-\-periodic\-latencies=<\fIfreq\fR>
+.RS 4
+The \-L option allows one to output periodic latency information for both
+Q2C and D2C latencies. The frequency specified will regulate how often
+an average latency is output -- a floating point value expressing seconds.
+.RE
+
+.B \-M <\fIdev map\fR>
+.br
+.B \-\-dev\-maps=<\fIdev map\fR>
+.RS 4
+The \-M option takes in a file generated by the provided script
+(gen_disk_info.py), and allows for better output of device names.
+.RE
+
+.B \-o <\fIoutput name\fR>
+.br
+.B \-\-output\-file=<\fIoutput name\fR>
+.RS 4
+Specifies the output file name.
+.RE
+
+.B \-p <\fIoutput name\fR>
+.br
+.B \-\-per\-io\-dump=<\fIoutput name\fR>
+.RS 4
+The \-p option will generate a file that contains a list of all IO
+"sequences" \- showing the parts of each IO (Q, A, I/M, D, & C).
+.RE
+
+.B \-P <\fIoutput name\fR>
+.br
+.B \-\-per\-io\-trees=<\fIoutput name\fR>
+.RS 4
+The \-P option will generate a file that contains a list of all IO
+"sequences" \- showing only the Q, D & C operation times. The D & C
+time values are separated from the Q time values with a vertical bar.
+.RE
+
+.B \-q <\fIoutput name\fR>
+.br
+.B \-\-q2c\-latencies=<\fIoutput name\fR>
+.RS 4
+The \-q option allows one to output per\-IO Q2C latencies
+respectively. The supplied argument provides the basis for the output
+name for each device.
+.RE
+
+.B \-Q <\fIoutput name\fR>
+.br
+.B \-\-active\-queue\-depth=<\fIoutput name\fR>
+.RS 4
+The \-Q option allows one to output data files showing the time stamp
+and the depth of active commands (those issued but not completed).
+.RE
+
+.B \-r
+.br
+.B \-\-no\-remaps
+.RS 4
+Ignore remap traces; older kernels did not implement the full remap
+PDU.
+.RE
+
+.B \-s <\fIoutput name\fR>
+.br
+.B \-\-seeks=<\fIoutput name\fR>
+.RS 4
+The \-s option instructs btt to output seek data, the argument provided
+is the basis for file names output. There are two files per device,
+read seeks and write seeks.
+.RE
+
+.B \-S <\fIinterval\fR>
+.br
+.B \-\-iostat\-interval=<\fIinterval\fR>
+.RS 4
+The \-S option specifies the interval to use between data
+output, it defaults to once per second.
+.RE
+
+.B \-t <\fIsec\fR>
+.br
+.B \-\-time\-start=<\fIsec\fR>
+.br
+.B \-T <\fIsec\fR>
+.br
+.B \-\-time\-end=<\fIsec\fR>
+.RS 4
+The \-t/\-T options allow one to set a start and/or end time for analysing
+\- analysing will only be done for traces after \-t's argument and before
+\-T's argument. (\-t and \-T are optional, so if you specify just \-t,
+analysis will occur for all traces after the time specified. Similarly,
+if only \-T is specified, analysis stops after \-T's seconds.)
+.RE
+
+.B \-u <\fIoutput name\fR>
+.br
+.B \-\-unplug\-hist=<\fIoutput name\fR>
+.RS 4
+This option instructs \fBbtt\fR to generate a data file containing histogram
+information for unplug traces on a per device basis. It shows how many
+times an unplug was hit with a specified number of IOs released. There are 21
+output values into the file, as follows:
+
+.RS 4
+a value of 0 represents 0..4 counts
+.br
+a value of 1 represents 5..9 counts
+.br
+a value of 2 represents 10..14 counts
+.br
+etc, until
+.br
+a value of 20 represents 100+ counts
+.br
+.RE
+
+The file name(s) generated use the text string passed as an argument for
+the prefix, followed by the device identifier in \fImajor,minor\fR
+form, with a \fI.dat\fR extension.  For example, with \fI\-u
+up_hist\fR specified on the command line: \fIup_hist_008,032.dat\fR.
+.RE
+
+.B \-V
+.br
+.B \-\-version
+.RS 4
+Shows the version of btt.
+.RE
+
+.B \-v
+.br
+.B \-\-verbose
+.RS 4
+Requests a more verbose output.
+.RE
+
+.B \-z <\fIoutput name\fR>
+.br
+.B \-\-q2d\-latencies=<\fIoutput name\fR>
+.RS 4
+The \-z option allows one to output per\-IO Q2D latencies
+respectively. The supplied argument provides the basis for the output
+name for each device.
+.RE
+
+
+.SH AUTHORS
+\fIbtt\fR was written by Alan D. Brunelle.  This man page was created
+from the \fIblktrace\fR documentation by Bas Zoetekouw.
+
+
+.SH "REPORTING BUGS"
+Report bugs to <linux\-btrace@vger.kernel.org>
+
+.SH COPYRIGHT
+Copyright \(co 2006 Jens Axboe, Alan D. Brunelle and Nathan Scott.
+.br
+This is free software.  You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.br
+This manual page was created for Debian by Bas Zoetekouw.  It was derived from
+the documentation provided by the authors and it may be used, distributed and
+modified under the terms of the GNU General Public License, version 2.
+.br
+On Debian systems, the text of the GNU General Public License can be found in
+/usr/share/common\-licenses/GPL\-2.
+
+.SH "SEE ALSO"
+The btt Users Guide, which can be found in /usr/share/doc/blktrace/btt.pdf
+.br
+bno_plot (1), blktrace (8), blkparse (1), verify_blkparse (1), blkrawverify (1), btt (1)
+
diff --git a/doc/verify_blkparse.1 b/doc/verify_blkparse.1
new file mode 100644
index 0000000..c209ef8
--- /dev/null
+++ b/doc/verify_blkparse.1
@@ -0,0 +1,44 @@
+.TH VERIFY_BLKPARSE 1 "March  6, 2007" "blktrace git\-20070306202522" ""
+
+
+.SH NAME
+verify_blkparse \- verifies an output file produced by blkparse
+
+
+.SH SYNOPSIS
+.B verify_blkparse <\fIfilename\fR>
+.br
+
+
+.SH DESCRIPTION
+
+Verifies an output file from blkparse. All it does is check if the events in
+the file are correctly time ordered. If an entry is found that isn't ordered,
+it's dumped to stdout.
+
+
+.SH AUTHORS
+\fIblkparse\fR was written by Jens Axboe, Alan D. Brunelle and Nathan Scott.  This
+man page was created from the \fIblktrace\fR documentation by Bas Zoetekouw.
+
+
+.SH "REPORTING BUGS"
+Report bugs to <linux\-btrace@vger.kernel.org>
+
+.SH COPYRIGHT
+Copyright \(co 2006 Jens Axboe, Alan D. Brunelle and Nathan Scott.
+.br
+This is free software.  You may redistribute copies of it under the terms of
+the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
+There is NO WARRANTY, to the extent permitted by law.
+.br
+This manual page was created for Debian by Bas Zoetekouw.  It was derived from
+the documentation provided by the authors and it may be used, distributed and
+modified under the terms of the GNU General Public License, version 2.
+.br
+On Debian systems, the text of the GNU General Public License can be found in
+/usr/share/common\-licenses/GPL\-2.
+
+.SH "SEE ALSO"
+btrace (8), blktrace (8), blkparse (1), blkrawverify (1), btt (1)
+
diff --git a/jhash.h b/jhash.h
new file mode 100644
index 0000000..4cebd23
--- /dev/null
+++ b/jhash.h
@@ -0,0 +1,157 @@
+#ifndef _LINUX_JHASH_H
+#define _LINUX_JHASH_H
+
+/* jhash.h: Jenkins hash support.
+ *
+ * Copyright (C) 2006. Bob Jenkins (bob_jenkins@burtleburtle.net)
+ *
+ * http://burtleburtle.net/bob/hash/
+ *
+ * These are the credits from Bob's sources:
+ *
+ * lookup3.c, by Bob Jenkins, May 2006, Public Domain.
+ *
+ * These are functions for producing 32-bit hashes for hash table lookup.
+ * hashword(), hashlittle(), hashlittle2(), hashbig(), mix(), and final() 
+ * are externally useful functions.  Routines to test the hash are included 
+ * if SELF_TEST is defined.  You can use this free for any purpose.  It's in
+ * the public domain.  It has no warranty.
+ *
+ * Copyright (C) 2009 Jozsef Kadlecsik (kadlec@blackhole.kfki.hu)
+ *
+ * I've modified Bob's hash to be useful in the Linux kernel, and
+ * any bugs present are my fault.  Jozsef
+ */
+
+#define __rot(x,k) (((x)<<(k)) | ((x)>>(32-(k))))
+
+/* __jhash_mix - mix 3 32-bit values reversibly. */
+#define __jhash_mix(a,b,c) \
+{ \
+  a -= c;  a ^= __rot(c, 4);  c += b; \
+  b -= a;  b ^= __rot(a, 6);  a += c; \
+  c -= b;  c ^= __rot(b, 8);  b += a; \
+  a -= c;  a ^= __rot(c,16);  c += b; \
+  b -= a;  b ^= __rot(a,19);  a += c; \
+  c -= b;  c ^= __rot(b, 4);  b += a; \
+}
+
+/* __jhash_final - final mixing of 3 32-bit values (a,b,c) into c */
+#define __jhash_final(a,b,c) \
+{ \
+  c ^= b; c -= __rot(b,14); \
+  a ^= c; a -= __rot(c,11); \
+  b ^= a; b -= __rot(a,25); \
+  c ^= b; c -= __rot(b,16); \
+  a ^= c; a -= __rot(c,4);  \
+  b ^= a; b -= __rot(a,14); \
+  c ^= b; c -= __rot(b,24); \
+}
+
+/* The golden ration: an arbitrary value */
+#define JHASH_GOLDEN_RATIO	0xdeadbeef
+
+/* The most generic version, hashes an arbitrary sequence
+ * of bytes.  No alignment or length assumptions are made about
+ * the input key. The result depends on endianness.
+ */
+static inline u32 jhash(const void *key, u32 length, u32 initval)
+{
+	u32 a,b,c;
+	const u8 *k = key;
+
+	/* Set up the internal state */
+	a = b = c = JHASH_GOLDEN_RATIO + length + initval;
+
+	/* all but the last block: affect some 32 bits of (a,b,c) */
+	while (length > 12) {
+    		a += (k[0] + ((u32)k[1]<<8) + ((u32)k[2]<<16) + ((u32)k[3]<<24));
+		b += (k[4] + ((u32)k[5]<<8) + ((u32)k[6]<<16) + ((u32)k[7]<<24));
+		c += (k[8] + ((u32)k[9]<<8) + ((u32)k[10]<<16) + ((u32)k[11]<<24));
+		__jhash_mix(a, b, c);
+		length -= 12;
+		k += 12;
+	}
+
+	/* last block: affect all 32 bits of (c) */
+	/* all the case statements fall through */
+	switch (length) {
+	case 12: c += (u32)k[11]<<24;
+	case 11: c += (u32)k[10]<<16;
+	case 10: c += (u32)k[9]<<8;
+	case 9 : c += k[8];
+	case 8 : b += (u32)k[7]<<24;
+	case 7 : b += (u32)k[6]<<16;
+	case 6 : b += (u32)k[5]<<8;
+	case 5 : b += k[4];
+	case 4 : a += (u32)k[3]<<24;
+	case 3 : a += (u32)k[2]<<16;
+	case 2 : a += (u32)k[1]<<8;
+	case 1 : a += k[0];
+		__jhash_final(a, b, c);
+	case 0 :
+		break;
+	}
+
+	return c;
+}
+
+/* A special optimized version that handles 1 or more of u32s.
+ * The length parameter here is the number of u32s in the key.
+ */
+static inline u32 jhash2(u32 *k, u32 length, u32 initval)
+{
+	u32 a, b, c;
+
+	/* Set up the internal state */
+	a = b = c = JHASH_GOLDEN_RATIO + (length<<2) + initval;
+
+	/* handle most of the key */
+	while (length > 3) {
+		a += k[0];
+		b += k[1];
+		c += k[2];
+		__jhash_mix(a, b, c);
+		length -= 3;
+		k += 3;
+	}
+
+	/* handle the last 3 u32's */
+	/* all the case statements fall through */ 
+	switch (length) {
+	case 3: c += k[2];
+	case 2: b += k[1];
+	case 1: a += k[0];
+		__jhash_final(a, b, c);
+	case 0:     /* case 0: nothing left to add */
+		break;
+	}
+
+	return c;
+}
+
+/* A special ultra-optimized versions that knows they are hashing exactly
+ * 3, 2 or 1 word(s).
+ */
+static inline u32 jhash_3words(u32 a, u32 b, u32 c, u32 initval)
+{
+	a += JHASH_GOLDEN_RATIO + initval;
+	b += JHASH_GOLDEN_RATIO + initval;
+	c += JHASH_GOLDEN_RATIO + initval;
+
+	__jhash_final(a, b, c);
+
+	return c;
+}
+
+static inline u32 jhash_2words(u32 a, u32 b, u32 initval)
+{
+	return jhash_3words(0, a, b, initval);
+}
+
+static inline u32 jhash_1word(u32 a, u32 initval)
+{
+	return jhash_3words(0, 0, a, initval);
+}
+
+#endif /* _LINUX_JHASH_H */
diff --git a/rbtree.c b/rbtree.c
new file mode 100644
index 0000000..6ad800f
--- /dev/null
+++ b/rbtree.c
@@ -0,0 +1,389 @@
+/*
+  Red Black Trees
+  (C) 1999  Andrea Arcangeli <andrea@suse.de>
+  (C) 2002  David Woodhouse <dwmw2@infradead.org>
+  
+  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
+
+  linux/lib/rbtree.c
+*/
+
+#include "rbtree.h"
+
+static void __rb_rotate_left(struct rb_node *node, struct rb_root *root)
+{
+	struct rb_node *right = node->rb_right;
+	struct rb_node *parent = rb_parent(node);
+
+	if ((node->rb_right = right->rb_left))
+		rb_set_parent(right->rb_left, node);
+	right->rb_left = node;
+
+	rb_set_parent(right, parent);
+
+	if (parent)
+	{
+		if (node == parent->rb_left)
+			parent->rb_left = right;
+		else
+			parent->rb_right = right;
+	}
+	else
+		root->rb_node = right;
+	rb_set_parent(node, right);
+}
+
+static void __rb_rotate_right(struct rb_node *node, struct rb_root *root)
+{
+	struct rb_node *left = node->rb_left;
+	struct rb_node *parent = rb_parent(node);
+
+	if ((node->rb_left = left->rb_right))
+		rb_set_parent(left->rb_right, node);
+	left->rb_right = node;
+
+	rb_set_parent(left, parent);
+
+	if (parent)
+	{
+		if (node == parent->rb_right)
+			parent->rb_right = left;
+		else
+			parent->rb_left = left;
+	}
+	else
+		root->rb_node = left;
+	rb_set_parent(node, left);
+}
+
+void rb_insert_color(struct rb_node *node, struct rb_root *root)
+{
+	struct rb_node *parent, *gparent;
+
+	while ((parent = rb_parent(node)) && rb_is_red(parent))
+	{
+		gparent = rb_parent(parent);
+
+		if (parent == gparent->rb_left)
+		{
+			{
+				register struct rb_node *uncle = gparent->rb_right;
+				if (uncle && rb_is_red(uncle))
+				{
+					rb_set_black(uncle);
+					rb_set_black(parent);
+					rb_set_red(gparent);
+					node = gparent;
+					continue;
+				}
+			}
+
+			if (parent->rb_right == node)
+			{
+				register struct rb_node *tmp;
+				__rb_rotate_left(parent, root);
+				tmp = parent;
+				parent = node;
+				node = tmp;
+			}
+
+			rb_set_black(parent);
+			rb_set_red(gparent);
+			__rb_rotate_right(gparent, root);
+		} else {
+			{
+				register struct rb_node *uncle = gparent->rb_left;
+				if (uncle && rb_is_red(uncle))
+				{
+					rb_set_black(uncle);
+					rb_set_black(parent);
+					rb_set_red(gparent);
+					node = gparent;
+					continue;
+				}
+			}
+
+			if (parent->rb_left == node)
+			{
+				register struct rb_node *tmp;
+				__rb_rotate_right(parent, root);
+				tmp = parent;
+				parent = node;
+				node = tmp;
+			}
+
+			rb_set_black(parent);
+			rb_set_red(gparent);
+			__rb_rotate_left(gparent, root);
+		}
+	}
+
+	rb_set_black(root->rb_node);
+}
+
+static void __rb_erase_color(struct rb_node *node, struct rb_node *parent,
+			     struct rb_root *root)
+{
+	struct rb_node *other;
+
+	while ((!node || rb_is_black(node)) && node != root->rb_node)
+	{
+		if (parent->rb_left == node)
+		{
+			other = parent->rb_right;
+			if (rb_is_red(other))
+			{
+				rb_set_black(other);
+				rb_set_red(parent);
+				__rb_rotate_left(parent, root);
+				other = parent->rb_right;
+			}
+			if ((!other->rb_left || rb_is_black(other->rb_left)) &&
+			    (!other->rb_right || rb_is_black(other->rb_right)))
+			{
+				rb_set_red(other);
+				node = parent;
+				parent = rb_parent(node);
+			}
+			else
+			{
+				if (!other->rb_right || rb_is_black(other->rb_right))
+				{
+					struct rb_node *o_left;
+					if ((o_left = other->rb_left))
+						rb_set_black(o_left);
+					rb_set_red(other);
+					__rb_rotate_right(other, root);
+					other = parent->rb_right;
+				}
+				rb_set_color(other, rb_color(parent));
+				rb_set_black(parent);
+				if (other->rb_right)
+					rb_set_black(other->rb_right);
+				__rb_rotate_left(parent, root);
+				node = root->rb_node;
+				break;
+			}
+		}
+		else
+		{
+			other = parent->rb_left;
+			if (rb_is_red(other))
+			{
+				rb_set_black(other);
+				rb_set_red(parent);
+				__rb_rotate_right(parent, root);
+				other = parent->rb_left;
+			}
+			if ((!other->rb_left || rb_is_black(other->rb_left)) &&
+			    (!other->rb_right || rb_is_black(other->rb_right)))
+			{
+				rb_set_red(other);
+				node = parent;
+				parent = rb_parent(node);
+			}
+			else
+			{
+				if (!other->rb_left || rb_is_black(other->rb_left))
+				{
+					register struct rb_node *o_right;
+					if ((o_right = other->rb_right))
+						rb_set_black(o_right);
+					rb_set_red(other);
+					__rb_rotate_left(other, root);
+					other = parent->rb_left;
+				}
+				rb_set_color(other, rb_color(parent));
+				rb_set_black(parent);
+				if (other->rb_left)
+					rb_set_black(other->rb_left);
+				__rb_rotate_right(parent, root);
+				node = root->rb_node;
+				break;
+			}
+		}
+	}
+	if (node)
+		rb_set_black(node);
+}
+
+void rb_erase(struct rb_node *node, struct rb_root *root)
+{
+	struct rb_node *child, *parent;
+	int color;
+
+	if (!node->rb_left)
+		child = node->rb_right;
+	else if (!node->rb_right)
+		child = node->rb_left;
+	else
+	{
+		struct rb_node *old = node, *left;
+
+		node = node->rb_right;
+		while ((left = node->rb_left) != NULL)
+			node = left;
+		child = node->rb_right;
+		parent = rb_parent(node);
+		color = rb_color(node);
+
+		if (child)
+			rb_set_parent(child, parent);
+		if (parent == old) {
+			parent->rb_right = child;
+			parent = node;
+		} else
+			parent->rb_left = child;
+
+		node->rb_parent_color = old->rb_parent_color;
+		node->rb_right = old->rb_right;
+		node->rb_left = old->rb_left;
+
+		if (rb_parent(old))
+		{
+			if (rb_parent(old)->rb_left == old)
+				rb_parent(old)->rb_left = node;
+			else
+				rb_parent(old)->rb_right = node;
+		} else
+			root->rb_node = node;
+
+		rb_set_parent(old->rb_left, node);
+		if (old->rb_right)
+			rb_set_parent(old->rb_right, node);
+		goto color;
+	}
+
+	parent = rb_parent(node);
+	color = rb_color(node);
+
+	if (child)
+		rb_set_parent(child, parent);
+	if (parent)
+	{
+		if (parent->rb_left == node)
+			parent->rb_left = child;
+		else
+			parent->rb_right = child;
+	}
+	else
+		root->rb_node = child;
+
+ color:
+	if (color == RB_BLACK)
+		__rb_erase_color(child, parent, root);
+}
+
+/*
+ * This function returns the first node (in sort order) of the tree.
+ */
+struct rb_node *rb_first(struct rb_root *root)
+{
+	struct rb_node	*n;
+
+	n = root->rb_node;
+	if (!n)
+		return NULL;
+	while (n->rb_left)
+		n = n->rb_left;
+	return n;
+}
+
+struct rb_node *rb_last(struct rb_root *root)
+{
+	struct rb_node	*n;
+
+	n = root->rb_node;
+	if (!n)
+		return NULL;
+	while (n->rb_right)
+		n = n->rb_right;
+	return n;
+}
+
+struct rb_node *rb_next(struct rb_node *node)
+{
+	struct rb_node *parent;
+
+	if (rb_parent(node) == node)
+		return NULL;
+
+	/* If we have a right-hand child, go down and then left as far
+	   as we can. */
+	if (node->rb_right) {
+		node = node->rb_right; 
+		while (node->rb_left)
+			node=node->rb_left;
+		return node;
+	}
+
+	/* No right-hand children.  Everything down and left is
+	   smaller than us, so any 'next' node must be in the general
+	   direction of our parent. Go up the tree; any time the
+	   ancestor is a right-hand child of its parent, keep going
+	   up. First time it's a left-hand child of its parent, said
+	   parent is our 'next' node. */
+	while ((parent = rb_parent(node)) && node == parent->rb_right)
+		node = parent;
+
+	return parent;
+}
+
+struct rb_node *rb_prev(struct rb_node *node)
+{
+	struct rb_node *parent;
+
+	if (rb_parent(node) == node)
+		return NULL;
+
+	/* If we have a left-hand child, go down and then right as far
+	   as we can. */
+	if (node->rb_left) {
+		node = node->rb_left; 
+		while (node->rb_right)
+			node=node->rb_right;
+		return node;
+	}
+
+	/* No left-hand children. Go up till we find an ancestor which
+	   is a right-hand child of its parent */
+	while ((parent = rb_parent(node)) && node == parent->rb_left)
+		node = parent;
+
+	return parent;
+}
+
+void rb_replace_node(struct rb_node *victim, struct rb_node *new,
+		     struct rb_root *root)
+{
+	struct rb_node *parent = rb_parent(victim);
+
+	/* Set the surrounding nodes to point to the replacement */
+	if (parent) {
+		if (victim == parent->rb_left)
+			parent->rb_left = new;
+		else
+			parent->rb_right = new;
+	} else {
+		root->rb_node = new;
+	}
+	if (victim->rb_left)
+		rb_set_parent(victim->rb_left, new);
+	if (victim->rb_right)
+		rb_set_parent(victim->rb_right, new);
+
+	/* Copy the pointers/colour from the victim to the replacement */
+	*new = *victim;
+}
diff --git a/rbtree.h b/rbtree.h
new file mode 100644
index 0000000..4c06d98
--- /dev/null
+++ b/rbtree.h
@@ -0,0 +1,165 @@
+/*
+  Red Black Trees
+  (C) 1999  Andrea Arcangeli <andrea@suse.de>
+  
+  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
+
+  linux/include/linux/rbtree.h
+
+  To use rbtrees you'll have to implement your own insert and search cores.
+  This will avoid us to use callbacks and to drop drammatically performances.
+  I know it's not the cleaner way,  but in C (not in C++) to get
+  performances and genericity...
+
+  Some example of insert and search follows here. The search is a plain
+  normal search over an ordered tree. The insert instead must be implemented
+  int two steps: as first thing the code must insert the element in
+  order as a red leaf in the tree, then the support library function
+  rb_insert_color() must be called. Such function will do the
+  not trivial work to rebalance the rbtree if necessary.
+
+-----------------------------------------------------------------------
+static inline struct page * rb_search_page_cache(struct inode * inode,
+						 unsigned long offset)
+{
+	struct rb_node * n = inode->i_rb_page_cache.rb_node;
+	struct page * page;
+
+	while (n)
+	{
+		page = rb_entry(n, struct page, rb_page_cache);
+
+		if (offset < page->offset)
+			n = n->rb_left;
+		else if (offset > page->offset)
+			n = n->rb_right;
+		else
+			return page;
+	}
+	return NULL;
+}
+
+static inline struct page * __rb_insert_page_cache(struct inode * inode,
+						   unsigned long offset,
+						   struct rb_node * node)
+{
+	struct rb_node ** p = &inode->i_rb_page_cache.rb_node;
+	struct rb_node * parent = NULL;
+	struct page * page;
+
+	while (*p)
+	{
+		parent = *p;
+		page = rb_entry(parent, struct page, rb_page_cache);
+
+		if (offset < page->offset)
+			p = &(*p)->rb_left;
+		else if (offset > page->offset)
+			p = &(*p)->rb_right;
+		else
+			return page;
+	}
+
+	rb_link_node(node, parent, p);
+
+	return NULL;
+}
+
+static inline struct page * rb_insert_page_cache(struct inode * inode,
+						 unsigned long offset,
+						 struct rb_node * node)
+{
+	struct page * ret;
+	if ((ret = __rb_insert_page_cache(inode, offset, node)))
+		goto out;
+	rb_insert_color(node, &inode->i_rb_page_cache);
+ out:
+	return ret;
+}
+-----------------------------------------------------------------------
+*/
+
+#ifndef	_LINUX_RBTREE_H
+#define	_LINUX_RBTREE_H
+
+#include <stdlib.h>
+
+struct rb_node
+{
+	unsigned long  rb_parent_color;
+#define	RB_RED		0
+#define	RB_BLACK	1
+	struct rb_node *rb_right;
+	struct rb_node *rb_left;
+};
+
+struct rb_root
+{
+	struct rb_node *rb_node;
+};
+
+#undef offsetof
+#ifdef __compiler_offsetof
+#define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER)
+#else
+#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
+#endif
+
+#define container_of(ptr, type, member) ({                      \
+	const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
+	(type *)( (char *)__mptr - offsetof(type,member) );})
+
+#define rb_parent(r)   ((struct rb_node *)((r)->rb_parent_color & ~3))
+#define rb_color(r)   ((r)->rb_parent_color & 1)
+#define rb_is_red(r)   (!rb_color(r))
+#define rb_is_black(r) rb_color(r)
+#define rb_set_red(r)  do { (r)->rb_parent_color &= ~1; } while (0)
+#define rb_set_black(r)  do { (r)->rb_parent_color |= 1; } while (0)
+
+static inline void rb_set_parent(struct rb_node *rb, struct rb_node *p)
+{
+	rb->rb_parent_color = (rb->rb_parent_color & 3) | (unsigned long)p;
+}
+static inline void rb_set_color(struct rb_node *rb, int color)
+{
+	rb->rb_parent_color = (rb->rb_parent_color & ~1) | color;
+}
+
+#define RB_ROOT	(struct rb_root) { NULL, }
+#define	rb_entry(ptr, type, member) container_of(ptr, type, member)
+
+extern void rb_insert_color(struct rb_node *, struct rb_root *);
+extern void rb_erase(struct rb_node *, struct rb_root *);
+
+/* Find logical next and previous nodes in a tree */
+extern struct rb_node *rb_next(struct rb_node *);
+extern struct rb_node *rb_prev(struct rb_node *);
+extern struct rb_node *rb_first(struct rb_root *);
+extern struct rb_node *rb_last(struct rb_root *);
+
+/* Fast replacement of a single node without remove/rebalance/add/rebalance */
+extern void rb_replace_node(struct rb_node *victim, struct rb_node *new, 
+			    struct rb_root *root);
+
+static inline void rb_link_node(struct rb_node * node, struct rb_node * parent,
+				struct rb_node ** rb_link)
+{
+	node->rb_parent_color = (unsigned long )parent;
+	node->rb_left = node->rb_right = NULL;
+
+	*rb_link = node;
+}
+
+#endif	/* _LINUX_RBTREE_H */
diff --git a/stats.h b/stats.h
new file mode 100644
index 0000000..fdedf27
--- /dev/null
+++ b/stats.h
@@ -0,0 +1,155 @@
+/*
+ * Copyright IBM Corp. 2008
+ *
+ * Author(s): Martin Peschke <mp3@de.ibm.com>
+ *            Stefan Raspl <stefan.raspl@de.ibm.com>
+ *
+ *  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
+ */
+
+#ifndef STATS_H
+#define STATS_H
+
+#include <linux/types.h>
+#include "blktrace.h"
+
+struct minmax {
+	__u64 min;
+	__u64 max;
+	__u64 sum;
+	__u64 sos;
+	__u64 num;
+};
+
+static inline void minmax_init(struct minmax *mm)
+{
+	mm->min = -1ULL;
+	mm->max = 0;
+	mm->sum = 0;
+	mm->sos = 0;
+	mm->num = 0;
+}
+
+static inline void minmax_account(struct minmax *mm, __u64 value)
+{
+	mm->sum += value;
+	mm->sos += value * value;
+	if (value < mm->min)
+		mm->min = value;
+	if (value > mm->max)
+		mm->max = value;
+	mm->num++;
+}
+
+static inline void minmax_merge(struct minmax *dst, struct minmax *src)
+{
+	dst->sum += src->sum;
+	dst->sos += src->sos;
+	if (src->min < dst->min)
+		dst->min = src->min;
+	if (src->max > dst->max)
+		dst->max = src->max;
+	dst->num += src->num;
+}
+
+static inline void minmax_to_be(struct minmax *mm)
+{
+	mm->sum = cpu_to_be64(mm->sum);
+	mm->sos = cpu_to_be64(mm->sos);
+	mm->min = cpu_to_be64(mm->min);
+	mm->max = cpu_to_be64(mm->max);
+	mm->num = cpu_to_be64(mm->num);
+}
+
+static inline double minmax_avg(struct minmax *mm)
+{
+	return (mm->sum / (double)mm->num);
+}
+
+static inline double minmax_var(struct minmax *mm)
+{
+	double num = (double)mm->num;
+
+	return ((mm->sos - ((mm->sum * mm->sum) / num)) / num);
+}
+
+static inline int minmax_print(FILE *fp, const char *s, struct minmax *mm)
+{
+	return fprintf(fp, "%s: num %Ld, min %Ld, max %Ld, sum %Ld, squ %Ld, "
+		       "avg %.1f, var %.1f\n", s, (unsigned long long)mm->num,
+		       (unsigned long long)mm->min, (unsigned long long)mm->max,
+		       (unsigned long long)mm->sum, (unsigned long long)mm->sos,
+		       minmax_avg(mm), minmax_var(mm));
+}
+
+struct histlog2 {
+	int first;
+	int delta;
+	int num;
+};
+
+static inline __u64 histlog2_upper_limit(int index, struct histlog2 *h)
+{
+	return h->first + (index ? h->delta << (index - 1) : 0);
+}
+
+static inline int histlog2_index(__u64 val, struct histlog2 *h)
+{
+	int i;
+
+	for (i = 0; i < (h->num - 1) && val > histlog2_upper_limit(i, h); i++);
+	return i;
+}
+
+static inline void histlog2_account(__u32 *bucket, __u32 val,
+				    struct histlog2 *h)
+{
+	int index = histlog2_index(val, h);
+	bucket[index]++;
+}
+
+static inline void histlog2_merge(struct histlog2 *h, __u32 *dst, __u32 *src)
+{
+	int i;
+
+	for (i = 0; i < h->num; i++)
+		dst[i] += src[i];
+}
+
+static inline void histlog2_to_be(__u32 a[], struct histlog2 *h)
+{
+	int i;
+
+	for (i = 0; i < h->num; i++)
+		a[i] = cpu_to_be32(a[i]);
+}
+
+static inline void histlog2_print(FILE *fp, const char *s, __u32 a[],
+				  struct histlog2 *h)
+{
+	int i;
+
+	fprintf(fp, "%s:\n", s);
+	for (i = 0; i < h->num - 1; i++) {
+		fprintf(fp, "   %10ld:%6d",
+			(unsigned long)(histlog2_upper_limit(i, h)), a[i]);
+		if (!((i + 1) % 4))
+			fprintf(fp, "\n");
+	}
+	fprintf(fp, "    >%8ld:%6d\n",
+		(unsigned long)(histlog2_upper_limit(i - 1, h)), a[i]);
+}
+
+#endif
diff --git a/strverscmp.c b/strverscmp.c
new file mode 100644
index 0000000..bd0147b
--- /dev/null
+++ b/strverscmp.c
@@ -0,0 +1,156 @@
+/* Compare strings while treating digits characters numerically.

+   Copyright (C) 1997, 2002, 2005 Free Software Foundation, Inc.

+   This file is part of the libiberty library.

+   Contributed by Jean-François Bignolles <bignolle@ecoledoc.ibp.fr>, 1997.

+

+   Libiberty is free software; you can redistribute it and/or

+   modify it under the terms of the GNU Lesser General Public

+   License as published by the Free Software Foundation; either

+   version 2.1 of the License, or (at your option) any later version.

+

+   Libiberty 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

+   Lesser General Public License for more details.

+

+   You should have received a copy of the GNU Lesser General Public

+   License along with the GNU C Library; if not, write to the Free

+   Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA

+   02110-1301 USA.  */

+

+#include <ctype.h>

+

+/*

+@deftypefun int strverscmp (const char *@var{s1}, const char *@var{s2})

+The @code{strverscmp} function compares the string @var{s1} against

+@var{s2}, considering them as holding indices/version numbers.  Return

+value follows the same conventions as found in the @code{strverscmp}

+function.  In fact, if @var{s1} and @var{s2} contain no digits,

+@code{strverscmp} behaves like @code{strcmp}.

+

+Basically, we compare strings normally (character by character), until

+we find a digit in each string - then we enter a special comparison

+mode, where each sequence of digits is taken as a whole.  If we reach the

+end of these two parts without noticing a difference, we return to the

+standard comparison mode.  There are two types of numeric parts:

+"integral" and "fractional" (those  begin with a '0'). The types

+of the numeric parts affect the way we sort them:

+

+@itemize @bullet

+@item

+integral/integral: we compare values as you would expect.

+

+@item

+fractional/integral: the fractional part is less than the integral one.

+Again, no surprise.

+

+@item

+fractional/fractional: the things become a bit more complex.

+If the common prefix contains only leading zeroes, the longest part is less

+than the other one; else the comparison behaves normally.

+@end itemize

+

+@smallexample

+strverscmp ("no digit", "no digit")

+    @result{} 0    // @r{same behavior as strcmp.}

+strverscmp ("item#99", "item#100")

+    @result{} <0   // @r{same prefix, but 99 < 100.}

+strverscmp ("alpha1", "alpha001")

+    @result{} >0   // @r{fractional part inferior to integral one.}

+strverscmp ("part1_f012", "part1_f01")

+    @result{} >0   // @r{two fractional parts.}

+strverscmp ("foo.009", "foo.0")

+    @result{} <0   // @r{idem, but with leading zeroes only.}

+@end smallexample

+

+This function is especially useful when dealing with filename sorting,

+because filenames frequently hold indices/version numbers.

+@end deftypefun

+

+*/

+

+/* states: S_N: normal, S_I: comparing integral part, S_F: comparing

+           fractional parts, S_Z: idem but with leading Zeroes only */

+#define  S_N    0x0

+#define  S_I    0x4

+#define  S_F    0x8

+#define  S_Z    0xC

+

+/* result_type: CMP: return diff; LEN: compare using len_diff/diff */

+#define  CMP    2

+#define  LEN    3

+

+

+/* Compare S1 and S2 as strings holding indices/version numbers,

+   returning less than, equal to or greater than zero if S1 is less than,

+   equal to or greater than S2 (for more info, see the Glibc texinfo doc).  */

+

+int

+strverscmp (const char *s1, const char *s2)

+{

+  const unsigned char *p1 = (const unsigned char *) s1;

+  const unsigned char *p2 = (const unsigned char *) s2;

+  unsigned char c1, c2;

+  int state;

+  int diff;

+

+  /* Symbol(s)    0       [1-9]   others  (padding)

+     Transition   (10) 0  (01) d  (00) x  (11) -   */

+  static const unsigned int next_state[] =

+    {

+      /* state    x    d    0    - */

+      /* S_N */  S_N, S_I, S_Z, S_N,

+      /* S_I */  S_N, S_I, S_I, S_I,

+      /* S_F */  S_N, S_F, S_F, S_F,

+      /* S_Z */  S_N, S_F, S_Z, S_Z

+    };

+

+  static const int result_type[] =

+    {

+      /* state   x/x  x/d  x/0  x/-  d/x  d/d  d/0  d/-

+                 0/x  0/d  0/0  0/-  -/x  -/d  -/0  -/- */

+

+      /* S_N */  CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP,

+                 CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,

+      /* S_I */  CMP, -1,  -1,  CMP, +1,  LEN, LEN, CMP,

+                 +1,  LEN, LEN, CMP, CMP, CMP, CMP, CMP,

+      /* S_F */  CMP, CMP, CMP, CMP, CMP, LEN, CMP, CMP,

+                 CMP, CMP, CMP, CMP, CMP, CMP, CMP, CMP,

+      /* S_Z */  CMP, +1,  +1,  CMP, -1,  CMP, CMP, CMP,

+                 -1,  CMP, CMP, CMP

+    };

+

+  if (p1 == p2)

+    return 0;

+

+  c1 = *p1++;

+  c2 = *p2++;

+  /* Hint: '0' is a digit too.  */

+  state = S_N | ((c1 == '0') + (isdigit (c1) != 0));

+

+  while ((diff = c1 - c2) == 0 && c1 != '\0')

+    {

+      state = next_state[state];

+      c1 = *p1++;

+      c2 = *p2++;

+      state |= (c1 == '0') + (isdigit (c1) != 0);

+    }

+

+  state = result_type[state << 2 | (((c2 == '0') + (isdigit (c2) != 0)))];

+

+  switch (state)

+    {

+    case CMP:

+      return diff;

+

+    case LEN:

+      while (isdigit (*p1++))

+        if (!isdigit (*p2++))

+          return 1;

+

+      return isdigit (*p2) ? -1 : diff;

+

+    default:

+      return state;

+    }

+}

diff --git a/verify_blkparse.c b/verify_blkparse.c
new file mode 100644
index 0000000..aae8d7c
--- /dev/null
+++ b/verify_blkparse.c
@@ -0,0 +1,66 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <string.h>
+#include <unistd.h>
+
+#define MAX_CPUS	(512)
+
+int main(int argc, char *argv[])
+{
+	double this_time, last_time;
+	char line[256], last_line[256], *p;
+	int major, minor, cpu, nr, alias;
+	unsigned long long total_entries;
+	unsigned int last_seq[MAX_CPUS], seq;
+	FILE *f;
+
+	for (nr = 0; nr < MAX_CPUS; nr++)
+		last_seq[nr] = -1;
+
+	if (argc < 2) {
+		fprintf(stderr, "%s: file\n", argv[0]);
+		return 1;
+	}
+
+	f = fopen(argv[1], "r");
+	if (!f) {
+		perror("fopen");
+		return 1;
+	}
+
+	last_time = 0;
+	alias = nr = 0;
+	total_entries = 0;
+	while ((p = fgets(line, sizeof(line), f)) != NULL) {
+		if (sscanf(p, "%3d,%3d %2d %8d %lf", &major, &minor, &cpu, &seq, &this_time) != 5)
+			break;
+
+		if (this_time < last_time) {
+			fprintf(stdout, "last: %s", last_line);
+			fprintf(stdout, "this: %s", p);
+			nr++;
+		}
+
+		last_time = this_time;
+
+		if (cpu >= MAX_CPUS) {
+			fprintf(stderr, "cpu%d too large\n", cpu);
+			break;
+		}
+
+		if (last_seq[cpu] == seq) {
+			fprintf(stdout, "alias on sequence %u\n", seq);
+			alias++;
+		}
+
+		last_seq[cpu] = seq;
+		total_entries++;
+		strcpy(last_line, line);
+	}
+
+	fprintf(stdout, "Events %Lu: %d unordered, %d aliases\n", total_entries, nr, alias);
+	fclose(f);
+
+	return nr != 0;
+}