Index: /trunk/CVSROOT/modules
===================================================================
--- /trunk/CVSROOT/modules	(revision 5215)
+++ /trunk/CVSROOT/modules	(revision 5216)
@@ -96,4 +96,5 @@
 AMC                       MagicSoft/AMC
 Taper                     MagicSoft/Taper
+TDAS-Extractor            MagicSoft/TDAS-Extractor
 #
 #   Wuerzburg private modules
Index: /trunk/MagicSoft/TDAS-Extractor/MAGIC_signal_reco.bbl
===================================================================
--- /trunk/MagicSoft/TDAS-Extractor/MAGIC_signal_reco.bbl	(revision 5216)
+++ /trunk/MagicSoft/TDAS-Extractor/MAGIC_signal_reco.bbl	(revision 5216)
@@ -0,0 +1,14 @@
+\begin{thebibliography}{1}
+
+\bibitem{OF77}
+A.~Papoulis,
+\newblock {\em Signal analysis},
+\newblock McGraw-Hill, 1977.
+
+\bibitem{OF94}
+W.~E. Cleland and E.~G. Stern,
+\newblock {\em Signal processing considerations for liquid ionization
+  calorimeters in a high rate environment},
+\newblock Nucl. Instrum. Meth. {\bf A338} (1994) 467.
+
+\end{thebibliography}
Index: /trunk/MagicSoft/TDAS-Extractor/MAGIC_signal_reco.tex
===================================================================
--- /trunk/MagicSoft/TDAS-Extractor/MAGIC_signal_reco.tex	(revision 5216)
+++ /trunk/MagicSoft/TDAS-Extractor/MAGIC_signal_reco.tex	(revision 5216)
@@ -0,0 +1,221 @@
+\documentclass[12pt]{article}
+\usepackage{magic-tdas}
+
+
+\usepackage[latin1]{inputenc}
+
+\usepackage{amsmath}
+\usepackage{amssymb}
+
+\usepackage{amsthm}
+
+\usepackage{graphicx}
+
+\usepackage{citesort}
+\usepackage{url}
+
+\setlength{\parindent}{0cm}
+
+\sloppy
+
+
+\renewcommand{\baselinestretch}{1.0}
+\renewcommand{\arraystretch}{1.0}
+
+
+
+\begin{document}
+ 
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Please, for the formatting just include here the standard
+%% elements: title, author, date, plus TDAScode
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\title{Comparison of Signal Reconstruction Algorithms for the MAGIC Telescope}
+\author{H. Bartko, O. Blanch, M. Gaug, F. Goebel, A. Moralejo, A. Robert, \\
+T. Schweizer, M. Shayduk,  N. Sidro, W. Wittek}
+\date{Month dd, 2004\\}
+\TDAScode{MAGIC-TDAS 04-xx\\ 04mmdd}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% title %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\maketitle
+
+%% abstract %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{abstract}
+Presently MAGIC uses a 300~MHz FADC system to sample the Cherenkov signals. 
+In this note different algorithms to reconstruct the signal from the read out samples 
+are described and compared. Criteria for comparison are defined and used to judge the 
+different extractors applied to calibration signals, cosmics and pedestals. At the end, 
+a best extractor is proposed. The question 
+of pedestal calculation for the different extractors is adressed.
+\end{abstract}
+
+%% contents %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\thetableofcontents
+
+\newpage
+
+%% body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%------------------------------------------------------------
+
+
+
+\section{Introduction}
+
+\begin{itemize}
+\item{Short description of the MAGIC read-out system}
+\end{itemize}
+
+\section{Pulse Shape Reconstruction}
+
+\begin{itemize}
+\item{Algorithm: overlay many events}
+\item{Differences cosmics / calibration}
+\item{Implementation / parameterization in the MC. 
+\newline
+\newline
+\ldots {\it MAYBE, we should create MC calibration pulses for the subsequent studies }
+\newline
+\newline}
+\end{itemize}
+
+\section{Signal Reconstruction Algorithms}
+
+\ldots {\it In this section, the extractors are described, especially w.r.t. which free parameters are left to play, 
+how they subtract the pedestal, how they compare between calibration and cosmics pulses and how an 
+extraction in case of a pure pedestal event takes place. }
+\newline
+\newline
+{\it Missing coding: 
+\begin{itemize}
+\item Implementing the AB-flag for all extractors \ldots Markus
+\item Implementing a low-gain extraction based on the high-gain information \ldots Arnau
+\item Joining the Sliding Window and Highest Integral extractor into one \ldots Markus
+\item Real fit to the expected pulse shape \ldots Hendrik, Wolfgang ???
+\end{itemize}
+}
+
+
+\subsection{Pure signal extractors}
+\subsubsection{Fixed Window}
+\subsubsection{Fixed Window Peak Search}
+\subsubsection{Fixed Window with integrated spline}
+
+\subsection{Pure time extractors}
+\subsubsection{Highest Integral}
+
+\subsection{Combined extractors}
+\subsubsection{Sliding Window with Highest Integral}
+\subsubsection{Digital Filter}
+\subsubsection{(Fast) Spline with Amplitude extraction}
+\subsubsection{Real fit to the expected pulse shape \newline
+\newline
+}
+
+%References: \cite{OF77} \cite{OF94}.
+
+\section{Criteria for an optimal pedestal extraction}
+
+\ldots {\it In this section, the distinction is made between: 
+\begin{itemize}
+\item Defining the pedestal RMS as contribution
+to the extracted signal fluctuations (later used in the calibration) 
+\item Defining the Pedestal Mean and RMS as the result of distributions obtained by 
+applying the extractor to pedestal runs (yielding biases and modified widths).
+\item Deriving the correct probability for background fluctuations based on the extracted signal height. 
+  ( including biases and modified widths).
+\end{itemize}
+\ldots Florian + ??? 
+\newline
+\newline
+}
+\section{Criteria for the Optimal Signal Extraction}
+
+\subsection{Resolution (amplitude and time)}
+\ldots {\it In this section, the jitter to exactly identical input pulses is measured, for times, amplitudes, 
+high-gain and low-gain pulses
+\begin{itemize}
+\item Jitter to pulpo pulses  \ldots Hendrik
+\item Jitter to pedestals (of different intensity) \ldots Hendrik
+\item Comparing MC signal with and w/o noise of different intensity \ldots Nuria
+\item Comparing the low-gain to high-gain ratio for different intensities \ldots Markus
+\item Derive the time jitter to calibration pulses \ldots Maxim ???
+\end{itemize}
+}
+
+\subsection{Bias}
+\ldots {\it In this section, the bias of the extractor for low and high intensities is defined and measured
+\begin{itemize}
+\item Bias to pedestals (of different intensity) \ldots Hendrik
+\item Comparing MC signal with and w/o noise of different intensity \ldots Nuria
+\end{itemize}
+}
+
+\subsection{Signal to Noise}
+\ldots {\it In this section, the signal to noise of an extractor is determined, for times and amplitudes
+\newline \ldots Maxim ???, Thomas ???
+}
+
+\subsection{Stability}
+\ldots {\it In this section, the stability of an extractor to slightly varying pulse shapes is examined.
+\begin{itemize}
+\item Stability w.r.t. different weights files \ldots Hendrik
+\item Outliers in time and amplitude extractions \ldots ???
+\item Stability of conversion factors from the calibration \ldots Markus
+\item Stability w.r.t. the calibration secondary pulses \ldots Hendrik ???
+\end{itemize}
+}
+
+\subsection{Linearity}
+\ldots {\it In this section, the Nuria plots are examined \newline \ldots Nuria
+
+\subsection{Treatment of calibration pulses}
+\ldots {\it In this section, the question of the different pulse shapes between calibration pulses, its 
+secondary pulses, possible secondary pulses from hadronic showers and the typical Cherenkov 
+pulses are extracted by the different extractors and typical dependencies examined, like the 
+Razmik plot, the number of photo-electrons with number of slices, comparisons between different colours, etc.
+\newline \ldots Hendrik??? , Markus???  + ????}
+
+\subsection{Low gain extraction}
+\ldots {\it In this section, the stability of the low-gain extraction w.r.t. the high-gain extraction is 
+examined. Useful plots are still to be defined.
+\newline \ldots Arnau ????}
+
+\subsection{Applicability for different sampling speeds / no pulse shaping.}
+\ldots {\it In this section, some comments of Hendrik will be made}
+
+\subsection{CPU requirements}
+\ldots {\it In this section, the needed CPU time is measured for each extractor independently
+\newline \ldots ALL (after all)}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Performance}
+\ldots {\it This section will be written after the previous one}
+
+\subsection{Calibration}
+\subsection{Pulpo Pulses}
+\subsection{MC Data}
+\subsection{Cosmics Data?}
+\subsection{Pedestals}
+
+\section{Discussion}
+\ldots {\it This section will discuss the best signal extractor \newline \ldots Thomas ???, Florian }
+
+\section{Conclusions}
+\ldots {\it This section will propose the best signal extractor.}
+
+%------------------------------------------------------------------------------
+
+
+\bibliography{bibfile}
+\bibliographystyle{bibstyle}
+
+
+\end{document}
+
+
+
Index: /trunk/MagicSoft/TDAS-Extractor/a4p.sty
===================================================================
--- /trunk/MagicSoft/TDAS-Extractor/a4p.sty	(revision 5216)
+++ /trunk/MagicSoft/TDAS-Extractor/a4p.sty	(revision 5216)
@@ -0,0 +1,43 @@
+%
+% Din A4 Laengen  ( 210 mm * 297 mm )
+%
+\newlength{\dinwidth}
+\newlength{\dinheight}
+\newlength{\dinmargin}
+\newlength{\aussenrand}
+\newlength{\innenrand}
+\newlength{\randoben}
+\newlength{\randunten}
+%
+\aussenrand3cm      %physikalischer Aussenrand
+\innenrand3cm       %physikalischer Innenrand
+\randoben2.5cm      %physikalischer Abstand von oben
+\randunten3cm     %physikalischer Abstand von unten
+%
+\setlength{\dinwidth}{21.0cm}
+\setlength{\dinheight}{29.7cm}
+%
+\textwidth\dinwidth
+\addtolength{\textwidth}{-\aussenrand}
+\addtolength{\textwidth}{-\innenrand}
+\setlength{\dinmargin}{\dinwidth}
+\addtolength{\dinmargin}{-\textwidth}
+\setlength{\dinmargin}{0.5\dinmargin}
+\oddsidemargin-1in
+\evensidemargin-1in
+\addtolength{\oddsidemargin}{\innenrand}
+\addtolength{\evensidemargin}{\aussenrand}
+\setlength{\marginparwidth}{0.9\dinmargin}
+\marginparsep 8pt \marginparpush 5pt
+%
+\textheight\dinheight
+\topmargin -1in
+%
+\headheight 12pt
+\headsep 24pt 
+\footskip 24pt
+\addtolength{\topmargin}{\randoben}
+\addtolength{\textheight}{-\randoben}
+\addtolength{\textheight}{-\randunten}
+\addtolength{\textheight}{-\headheight}
+\addtolength{\textheight}{-\headsep}
Index: /trunk/MagicSoft/TDAS-Extractor/bibfile.bib
===================================================================
--- /trunk/MagicSoft/TDAS-Extractor/bibfile.bib	(revision 5216)
+++ /trunk/MagicSoft/TDAS-Extractor/bibfile.bib	(revision 5216)
@@ -0,0 +1,27 @@
+@ARTICLE{OF94,
+   author = "Cleland, W. E. and Stern, E. G.",
+   title = "Signal processing considerations for liquid ionization calorimeters in a high rate environment",
+   journal = "Nucl. Instrum. Meth.",
+   volume = "A338",
+   year = "1994",
+   pages = "467-497"
+}
+
+
+@Book{OF77,
+  author =   "Athanasios Papoulis",
+  title =    "Signal analysis",
+  publisher = "McGraw-Hill",
+  year =     "1977"
+}
+
+@Article{MAGIC-commissioning,
+     author    = "Baixeras, C. and others",
+     title     = "Commissioning and first tests of the MAGIC telescope",
+     journal   = "Nucl. Instrum. Meth.",
+     volume    = "A518",
+     year      = "2004",
+     pages     = "188-192",
+     SLACcitation  = "%%CITATION = NUIMA,A518,188;%%"
+}
+
Index: /trunk/MagicSoft/TDAS-Extractor/bibstyle.bst
===================================================================
--- /trunk/MagicSoft/TDAS-Extractor/bibstyle.bst	(revision 5216)
+++ /trunk/MagicSoft/TDAS-Extractor/bibstyle.bst	(revision 5216)
@@ -0,0 +1,1978 @@
+% BibTeX styles for various physics journals (27-Feb-1990).
+% This file, physics.btx, is based on the file btxbst.doc.
+	% Please notify Charles Karney (Karney@Princeton.EDU)
+	% of any bugs, improvements, etc.
+% Run this file through cpp to get specific versions.  I have written
+% a version of cpp within Emacs.  To access it put
+%	(autoload 'cpp "tex$bibtex:cpp"		; Use cpp for BibTeX styles
+%		  "C preprocessor"
+%		  t)
+% into your .emacs file.  Read in this file with
+%	emacs tex$bibtex:physics.btx
+% and run cpp with e.g.,
+%	M-x cpp <ret> aip <ret>
+% Save the resulting file to tex$latex:aip.bst.
+% To accomodate the variations we need (in addition to the definitions below)
+%	ATIT_SUPPRESS:	do not include the titles of journal articles
+%	NAME_INVERT:	put the initials last
+%	NAME_UPPER:	convert names to all caps.
+%	MONTH_SUPPRESS:	do not include months in journal articles
+%	PAREN_DATE:	dates go in parens in journal articles
+%	DATE_FIRST:	dates go before page numbers
+%	VOLUME_SPACE:	volume set off with space (not colon)
+%	NUM_SUPPRESS:	do not include numbers in journal articles
+%	BOLD_VOL:	volume numbers in bold face in journal articles
+%	BRACKET_NOTE:	notes in brackets
+%	PAGE_START_J:	include only starting page for journal articles
+%	PAGE_START_O:	include only starting page for other entries
+%	PAGE_ABBREV:	abbreviate page to p. and pages to pp.
+%	PHYSICS_JOUR:	include abbreviations for Physics journals
+%	COMMA_DELIMIT:	use comma (instead of period) to divide a citation
+%	NOTE_SUPPRESS:	suppress the note
+%	MAX_NAMES:	max number of authors before using et al (0 = infinity)
+%	MIN_NAMES:	number of authors to list with et al.
+%	EDIT_VAR:	use "edited by ..." instead of "..., editors"
+%	RMP_LABELS:	create RMP-style labels
+%	KEY_CITE:	use key as label
+%	NAMED_REFS:	use (Smith, 1988) style of citations
+%	CSC_NAMES:	names set in caps and small caps
+%	JOUR_DEEMPH:	don't emphasize journal name
+%	ETAL_EMPH:	emphasize et al.
+%	ALT_INCOLL	alternate ordering of fields in incollections
+% These are all boolean (0 or 1) except for MAX_NAMES and MIN_NAMES.
+% These need to satisfy 0 <= MIN_NAMES <= MAX_NAMES.
+% The rule here is that if all these are defined to be zero, we revert to
+% the standard styles.  For that reason we initialize them all to 0.
+% These are the original macros
+	% Progress in Particle and Nuclear Physics
+% This is the start of btxbst.doc
+% BibTeX `plain' family
+	% version 0.99b for BibTeX versions 0.99a or later, LaTeX version 2.09.
+	% Copyright (C) 1985, all rights reserved.
+	% Copying of this file is authorized only if either
+	% (1) you make absolutely no changes to your copy, including name, or
+	% (2) if you do make changes, you name it something other than
+	% btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
+	% This restriction helps ensure that all standard styles are identical.
+	% The file btxbst.doc has the documentation for this style.
+% Please notify Oren Patashnik (PATASHNIK@SCORE.STANFORD.EDU) of any bugs in
+% these standard styles or in this documentation file.
+%
+% This is file btxbxt.doc; it helps document bibliography styles,
+% and is also a template file that you can use to make
+% several different style files, if you have access to a C preprocessor.
+% For example, the standard styles were made by doing something like
+%	cpp -P -DPLAIN btxbst.doc plain.txt
+%	cpp -P -DUNSRT btxbst.doc unsrt.txt
+%	cpp -P -DALPHA btxbst.doc alpha.txt
+%	cpp -P -DABBRV btxbst.doc abbrv.txt
+% and then renaming after removing unwanted comments and blank lines.
+% If you don't have access,
+% you can edit this file by hand to imitate the preprocessor,
+% with the following explanation of the C preprocessor constructs used here.
+%
+% The output of the preprocessor is the same as the input, except that certain
+% lines will be excluded (and some blank lines will be added).  The sequence
+%	#if VAR
+%	    lines to be included when VAR is not zero
+%	#else
+%	    lines to be included when VAR is zero
+%	#endif
+% (with the #-signs appearing in column 1) means that one set or the other of
+% the lines are to be included depending on the value of VAR.
+% The #else part is optional.  Comments can be added after #else and #endif.
+% Variables can be set by
+%	#define VAR value
+% and one can also use #ifdef VAR to see if VAR has any value, and #ifndef
+% to see if it has none.
+% Another #if form used in this file is #if !VAR, which includes the lines
+% after the #if only if VAR is zero.
+%
+% Convention: Use all uppercase identifiers for these preprocessor variables
+% so you can spot them easily
+%
+% The command line to the preprocessor should define one of PLAIN, UNSRT, ALPHA
+% or ABBRV (though PLAIN will be used by default if none is given),
+% and the following lines will set various boolean variables to control the
+% various lines that are chosen from the rest of the file.
+% Each boolean variable should be set true (1) or false (0) in each style.
+% Here are the current variables, and their meanings:
+%	0 :	an alphabetic label is used (if false then a numeric
+%			    label is used)
+%	0 :		the entries should be sorted by label (if nonnumeric)
+%			    and other info, like authors (if false, then
+%			    entries remain in order of occurrence)
+%	0 :	the authors, editors, etc., get the full names as
+%			    given in the bibliography file (if false, the first
+%			    names become initials)
+%	1 :	titles of non-"books" (e.g., articles) should be
+%			    converted to lower-case, except the first letter or
+%			    first letter after a colon
+%			    (if false then they appear as in the database)
+%	0 :	months are spelled out in full (if false, then
+%			    they're abbreviated)
+%	0 :	macro journal names are spelled out in full
+%			    (if false then they are abbreviated, currently
+%			    as they appear in ACM publications)
+%#	    define PLAIN 1
+%
+%   Entry formatting: Similar to that recommended by Mary-Claire van Leunen
+%	in "A Handbook for Scholars".  Book-like titles are italicized
+%	(emphasized) and non-book titles are converted to sentence
+%	capitilization (and not enclosed in quotes).
+%	This file outputs a \newblock between major blocks of an entry
+%	(the name \newblock is analogous to the names \newline and \newpage)
+%	so that the user can obtain an "open" format, which has a line break
+%	before each block and lines after the first are indented within blocks,
+%	by giving the optional \documentstyle argument `openbib';
+%	The default is the "closed" format---blocks runs together.
+%
+%   Citation alphabetic label format:
+%		[Knu73] for single author (or editor or key)
+%		[AHU83] (first letters of last names) for multiple authors
+%
+%   Citation label numberic format:
+%		[number]
+%
+%   Reference list ordering for sorted, alphabetic lables:
+%		alphabetical by citation label, then by author(s) or whatever
+%		passes for author in the absence of one, then by year,
+%		then title
+%
+%   Reference list ordering for sorted, numeric lables:
+%		alphabetical by author(s) or whatever passes
+%		for author in the absence of one, then by year, then title
+%
+%   Reference list ordering for unsorted:
+%		by the order cited in the text
+%
+%   History
+%   12/16/84	(HWT)	Original `plain' version, by Howard Trickey.
+%   12/23/84	(LL)	Some comments made by Leslie Lamport.
+%    2/16/85	(OP)	Changes based on LL's comments, Oren Patashnik.
+%    2/17/85	(HWT)	Template file and other standard styles made.
+%    3/28/85	(OP)	First release, version 0.98b for BibTeX 0.98f.
+%    5/ 9/85	(OP)	Version 0.98c for BibTeX 0.98i:
+%			fixed Theoretical Computer Science macro name;
+%			fixed the format.vol.num.pages function.
+%    1/24/88	(OP)	Version 0.99a for BibTeX 0.99a, main changes:
+%			assignment operator (:=) arguments reversed;
+%			the preamble$ function outputs the database PREAMBLE;
+%			entry.max$ and global.max$ (built-in) variables replace
+%			entry.string.max and global.string.max functions;
+%			alphabetizing by year then title, not just title;
+%			many unnecessary ties removed; \it ==> \em;
+%			the `alpha' style uses a superscripted `+' instead of a
+%			`*' for unnamed names in constructing the label;
+%			the `abbrv' style now uses "Mar." and "Sept.";
+%			the functions calc.label and presort now look at just
+%			the fields they're supposed to;
+%			BOOKLET, MASTERSTHESIS, TECHREPORT use nonbook titles;
+%			INBOOK and INCOLLECTION take an optional type (e.g.
+%			type = "Section"), overriding the default "chapter";
+%			BOOK, INBOOK, INCOLLECTION, and PROCEEDINGS now allow
+%			either volume or number, not just volume;
+%			INCOLLECTION now allows an edition and series field;
+%			PROCEEDINGS and INPROCEEDINGS now use the address field
+%			to tell where a conference was held;
+%			INPROCEEDINGS and PROCEEDINGS now allow either volume
+%			or number, and also a series field;
+%			MASTERSTHESIS and PHDTHESIS accept types other than
+%			"Master's thesis" and "PhD thesis";
+%			UNPUBLISHED now outputs, in one block, note then date;
+%			MANUAL now prints out the organization in
+%			the first block if the author field is empty;
+%			MISC can't be empty---it requires some optional field.
+%    3/23/88	(OP)	Version 0.99b for BibTeX 0.99c---changed the three
+%			erroneous occurrences of `cite ' to `cite$ '; this
+%			change didn't affect the four standard styles, so the
+%			0.99a versions of those styles are still current.
+%
+% The ENTRY declaration
+%   Like Scribe's (according to pages 231-2 of the April '84 edition),
+%   but no fullauthor or editors fields because BibTeX does name handling.
+%   The annote field is commented out here because this family doesn't
+%   include an annotated bibliography style.  And in addition to the fields
+%   listed here, BibTeX has a built-in crossref field, explained later.
+ENTRY
+% Fields:
+  { address
+%	    Usually the address of a publisher or other type of organization.
+%	    Put information in this field only if it helps the reader find the
+%	    thing---for example you should omit the address of a major
+%	    publisher entirely.  For a PROCEEDINGS or an INPROCEEDINGS,
+%	    however, it's the address of the conference; for those two entry
+%	    types, include the publisher's or organization's address, if
+%	    necessary, in the publisher or organization field.
+%    annote
+%	    Long annotation---for annotated bibliographies (begins sentence).
+    author
+%	    Name(s) of author(s), in BibTeX name format.
+    booktitle
+%	    Book title when the thing being referenced isn't the whole book.
+%	    For book entries, the title field should be used instead.
+    chapter
+%	    Chapter (or section or whatever) number.
+    collaboration
+    edition
+%	    Edition of a book---should be an ordinal (e.g., "Second").
+    editor
+%	    Name(s) of editor(s), in BibTeX name format.
+%	    If there is also an author field, then the editor field should be
+%	    for the book or collection that the work appears in.
+    howpublished
+%	     How something strange has been published (begins sentence).
+    institution
+%	    Sponsoring institution of a technical report.
+    journal
+%	    Journal name (macros are provided for many).
+    key
+%	    Alphabetizing, labeling, and cross-referencing key
+%	    (needed when an entry has no author or editor).
+    month
+%	    Month (macros are provided).
+    note
+%	    To help the reader find a reference (begins sentence).
+    eprint
+%           ArXiv identifier
+    number
+%	    Number of a journal or technical report, or of a work in a series.
+    organization
+%	    Organization sponsoring a conference (or publishing a manual); if
+%	    the editor (or author) is empty, and if the organization produces
+%	    an awkward label or cross reference, you should put appropriately
+%	    condensed organization information in the key field as well.
+    pages
+%	    Page number or numbers (use `--' to separate a range, use `+'
+%	    to indicate pages following that don't form a simple range).
+    publisher
+%	    Publisher name.
+    school
+%	    School name (for theses).
+    series
+%	    The name of a series or set of books.
+%	    An individual book will will also have it's own title.
+    title
+%	    The title of the thing you're referred to.
+    type
+%	    Type of a Techreport (e.g., "Research Note") to be used instead of
+%	    the default "Technical Report"; or, similarly, the type of a
+%	    thesis; or of a part of a book.
+    volume
+%	    The volume number of a journal or multivolume work.
+    year
+%	    The year should contain only numerals (technically, it should end
+%	    with four numerals, after purification; doesn't a begin sentence).
+    url
+  }
+% There are no integer entry variables
+  {}
+% These string entry variables are used to form the citation label.
+% In a storage pinch, sort.label can be easily computed on the fly.
+  { label }
+% Each entry function starts by calling output.bibitem, to write the
+% \bibitem and its arguments to the .BBL file.  Then the various fields
+% are formatted and printed by output or output.check.  Those functions
+% handle the writing of separators (commas, periods, \newblock's),
+% taking care not to do so when they are passed a null string.
+% Finally, fin.entry is called to add the final period and finish the
+% entry.
+%
+% A bibliographic reference is formatted into a number of `blocks':
+% in the open format, a block begins on a new line and subsequent
+% lines of the block are indented.  A block may contain more than
+% one sentence (well, not a grammatical sentence, but something to
+% be ended with a sentence ending period).  The entry functions should
+% call new.block whenever a block other than the first is about to be
+% started.  They should call new.sentence whenever a new sentence is
+% to be started.  The output functions will ensure that if two
+% new.sentence's occur without any non-null string being output between
+% them then there won't be two periods output.  Similarly for two
+% successive new.block's.
+%
+% The output routines don't write their argument immediately.
+% Instead, by convention, that argument is saved on the stack to be
+% output next time (when we'll know what separator needs to come
+% after it).  Meanwhile, the output routine has to pop the pending
+% output off the stack, append any needed separator, and write it.
+%
+% To tell which separator is needed, we maintain an output.state.
+% It will be one of these values:
+%	before.all		just after the \bibitem
+%	mid.sentence		in the middle of a sentence: comma needed
+%					if more sentence is output
+%	after.sentence		just after a sentence: period needed
+%	after.block		just after a block (and sentence):
+%					period and \newblock needed.
+% Note: These styles don't use after.sentence
+%
+% VAR: output.state : INTEGER		-- state variable for output
+%
+% The output.nonnull function saves its argument (assumed to be nonnull)
+% on the stack, and writes the old saved value followed by any needed
+% separator.  The ordering of the tests is decreasing frequency of
+% occurrence.
+%
+% output.nonnull(s) ==
+%  BEGIN
+%	s := argument on stack
+%	if output.state = mid.sentence then
+%	    write$(pop() * ", ")
+%		  -- "pop" isn't a function: just use stack top
+%	else
+%	    if output.state = after.block then
+%		write$(add.period$(pop()))
+%		newline$
+%		write$("\newblock ")
+%	    else
+%		if output.state = before.all then
+%		    write$(pop())
+%		else	    -- output.state should be after.sentence
+%		    write$(add.period$(pop()) * " ")
+%		fi
+%	    fi
+%	    output.state := mid.sentence
+%	fi
+%	push s on stack
+%  END
+%
+% The output function calls output.nonnull if its argument is non-empty;
+% its argument may be a missing field (thus, not necessarily a string)
+%
+% output(s) ==
+%  BEGIN
+%	if not empty$(s) then output.nonnull(s)
+%	fi
+%  END
+%
+% The output.check function is the same as the output function except that, if
+% necessary, output.check warns the user that the t field shouldn't be empty
+% (this is because it probably won't be a good reference without the field;
+% the entry functions try to make the formatting look reasonable even when
+% such fields are empty).
+%
+% output.check(s,t) ==
+%  BEGIN
+%	if empty$(s) then
+%	    warning$("empty " * t * " in " * cite$)
+%	else output.nonnull(s)
+%	fi
+%  END
+%
+% The output.bibitem function writes the \bibitem for the current entry
+% (the label should already have been set up), and sets up the separator
+% state for the output functions.  And, it leaves a string on the stack
+% as per the output convention.
+%
+% output.bibitem ==
+%  BEGIN
+%	newline$
+%	write$("\bibitem[")	% for alphabetic labels,
+%	write$(label)		% these three lines
+%	write$("]{")		% are used
+%	write$("\bibitem{")		% this line for numeric labels
+%	write$(cite$)
+%	write$("}")
+%	push "" on stack
+%	output.state := before.all
+%  END
+%
+% The fin.entry function finishes off an entry by adding a period to the
+% string remaining on the stack.  If the state is still before.all
+% then nothing was produced for this entry, so the result will look bad,
+% but the user deserves it. (We don't omit the whole entry because the
+% entry was cited, and a bibitem is needed to define the citation label.)
+%
+% fin.entry ==
+%  BEGIN
+%	write$(add.period$(pop()))
+%	newline$
+%  END
+%
+% The new.block function prepares for a new block to be output, and
+% new.sentence prepares for a new sentence.
+%
+% new.block ==
+%  BEGIN
+%	if output.state <> before.all then
+%	    output.state := after.block
+%	fi
+%  END
+%
+% new.sentence ==
+%  BEGIN
+%	if output.state <> after.block then
+%	    if output.state <> before.all then
+%		output.state :=  after.sentence
+%	    fi
+%	fi
+%  END
+%
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+  #1 'mid.sentence :=
+  #2 'after.sentence :=
+  #3 'after.block :=
+}
+% the variables s and t are temporary string holders
+STRINGS { s t }
+FUNCTION {output.nonnull}
+{ 's :=
+  output.state mid.sentence =
+    { ", " * write$ }
+    { output.state after.block =
+	{ "," * write$
+	  newline$
+	  "\newblock " write$
+	}
+	{ output.state before.all =
+	    'write$
+	    { add.period$ " " * write$ }
+	  if$
+	}
+      if$
+      mid.sentence 'output.state :=
+    }
+  if$
+  s
+}
+FUNCTION {output}
+{ duplicate$ empty$
+    'pop$
+    'output.nonnull
+  if$
+}
+FUNCTION {output.check}
+{ 't :=
+  duplicate$ empty$
+    { pop$ "empty " t * " in " * cite$ * warning$ }
+    'output.nonnull
+  if$
+}
+FUNCTION {output.bibitem}
+{ newline$
+  "\bibitem{" write$
+  cite$ write$
+  "}" write$
+  newline$
+  ""
+  before.all 'output.state :=
+}
+% This function finishes all entries.
+FUNCTION {fin.entry}
+{ add.period$
+  write$
+  newline$
+}
+FUNCTION {new.block}
+{ output.state before.all =
+    'skip$
+    { after.block 'output.state := }
+  if$
+}
+FUNCTION {new.sentence}
+{ skip$
+}
+% These three functions pop one or two (integer) arguments from the stack
+% and push a single one, either 0 or 1.
+% The 'skip$ in the `and' and `or' functions are used because
+% the corresponding if$ would be idempotent
+FUNCTION {not}
+{   { #0 }
+    { #1 }
+  if$
+}
+FUNCTION {and}
+{   'skip$
+    { pop$ #0 }
+  if$
+}
+FUNCTION {or}
+{   { pop$ #1 }
+    'skip$
+  if$
+}
+% Sometimes we begin a new block only if the block will be big enough.  The
+% new.block.checka function issues a new.block if its argument is nonempty;
+% new.block.checkb does the same if either of its TWO arguments is nonempty.
+FUNCTION {new.block.checka}
+{ empty$
+    'skip$
+    'new.block
+  if$
+}
+FUNCTION {new.block.checkb}
+{ empty$
+  swap$ empty$
+  and
+    'skip$
+    'new.block
+  if$
+}
+% The new.sentence.check functions are analogous.
+FUNCTION {new.sentence.checka}
+{ empty$
+    'skip$
+    'new.sentence
+  if$
+}
+FUNCTION {new.sentence.checkb}
+{ empty$
+  swap$ empty$
+  and
+    'skip$
+    'new.sentence
+  if$
+}
+% Here are some functions for formatting chunks of an entry.
+% By convention they either produce a string that can be followed by
+% a comma or period (using add.period$, so it is OK to end in a period),
+% or they produce the null string.
+%
+% A useful utility is the field.or.null function, which checks if the
+% argument is the result of pushing a `missing' field (one for which no
+% assignment was made when the current entry was read in from the database)
+% or the result of pushing a string having no non-white-space characters.
+% It returns the null string if so, otherwise it returns the field string.
+% Its main (but not only) purpose is to guarantee that what's left on the
+% stack is a string rather than a missing field.
+%
+% field.or.null(s) ==
+%  BEGIN
+%	if empty$(s) then return ""
+%	else return s
+%  END
+%
+% Another helper function is emphasize, which returns the argument emphazised,
+% if that is non-empty, otherwise it returns the null string.  Italic
+% corrections aren't used, so this function should be used when punctation
+% will follow the result.
+%
+% emphasize(s) ==
+%  BEGIN
+%	if empty$(s) then return ""
+%	else return "{\em " * s * "}"
+%
+% The format.names function formats the argument (which should be in
+% BibTeX name format) into "First Von Last, Junior", separated by commas
+% and with an "and" before the last (but ending with "et~al." if the last
+% of multiple authors is "others").  This function's argument should always
+% contain at least one name.
+%
+% VAR: nameptr, namesleft, numnames: INTEGER
+% pseudoVAR: nameresult: STRING		(it's what's accumulated on the stack)
+%
+% format.names(s) ==
+%  BEGIN
+%	nameptr := 1
+%	numnames := num.names$(s)
+%	namesleft := numnames
+%	while namesleft > 0
+%	  do
+%				% for full names:
+%	    t := format.name$(s, nameptr, "{ff~}{vv~}{ll}{, jj}")
+%				% for abbreviated first names:
+%	    t := format.name$(s, nameptr, "{f.~}{vv~}{ll}{, jj}")
+%	    if nameptr > 1 then
+%		if namesleft > 1 then nameresult := nameresult * ", " * t
+%		else if numnames > 2
+%		       then nameresult := nameresult * ","
+%		     fi
+%		     if t = "others"
+%		       then nameresult := nameresult * " et~al."
+%		       else nameresult := nameresult * " and " * t
+%		     fi
+%		fi
+%	    else nameresult := t
+%	    fi
+%	    nameptr := nameptr + 1
+%	    namesleft := namesleft - 1
+%	  od
+%	return nameresult
+%  END
+%
+% The format.authors function returns the result of format.names(author)
+% if the author is present, or else it returns the null string
+%
+% format.authors ==
+%  BEGIN
+%	if empty$(author) then return ""
+%	else return format.names(author)
+%	fi
+%  END
+%
+% Format.editors is like format.authors, but it uses the editor field,
+% and appends ", editor" or ", editors"
+%
+% format.editors ==
+%  BEGIN
+%	if empty$(editor) then return ""
+%	else
+%	    if num.names$(editor) > 1 then
+%		return format.names(editor) * ", editors"
+%	    else
+%		return format.names(editor) * ", editor"
+%	    fi
+%	fi
+%  END
+%
+% Other formatting functions are similar, so no "comment version" will be
+% given for them.
+%
+% The `pop$' in this function gets rid of the duplicate `empty' value and
+% the `skip$' returns the duplicate field value
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+    { pop$ "" }
+    'skip$
+  if$
+}
+FUNCTION {emphasize}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "{\em " swap$ * "}" * }
+  if$
+}
+FUNCTION {embolden}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "{\bf " swap$ * "}" * }
+  if$
+}
+FUNCTION {bracket}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "[" swap$ * "]" * }
+  if$
+}
+FUNCTION {paren}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "(" swap$ * ")" * }
+  if$
+}
+INTEGERS { nameptr namesleft numnames }
+INTEGERS { etal }
+FUNCTION {format.names}
+{ 's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames #3  >
+  s numnames "{ll}" format.name$ "others" = numnames #1  > and
+  or 'etal :=
+  etal
+    { #1  #1 + 'namesleft := }
+    { numnames 'namesleft := }
+  if$
+    { namesleft #0 > }
+    { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
+      nameptr #1 >
+	{ namesleft #1 >
+	    { ", " * t * }
+	    { nameptr #2 >
+		{ "," * }
+		'skip$
+	      if$
+	      t "others" =
+	      etal or
+		{ " et~al." * }
+		{ " and " * t * }
+	      if$
+	    }
+	  if$
+	}
+	't
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+FUNCTION {format.authors}
+{ author empty$
+    { "" }
+    { author format.names }
+  if$
+}
+FUNCTION {format.editors}
+{ editor empty$
+    { "" }
+    { editor format.names
+      editor num.names$ #1 >
+	{ ", editors" * }
+	{ ", editor" * }
+      if$
+    }
+  if$
+}
+% The format.title function is used for non-book-like titles.
+% For most styles we convert to lowercase (except for the very first letter,
+% and except for the first one after a colon (followed by whitespace)),
+% and hope the user has brace-surrounded words that need to stay capitilized;
+% for some styles, however, we leave it as it is in the database.
+FUNCTION {format.title}
+{ title empty$
+    { "" }
+    { title "t" change.case$ }
+  if$
+}
+% By default, BibTeX sets the global integer variable global.max$ to the BibTeX
+% constant glob_str_size, the maximum length of a global string variable.
+% Analogously, BibTeX sets the global integer variable entry.max$ to
+% ent_str_size, the maximum length of an entry string variable.
+% The style designer may change these if necessary (but this is unlikely)
+% The n.dashify function makes each single `-' in a string a double `--'
+% if it's not already
+%
+% pseudoVAR: pageresult: STRING		(it's what's accumulated on the stack)
+%
+% n.dashify(s) ==
+%  BEGIN
+%	t := s
+%	pageresult := ""
+%	while (not empty$(t))
+%	  do
+%	    if (first character of t = "-")
+%	      then
+%		if (next character isn't)
+%		  then
+%		    pageresult := pageresult * "--"
+%		    t := t with the "-" removed
+%		  else
+%		    while (first character of t = "-")
+%		      do
+%			pageresult := pageresult * "-"
+%			t := t with the "-" removed
+%		      od
+%		fi
+%	      else
+%		pageresult := pageresult * the first character
+%		t := t with the first character removed
+%	    fi
+%	  od
+%	return pageresult
+%  END
+FUNCTION {n.dashify}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+	{ t #1 #2 substring$ "--" = not
+	    { "--" *
+	      t #2 global.max$ substring$ 't :=
+	    }
+	    {   { t #1 #1 substring$ "-" = }
+		{ "-" *
+		  t #2 global.max$ substring$ 't :=
+		}
+	      while$
+	    }
+	  if$
+	}
+	{ t #1 #1 substring$ *
+	  t #2 global.max$ substring$ 't :=
+	}
+      if$
+    }
+  while$
+}
+FUNCTION {first.page}
+{ 't :=
+  ""
+    {  t empty$ not t #1 #1 substring$ "-" = not and }
+    { t #1 #1 substring$ *
+      t #2 global.max$ substring$ 't :=
+    }
+  while$
+}
+% The format.date function is for the month and year, but we give a warning if
+% there's an empty year but the month is there, and we return the empty string
+% if they're both empty.
+FUNCTION {format.collaboration}
+{ collaboration empty$
+    { "" * }
+    { " (" * collaboration * " Collab.)" }
+  if$
+}
+FUNCTION {format.collabbook}
+{ collaboration empty$
+    { "" * }
+    { "The " * collaboration * " Collaboration" }
+  if$
+}
+
+
+FUNCTION {format.url}
+{ url empty$
+    { "" }
+    { new.block "\url{" url * "}" * }
+  if$
+}
+
+
+
+FUNCTION {format.date}
+{ year empty$
+    { "" }
+    'year
+  if$
+}
+% The format.btitle is for formatting the title field when it is a book-like
+% entry---the style used here keeps it in uppers-and-lowers and emphasizes it.
+FUNCTION {format.btitle}
+{ title emphasize
+}
+% For several functions we'll need to connect two strings with a
+% tie (~) if the second one isn't very long (fewer than 3 characters).
+% The tie.or.space.connect function does that.  It concatenates the two
+% strings on top of the stack, along with either a tie or space between
+% them, and puts this concatenation back onto the stack:
+%
+% tie.or.space.connect(str1,str2) ==
+%    BEGIN
+%	if text.length$(str2) < 3
+%	  then return the concatenation of str1, "~", and str2
+%	  else return the concatenation of str1, " ", and str2
+%    END
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { " " }
+  if$
+  swap$ * *
+}
+% The either.or.check function complains if both fields or an either-or pair
+% are nonempty.
+%
+% either.or.check(t,s) ==
+%  BEGIN
+%	if empty$(s) then
+%	    warning$(can't use both " * t * " fields in " * cite$)
+%	fi
+%  END
+FUNCTION {either.or.check}
+{ empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+% The format.bvolume function is for formatting the volume and perhaps
+% series name of a multivolume work.  If both a volume and a series field
+% are there, we assume the series field is the title of the whole multivolume
+% work (the title field should be the title of the thing being referred to),
+% and we add an "of <series>".  This function is called in mid-sentence.
+FUNCTION {format.bvolume}
+{ volume empty$
+    { "" }
+    { "volume" volume tie.or.space.connect
+      series empty$
+	'skip$
+	{ " of " * series emphasize * }
+      if$
+      "volume and number" number either.or.check
+    }
+  if$
+}
+% The format.number.series function is for formatting the series name
+% and perhaps number of a work in a series.  This function is similar to
+% format.bvolume, although for this one the series must exist (and the
+% volume must not exist).  If the number field is empty we output either
+% the series field unchanged if it exists or else the null string.
+% If both the number and series fields are there we assume the series field
+% gives the name of the whole series (the title field should be the title
+% of the work being one referred to), and we add an "in <series>".
+% We capitilize Number when this function is used at the beginning of a block.
+FUNCTION {format.number.series}
+{ volume empty$
+    { number empty$
+	{ series field.or.null }
+	{ output.state mid.sentence =
+	    { "number" }
+	    { "Number" }
+	  if$
+	  number tie.or.space.connect
+	  series empty$
+	    { "there's a number but no series in " cite$ * warning$ }
+	    { " in " * series * }
+	  if$
+	}
+      if$
+    }
+    { "" }
+  if$
+}
+% The format.edition function appends " edition" to the edition, if present.
+% We lowercase the edition (it should be something like "Third"), because
+% this doesn't start a sentence.
+FUNCTION {format.edition}
+{ edition empty$
+    { "" }
+    { output.state mid.sentence =
+	{ edition "l" change.case$ " edition" * }
+	{ edition "t" change.case$ " edition" * }
+      if$
+    }
+  if$
+}
+% The format.pages function is used for formatting a page range in a book
+% (and in rare circumstances, an article).
+%
+% The multi.page.check function examines the page field for a "-" or "," or "+"
+% so that format.pages can use "page" instead of "pages" if none exists.
+% Note: global.max$ here means "take the rest of the string"
+%
+% VAR: multiresult: INTEGER	(actually, a boolean)
+%
+% multi.page.check(s) ==
+%  BEGIN
+%	t := s
+%	multiresult := false
+%	while ((not multiresult) and (not empty$(t)))
+%	  do
+%	    if (first character of t = "-" or "," or "+")
+%	      then multiresult := true
+%	      else t := t with the first character removed
+%	    fi
+%	  od
+%	return multiresult
+%  END
+INTEGERS { multiresult }
+FUNCTION {multi.page.check}
+{ 't :=
+  #0 'multiresult :=
+    { multiresult not
+      t empty$ not
+      and
+    }
+    { t #1 #1 substring$
+      duplicate$ "-" =
+      swap$ duplicate$ "," =
+      swap$ "+" =
+      or or
+	{ #1 'multiresult := }
+	{ t #2 global.max$ substring$ 't := }
+      if$
+    }
+  while$
+  multiresult
+}
+% This function doesn't begin a sentence so "pages" isn't capitalized.
+% Other functions that use this should keep that in mind.
+FUNCTION {format.pages}
+{ pages empty$
+    { "" }
+    { pages multi.page.check
+	{ "pp." pages n.dashify tie.or.space.connect }
+	{ "p." pages tie.or.space.connect }
+      if$
+    }
+  if$
+}
+FUNCTION {format.pages.a}
+{ pages empty$
+    { "" }
+    { "p." pages first.page tie.or.space.connect }
+  if$
+}
+% The format.vol.num.pages function is for the volume, number, and page range
+% of a journal article.  We use the format:  vol(number):pages, with some
+% variations for empty fields.  This doesn't begin a sentence.
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null embolden
+  " " swap$ * *
+  format.date empty$
+    'skip$
+    { duplicate$ empty$
+	{ pop$ format.date paren }
+        { " " * format.date paren * }
+      if$
+    }
+  if$
+  pages empty$
+    'skip$
+    { duplicate$ empty$
+	{ pop$ format.pages.a }
+	{ " " * pages first.page *}
+      if$
+    }
+  if$
+}
+% The format.chapter.pages, if the chapter is present, puts whatever is in the
+% type field (or else "chapter" if type is empty) in front of a chapter number.
+% It then appends the pages, if present.  This doesn't begin a sentence.
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+    'format.pages
+    { type empty$
+	{ "chapter" }
+	{ type "l" change.case$ }
+      if$
+      chapter tie.or.space.connect
+      pages empty$
+	'skip$
+	{ ", " * format.pages * }
+      if$
+    }
+  if$
+}
+% The format.in.ed.booktitle function is used for starting out a sentence
+% that begins "In <booktitle>", putting an editor before the title if one
+% exists.
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+    { "" }
+    { editor empty$
+	{ "in " booktitle emphasize * }
+	{ "in " format.editors * ", " * booktitle emphasize * }
+      if$
+    }
+  if$
+}
+% The function empty.misc.check complains if all six fields are empty, and
+% if there's been no sorting or alphabetic-label complaint.
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+  month empty$ year empty$ note empty$ eprint empty$
+  and and and and and
+    { "all relevant fields are empty in " cite$ * warning$ }
+    'skip$
+  if$
+}
+% The function format.thesis.type returns either the (case-changed) type field,
+% if it is defined, or else the default string already on the stack
+% (like "Master's thesis" or "PhD thesis").
+FUNCTION {format.thesis.type}
+{ type empty$
+    'skip$
+    { pop$
+      type "t" change.case$
+    }
+  if$
+}
+% The function format.tr.number makes a string starting with "Technical Report"
+% (or type, if that field is defined), followed by the number if there is one;
+% it returns the starting part (with a case change) even if there is no number.
+% This is used at the beginning of a sentence.
+FUNCTION {format.tr.number}
+{ type empty$
+    { "Technical Report" }
+    'type
+  if$
+  number empty$
+    { "t" change.case$ }
+    { number tie.or.space.connect }
+  if$
+}
+% Now come the cross-referencing functions (these are invoked because
+% one entry in the database file(s) cross-references another, by giving
+% the other entry's database key in a `crossref' field).  This feature
+% allows one or more titled things that are part of a larger titled
+% thing to cross-reference the larger thing.  These styles allow for
+% five posibilities: (1) an ARTICLE may cross-reference an ARTICLE;
+% (2) a BOOK, (3) INBOOK, or (4) INCOLLECTION may cross-reference a BOOK;
+% or (5) an INPROCEEDINGS may cross-reference a PROCEEDINGS.
+% Each of these is explained in more detail later.
+%
+% An ARTICLE entry type may cross reference another ARTICLE (this is
+% intended for when an entire journal is devoted to a single topic---
+% but since there is no JOURNAL entry type, the journal, too, should be
+% classified as an ARTICLE but without the author and title fields).
+% This will result in two warning messages for the journal's entry
+% if it's included in the reference list, but such is life.
+%
+% format.article.crossref ==
+%  BEGIN
+%	if empty$(key) then
+%	    if empty$(journal) then
+%		warning$("need key or journal for " * cite$ *
+%						" to crossref " * crossref)
+%		return(" \cite{" * crossref * "}")
+%	    else
+%		return("In " * emphazise.correct (journal) *
+%						" \cite{" * crossref * "}")
+%		fi
+%	else
+%	    return("In " * key * " \cite{" * crossref * "}")
+%	fi
+%  END
+%
+% The other cross-referencing functions are similar, so no "comment version"
+% will be given for them.
+FUNCTION {format.article.crossref}
+{ key empty$
+    { journal empty$
+	{ "need key or journal for " cite$ * " to crossref " * crossref *
+	  warning$
+	  ""
+	}
+	{ "In " journal * }
+      if$
+    }
+    { "In " key * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+% We use just the last names of editors for a cross reference: either
+% "editor", or "editor1 and editor2", or "editor1 et~al." depending on
+% whether there are one, or two, or more than two editors.
+FUNCTION {format.crossref.editor}
+{ editor #1 "{vv~}{ll}" format.name$
+  editor num.names$ duplicate$
+    { pop$ " et~al." * }
+    { #2 <
+	'skip$
+	{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+	    { " et~al." * }
+	    { " and " * editor #2 "{vv~}{ll}" format.name$ * }
+	  if$
+	}
+      if$
+    }
+  if$
+}
+% A BOOK (or INBOOK) entry type (assumed to be for a single volume in a
+% multivolume work) may cross reference another BOOK (the entire multivolume).
+% Usually there will be an editor, in which case we use that to construct the
+% cross reference; otherwise we use a nonempty key field or else the series
+% field (since the series gives the title of the multivolume work).
+FUNCTION {format.book.crossref}
+{ volume empty$
+    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+      "In "
+    }
+    { "Volume" volume tie.or.space.connect
+      " of " *
+    }
+  if$
+  editor empty$
+  editor field.or.null author field.or.null =
+  or
+    { key empty$
+	{ series empty$
+	    { "need editor, key, or series for " cite$ * " to crossref " *
+	      crossref * warning$
+	      "" *
+	    }
+	    { "{\em " * series * "\/}" * }
+	  if$
+	}
+	{ key * }
+      if$
+    }
+    { format.crossref.editor * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+% An INCOLLECTION entry type may cross reference a BOOK (assumed to be the
+% collection), or an INPROCEEDINGS may cross reference a PROCEEDINGS.
+% Often there will be an editor, in which case we use that to construct
+% the cross reference; otherwise we use a nonempty key field or else
+% the booktitle field (which gives the cross-referenced work's title).
+FUNCTION {format.incoll.inproc.crossref}
+{ editor empty$
+  editor field.or.null author field.or.null =
+  or
+    { key empty$
+	{ booktitle empty$
+	    { "need editor, key, or booktitle for " cite$ * " to crossref " *
+	      crossref * warning$
+	      ""
+	    }
+	    { "In {\em " booktitle * "\/}" * }
+	  if$
+	}
+	{ "In " key * }
+      if$
+    }
+    { "In " format.crossref.editor * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+% Now we define the type functions for all entry types that may appear
+% in the .BIB file---e.g., functions like `article' and `book'.  These
+% are the routines that actually generate the .BBL-file output for
+% the entry.  These must all precede the READ command.  In addition, the
+% style designer should have a function `default.type' for unknown types.
+% Note: The fields (within each list) are listed in order of appearance,
+% except as described for an `inbook' or a `proceedings'.
+%
+% The article function is for an article in a journal.  An article may
+% CROSSREF another article.
+%	Required fields: author, title, journal, year
+%	Optional fields: volume, number, pages, month, note, eprint
+%
+% article ==
+%  BEGIN
+%	output.bibitem
+%	output.check(format.authors,"author")
+%	new.block
+%	output.check(format.title,"title")
+%	new.block
+%	if missing$(crossref) then
+%	    output.check(emphasize(journal),"journal")
+%	    output(format.vol.num.pages)
+%	    output.check(format.date,"year")
+%       else
+%	    output.nonnull(format.article.crossref)
+%	    output(format.pages)
+%	fi
+%	new.block
+%	output(note)
+%	fin.entry
+%  END
+%
+% The book function is for a whole book.  A book may CROSSREF another book.
+%	Required fields: author or editor, title, publisher, year
+%	Optional fields: volume or number, series, address, edition, month,
+%			note
+%
+% book ==
+%  BEGIN
+%	if empty$(author) then output.check(format.editors,"author and editor")
+%	else	output.check(format.authors,"author")
+%		if missing$(crossref) then
+%		    either.or.check("author and editor",editor)
+%		fi
+%	fi
+%	new.block
+%	output.check(format.btitle,"title")
+%	if missing$(crossref) then
+%	    output(format.bvolume)
+%	    new.block
+%	    output(format.number.series)
+%	    new.sentence
+%	    output.check(publisher,"publisher")
+%	    output(address)
+%       else
+%	    new.block
+%	    output.nonnull(format.book.crossref)
+%	fi
+%	output(format.edition)
+%	output.check(format.date,"year")
+%	new.block
+%	output(note)
+%	fin.entry
+%  END
+%
+% The other entry functions are all quite similar, so no "comment version"
+% will be given for them.
+FUNCTION {article}
+{ output.bibitem
+  format.authors *
+  format.collaboration "collaboration" output.check
+%  format.authors "author" *
+%      format.collaboration empty$
+%	 'skip$
+%	 { duplicate$ empty$
+%	     { pop$ format.collaboration paren }
+%	     { " " * format.collaboration paren * }
+%	   if$
+%	 }
+%      if$
+%      output.check
+
+  new.block
+  format.btitle "title" output.check
+
+  new.block
+  crossref missing$
+    { journal field.or.null
+      format.vol.num.pages output
+    }
+    { format.article.crossref output.nonnull
+      format.pages output
+    }
+  if$
+  note output
+  eprint output
+  fin.entry
+}
+FUNCTION {book}
+{ output.bibitem
+  author empty$
+    { format.editors "author and editor" output.check }
+    { format.authors output.nonnull
+      crossref missing$
+	{ "author and editor" editor either.or.check }
+	'skip$
+      if$
+    }
+  if$
+  format.collabbook "collaboration" output.check
+  new.block
+  format.btitle "title" output.check
+  crossref missing$
+    { format.bvolume output
+      new.block
+      format.number.series output
+      new.sentence
+      publisher "publisher" output.check
+      address output
+    }
+    { new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+% A booklet is a bound thing without a publisher or sponsoring institution.
+%	Required: title
+%	Optional: author, howpublished, address, month, year, note
+FUNCTION {booklet}
+{ output.bibitem
+  format.authors output
+  new.block
+  format.title "title" output.check
+  howpublished address new.block.checkb
+  howpublished output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+% For the conference entry type, see inproceedings.
+% An inbook is a piece of a book: either a chapter and/or a page range.
+% It may CROSSREF a book.  If there's no volume field, the type field
+% will come before number and series.
+%	Required: author or editor, title, chapter and/or pages, publisher,year
+%	Optional: volume or number, series, type, address, edition, month, note
+FUNCTION {inbook}
+{ output.bibitem
+  author empty$
+    { format.editors "author and editor" output.check }
+    { format.authors output.nonnull
+      crossref missing$
+	{ "author and editor" editor either.or.check }
+	'skip$
+      if$
+    }
+  if$
+  new.block
+  format.btitle "title" output.check
+  crossref missing$
+    { format.bvolume output
+      format.chapter.pages "chapter and pages" output.check
+      new.block
+      format.number.series output
+      new.sentence
+      publisher "publisher" output.check
+      address output
+    }
+    { format.chapter.pages "chapter and pages" output.check
+      new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+% An incollection is like inbook, but where there is a separate title
+% for the referenced thing (and perhaps an editor for the whole).
+% An incollection may CROSSREF a book.
+%	Required: author, title, booktitle, publisher, year
+%	Optional: editor, volume or number, series, type, chapter, pages,
+%			address, edition, month, note
+FUNCTION {incollection}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  crossref missing$
+    { format.in.ed.booktitle "booktitle" output.check
+      format.bvolume output
+      format.number.series output
+      format.chapter.pages output
+      new.sentence
+      publisher "publisher" output.check
+      address output
+      format.edition output
+      format.date "year" output.check
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.chapter.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+% An inproceedings is an article in a conference proceedings, and it may
+% CROSSREF a proceedings.  If there's no address field, the month (& year)
+% will appear just before note.
+%	Required: author, title, booktitle, year
+%	Optional: editor, volume or number, series, pages, address, month,
+%			organization, publisher, note
+FUNCTION {inproceedings}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  crossref missing$
+    { format.in.ed.booktitle "booktitle" output.check
+      format.bvolume output
+      format.number.series output
+      format.pages output
+      address empty$
+	{ organization publisher new.sentence.checkb
+	  organization output
+	  publisher output
+	  format.date "year" output.check
+	}
+	{ address output.nonnull
+	  format.date "year" output.check
+	  new.sentence
+	  organization output
+	  publisher output
+	}
+      if$
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+% The conference function is included for Scribe compatibility.
+FUNCTION {conference} { inproceedings }
+% A manual is technical documentation.
+%	Required: title
+%	Optional: author, organization, address, edition, month, year, note
+FUNCTION {manual}
+{ output.bibitem
+  author empty$
+    { organization empty$
+	'skip$
+	{ organization output.nonnull
+	  address output
+	}
+      if$
+    }
+    { format.authors output.nonnull }
+  if$
+  new.block
+  format.btitle "title" output.check
+  author empty$
+    { organization empty$
+	{ address new.block.checka
+	  address output
+	}
+	'skip$
+      if$
+    }
+    { organization address new.block.checkb
+      organization output
+      address output
+    }
+  if$
+  format.edition output
+  format.date output
+  new.block
+  note output
+  fin.entry
+}
+% A mastersthesis is a Master's thesis.
+%	Required: author, title, school, year
+%	Optional: type, address, month, note
+FUNCTION {mastersthesis}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  "Master's thesis" format.thesis.type output.nonnull
+  school "school" output.check
+  address output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+FUNCTION {diplomathesis}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.btitle "title" output.check
+  new.block
+  "Diploma thesis" format.thesis.type output.nonnull
+  school "school" output.check
+  address output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+FUNCTION {personal_communication}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  "private communication" format.thesis.type output.nonnull
+  new.block
+  note output
+  fin.entry
+}
+
+
+% A misc is something that doesn't fit elsewhere.
+%	Required: at least one of the `optional' fields
+%	Optional: author, title, howpublished, month, year, note
+FUNCTION {misc}
+{ output.bibitem
+  format.authors output
+  title howpublished new.block.checkb
+  format.title output
+  howpublished new.block.checka
+  howpublished output
+  format.date output
+  new.block
+  note output
+  fin.entry
+  empty.misc.check
+}
+% A phdthesis is like a mastersthesis.
+%	Required: author, title, school, year
+%	Optional: type, address, month, note
+FUNCTION {phdthesis}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.btitle "title" output.check
+  new.block
+  "PhD thesis" format.thesis.type output.nonnull
+  school "school" output.check
+  address output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+% A proceedings is a conference proceedings.
+% If there is an organization but no editor field, the organization will
+% appear as the first optional field (we try to make the first block nonempty);
+% if there's no address field, the month (& year) will appear just before note.
+%	Required: title, year
+%	Optional: editor, volume or number, series, address, month,
+%			organization, publisher, note
+FUNCTION {proceedings}
+{ output.bibitem
+  editor empty$
+    { organization output }
+    { format.editors output.nonnull }
+  if$
+  new.block
+  format.btitle "title" output.check
+  format.bvolume output
+  format.number.series output
+  address empty$
+    { editor empty$
+	{ publisher new.sentence.checka }
+	{ organization publisher new.sentence.checkb
+	  organization output
+	}
+      if$
+      publisher output
+      format.date "year" output.check
+    }
+    { address output.nonnull
+      format.date "year" output.check
+      new.sentence
+      editor empty$
+	'skip$
+	{ organization output }
+      if$
+      publisher output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+% A techreport is a technical report.
+%	Required: author, title, institution, year
+%	Optional: type, number, address, month, note
+FUNCTION {techreport}
+{ output.bibitem
+  
+  format.authors "author" output.check
+  new.block
+  
+  format.collabbook "collaboration" output.check
+  new.block
+ 
+  format.btitle "title" output.check
+  new.block
+ 
+  institution "institution" output.check
+  address output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+}
+%format.title "title" output.check
+% format.tr.number output.nonnull
+
+
+FUNCTION {urlcite}
+{ output.bibitem
+   
+  format.authors "author" output.check
+  new.block
+
+  format.btitle "title" output.check
+  new.block
+ 
+  format.url output
+  new.block
+
+  note output
+  fin.entry
+}
+
+
+
+% An unpublished is something that hasn't been published.
+%	Required: author, title, note
+%	Optional: month, year
+FUNCTION {unpublished}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  note "note" output.check
+  format.date output
+  fin.entry
+}
+% We use entry type `misc' for an unknown type; BibTeX gives a warning.
+FUNCTION {default.type} { misc }
+% Here are macros for common things that may vary from style to style.
+% Users are encouraged to use these macros.
+%
+% Months are either written out in full or abbreviated
+MACRO {jan} {"Jan."}
+MACRO {feb} {"Feb."}
+MACRO {mar} {"Mar."}
+MACRO {apr} {"Apr."}
+MACRO {may} {"May"}
+MACRO {jun} {"June"}
+MACRO {jul} {"July"}
+MACRO {aug} {"Aug."}
+MACRO {sep} {"Sept."}
+MACRO {oct} {"Oct."}
+MACRO {nov} {"Nov."}
+MACRO {dec} {"Dec."}
+% Journals are either written out in full or abbreviated;
+% the abbreviations are like those found in ACM publications.
+%
+% To get a completely different set of abbreviations, it may be best to make
+% a separate .bib file with nothing but those abbreviations; users could then
+% include that file name as the first argument to the \bibliography command
+MACRO {acmcs} {"ACM Comput. Surv."}
+MACRO {acta} {"Acta Inf."}
+MACRO {cacm} {"Commun. ACM"}
+MACRO {ibmjrd} {"IBM J. Res. Dev."}
+MACRO {ibmsj} {"IBM Syst.~J."}
+MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
+MACRO {ieeetc} {"IEEE Trans. Comput."}
+MACRO {ieeetcad}
+ {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
+MACRO {ipl} {"Inf. Process. Lett."}
+MACRO {jacm} {"J.~ACM"}
+MACRO {jcss} {"J.~Comput. Syst. Sci."}
+MACRO {scp} {"Sci. Comput. Programming"}
+MACRO {sicomp} {"SIAM J. Comput."}
+MACRO {tocs} {"ACM Trans. Comput. Syst."}
+MACRO {tods} {"ACM Trans. Database Syst."}
+MACRO {tog} {"ACM Trans. Gr."}
+MACRO {toms} {"ACM Trans. Math. Softw."}
+MACRO {toois} {"ACM Trans. Office Inf. Syst."}
+MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
+MACRO {tcs} {"Theoretical Comput. Sci."}
+%% /usr/local/lib/tex/bibtex/phyjfull.btx, Tue Jun 30 08:37:48 1992
+%% Edit by Nelson H. F. Beebe <beebe@alfred.math.utah.edu>
+%% Change file names in leading comment
+% Journal Title Abbreviations from the Physical Review Style and Notation
+%	Guide, July, 1983, in BAPS Vol. 28.
+%  Selected by Cris Barnes and Charles Karney, March 1988
+% IMPORTANT!! Don't make changes to this file without making the
+% 	      corresponding changes to
+%			phyjabb.bib
+%			phyjabb.btx
+MACRO {advp} {"Advances in Physics"}
+MACRO {ajp} {"American Journal of Physics"}
+MACRO {ao} {"Applied Optics"}
+MACRO {apl} {"Applied Physics Letters"}
+MACRO {apj} {"Astrophysical Journal"}
+MACRO {baps} {"Bulletin of the American Physical Society"}
+MACRO {cpc} {"Computer Physics Communications"}
+MACRO {cppcf} {"Comments on Plasma Physics and Controlled Fusion"}
+MACRO {fed} {"Fusion Engineering and Design"}
+MACRO {ft} {"Fusion Technology"}
+MACRO {ieeens} {"IEEE Transactions on Nuclear Science"}
+MACRO {ieeeps} {"IEEE Transactions on Plasma Science"}
+MACRO {ijimw} {"International Journal of Infrared and Millimeter Waves"}
+MACRO {ip} {"Infrared Physics"}
+MACRO {jap} {"Journal of Applied Physics"}
+MACRO {jcp} {"Journal of Computational Physics"}
+MACRO {jetp} {"Soviet Physics-JETP"}
+MACRO {jfe} {"Journal of Fusion Energy"}
+MACRO {jfm} {"Journal of Fluid Mechanics"}
+MACRO {jgr} {"Journal of Geophysical Research"}
+MACRO {jmp} {"Journal of Mathematical Physics"}
+MACRO {jne} {"Journal of Nuclear Energy"}
+MACRO {jnec} {"Journal of Nuclear Energy, Part C: Plasma Physics, Accelerators, Thermonuclear Research"}
+MACRO {jnm} {"Journal of Nuclear Materials"}
+MACRO {josa} {"Journal of the Optical Society of America"}
+MACRO {jpp} {"Journal of Plasma Physics"}
+MACRO {jpsj} {"Journal of the Physical Society of Japan"}
+MACRO {jvst} {"Journal of Vacuum Science and Technology"}
+MACRO {nedf} {"Nuclear Engineering and Design/Fusion"}
+MACRO {nf} {"Nuclear Fusion"}
+MACRO {nim} {"Nuclear Instruments and Methods"}
+MACRO {nimpr} {"Nuclear Instruments and Methods in Physics Research"}
+MACRO {nt/f} {"Nuclear Technology/Fusion"}
+MACRO {pf} {"Physics of Fluids"}
+MACRO {pfa} {"Physics of Fluids A: Fluid Dynamics"}
+MACRO {pfb} {"Physics of Fluids B: Plasma Physics"}
+MACRO {pl} {"Physics Letters"}
+MACRO {pla} {"Physics Letters A"}
+MACRO {pnas} {"Proceedings of the National Academy of Sciences of the USA"}
+MACRO {pp} {"Plasma Physics"}
+MACRO {ppcf} {"Plasma Physics and Controlled Fusion"}
+MACRO {prl} {"Physical Review Letters"}
+MACRO {pr} {"Physical Review"}
+MACRO {pra} {"Physical Review A: General Physics"}
+MACRO {ps} {"Physica Scripta"}
+MACRO {rmp} {"Reviews of Modern Physics"}
+MACRO {rsi} {"Review of Scientific Instruments"}
+MACRO {sjpp} {"Soviet Journal of Plasma Phys."}
+MACRO {spd} {"Soviet Physics-Doklady"}
+MACRO {sptp} {"Soviet Physics-Technical Physics"}
+MACRO {spu} {"Soviet Physics-Uspeki"}
+% Now we read in the .BIB entries.
+READ
+% The sortify function converts to lower case after purify$ing; it's
+% used in sorting and in computing alphabetic labels after sorting
+%
+% The chop.word(w,len,s) function returns either s or, if the first len
+% letters of s equals w (this comparison is done in the third line of the
+% function's definition), it returns that part of s after w.
+% This long comment applies only to alphabetic labels
+%
+% The format.lab.names function makes a short label by using the initials of
+% the von and Last parts of the names (but if there are more than four names,
+% (i.e., people) it truncates after three and adds a superscripted "+";
+% it also adds such a "+" if the last of multiple authors is "others").
+% If there is only one name, and its von and Last parts combined have just
+% a single name-token ("Knuth" has a single token, "Brinch Hansen" has two),
+% we take the first three letters of the last name.  The boolean
+% et.al.char.used tells whether we've used a superscripted "+", so that we
+% know whether to include a LaTeX macro for it.
+%
+% format.lab.names(s) ==
+%  BEGIN
+%	numnames := num.names$(s)
+%	if numnames > 1 then
+%	    if numnames > 4 then
+%		namesleft := 3
+%	    else
+%		namesleft := numnames
+%	    nameptr := 1
+%	    nameresult := ""
+%	    while namesleft > 0
+%	      do
+%		if (name_ptr = numnames) and
+%		     format.name$(s, nameptr, "{ff }{vv }{ll}{ jj}") = "others"
+%		   then nameresult := nameresult * "{\etalchar{+}}"
+%			et.al.char.used := true
+%		   else nameresult := nameresult *
+%				format.name$(s, nameptr, "{v{}}{l{}}")
+%		nameptr := nameptr + 1
+%		namesleft := namesleft - 1
+%	      od
+%	    if numnames > 4 then
+%		nameresult := nameresult * "{\etalchar{+}}"
+%		et.al.char.used := true
+%	else
+%	    t := format.name$(s, 1, "{v{}}{l{}}")
+%	    if text.length$(t) < 2 then	% there's just one name-token
+%		nameresult := text.prefix$(format.name$(s,1,"{ll}"),3)
+%	    else
+%		nameresult := t
+%	    fi
+%	fi
+%	return nameresult
+%  END
+%
+% Exactly what fields we look at in constructing the primary part of the label
+% depends on the entry type; this selectivity (as opposed to, say, always
+% looking at author, then editor, then key) helps ensure that "ignored" fields,
+% as described in the LaTeX book, really are ignored.  Note that MISC is part
+% of the deepest `else' clause in the nested part of calc.label; thus, any
+% unrecognized entry type in the database is handled correctly.
+%
+% There is one auxiliary function for each of the four different sequences of
+% fields we use.  The first of these functions looks at the author field, and
+% then, if necessary, the key field.  The other three functions, which might
+% look at two fields and the key field, are similar, except that the key field
+% takes precedence over the organization field (for labels---not for sorting).
+%
+% The calc.label function calculates the preliminary label of an entry, which
+% is formed by taking three letters of information from the author or editor or
+% key or organization field (depending on the entry type and on what's empty,
+% but ignoring a leading "The " in the organization), and appending the last
+% two characters (digits) of the year. It is an error if the appropriate fields
+% among author, editor, organization, and key are missing, and we use
+% the first three letters of the cite$ in desperation when this happens.
+% The resulting label has the year part, but not the name part, purify$ed
+% (purify$ing the year allows some sorting shenanigans by the user).
+%
+% This function also calculates the version of the label to be used in sorting.
+%
+% The final label may need a trailing 'a', 'b', etc., to distinguish it from
+% otherwise identical labels, but we can't calculated those "extra.label"s
+% until after sorting.
+%
+% calc.label ==
+%  BEGIN
+%	if type$ = "book" or "inbook" then
+%	    author.editor.key.label
+%	else if type$ = "proceedings" then
+%	    editor.key.organization.label
+%	else if type$ = "manual" then
+%	    author.key.organization.label
+%	else
+%	    author.key.label
+%	fi fi fi
+%	label := label * substring$(purify$(field.or.null(year)), -1, 2)
+%		% assuming we will also sort, we calculate a sort.label
+%	sort.label := sortify(label), but use the last four, not two, digits
+%  END
+% When sorting, we compute the sortkey by executing "presort" on each entry.
+% The presort key contains a number of "sortify"ed strings, concatenated
+% with multiple blanks between them.  This makes things like "brinch  per"
+% come before "brinch hansen  per".
+%
+% The fields used here are: the sort.label for alphabetic labels (as set by
+% calc.label), followed by the author names (or editor names or organization
+% (with a leading "The " removed) or key field, depending on entry type and on
+% what's empty), followed by year, followed by the first bit of the title
+% (chopping off a leading "The ", "A ", or "An ").
+% Names are formatted: Von Last First Junior.
+% The names within a part will be separated by a single blank
+% (such as "brinch hansen"), two will separate the name parts themselves
+% (except the von and last), three will separate the names,
+% four will separate the names from year (and from label, if alphabetic),
+% and four will separate year from title.
+%
+% The sort.format.names function takes an argument that should be in
+% BibTeX name format, and returns a string containing "   "-separated
+% names in the format described above.  The function is almost the same
+% as format.names.
+% This long comment applies only to alphabetic labels, when sorted
+%
+% Now comes the final computation for alphabetic labels, putting in the 'a's
+% and 'b's and so forth if required.  This involves two passes: a forward
+% pass to put in the 'b's, 'c's and so on, and a backwards pass
+% to put in the 'a's (we don't want to put in 'a's unless we know there
+% are 'b's).
+% We have to keep track of the longest (in width$ terms) label, for use
+% by the "thebibliography" environment.
+%
+% VAR: longest.label, last.sort.label, next.extra: string
+%      longest.label.width, last.extra.num: integer
+%
+% initialize.longest.label ==
+%  BEGIN
+%	longest.label := ""
+%	last.sort.label := int.to.chr$(0)
+%	next.extra := ""
+%	longest.label.width := 0
+%	last.extra.num := 0
+%  END
+%
+% forward.pass ==
+%  BEGIN
+%	if last.sort.label = sort.label then
+%	    last.extra.num := last.extra.num + 1
+%	    extra.label := int.to.chr$(last.extra.num)
+%	else
+%	    last.extra.num := chr.to.int$("a")
+%	    extra.label := ""
+%	    last.sort.label := sort.label
+%	fi
+%  END
+%
+% reverse.pass ==
+%  BEGIN
+%	if next.extra = "b" then
+%	    extra.label := "a"
+%	fi
+%	label := label * extra.label
+%	if width$(label) > longest.label.width then
+%	    longest.label := label
+%	    longest.label.width := width$(label)
+%	fi
+%	next.extra := extra.label
+%  END
+% Now comes the computation for numeric labels.
+% We use either the sorted order or original order.
+% We still have to keep track of the longest (in width$ terms) label, for use
+% by the "thebibliography" environment.
+STRINGS { longest.label }
+INTEGERS { number.label longest.label.width }
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+  #1 'number.label :=
+  #0 'longest.label.width :=
+}
+FUNCTION {longest.label.pass}
+{ number.label int.to.str$ 'label :=
+  number.label #1 + 'number.label :=
+  label width$ longest.label.width >
+    { label 'longest.label :=
+      label width$ 'longest.label.width :=
+    }
+    'skip$
+  if$
+}
+EXECUTE {initialize.longest.label}
+ITERATE {longest.label.pass}
+% Now we're ready to start writing the .BBL file.
+% We begin, if necessary, with a LaTeX macro for unnamed names in an alphabetic
+% label; next comes stuff from the `preamble' command in the database files.
+% Then we give an incantation containing the command
+%     \begin{thebibliography}{...}
+% where the `...' is the longest label.
+%
+% We also call init.state.consts, for use by the output routines.
+FUNCTION {begin.bib}
+{ preamble$ empty$
+    'skip$
+    { preamble$ write$ newline$ }
+  if$
+  "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
+}
+EXECUTE {begin.bib}
+EXECUTE {init.state.consts}
+% Now we produce the output for all the entries
+ITERATE {call.type$}
+% Finally, we finish up by writing the `\end{thebibliography}' command.
+FUNCTION {end.bib}
+{ newline$
+  "\end{thebibliography}" write$ newline$
+}
+EXECUTE {end.bib}
Index: /trunk/MagicSoft/TDAS-Extractor/magic-tdas.sty
===================================================================
--- /trunk/MagicSoft/TDAS-Extractor/magic-tdas.sty	(revision 5216)
+++ /trunk/MagicSoft/TDAS-Extractor/magic-tdas.sty	(revision 5216)
@@ -0,0 +1,205 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%  magic-tdas.sty -- style file to write MAGIC-TDAS documents
+%%%-----------------------------------------------------------------
+%%%  Kopyleft (K) 2000 J C Gonzalez
+%%%  Max-Planck-Institut fuer Physik, 
+%%%  Foehringer Ring 6, 80805 Muenchen, Germany
+%%%  E-mail: gonzalez@mppmu.mpg.de
+%%%-----------------------------------------------------------------
+%%%  This program is free software; you can redistribute, copy,
+%%%  modify, use it and its documentation for any purpose,
+%%%  provided that the above copyright notice appear in all
+%%%  copies and that both that copyright notice and this
+%%%  permission notice appear in supporting documentation.
+%%%  
+%%%  This piece of code is distributed in the hope that it will
+%%%  be useful, but WITHOUT ANY WARRANTY; without even the
+%%%  implied warranty of FITNESS FOR A PARTICULAR PURPOSE.
+%%%
+%%%  Although you can actually do whatever you want with this
+%%%  file (following the copyright notice above), your are 
+%%%  strongly encouraged NOT to edit directly this file. 
+%%%  Instead, make a copy and edit the copy for your purposes.
+%%% 
+%%%  Modifying this file means that you have the very basic 
+%%%  knowledge needed to make things by your own, and therefore... 
+%%%  you will not get _any_ additional support  :-)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%  Last update: Time-stamp: <Tue Feb 22 16:23:07 MET 2000>
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{magic-tdas}
+[2000/03/01 v0.01 magic-tdas -- style file to write MAGIC-TDAS documents]
+
+\typeout{magic-tdas -- style file to write MAGIC-TDAS documents}
+
+%%% PACKAGES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\usepackage[english]{babel}
+\usepackage{epsfig}
+\usepackage{fancyheadings}
+\usepackage{rotating}
+\usepackage{amsmath}
+\usepackage{xspace}
+\usepackage{enumerate}
+\usepackage{makeidx}
+\usepackage{floatflt}
+\usepackage{wrapfig}
+%\usepackage{html}
+\usepackage{verbatim}
+
+%\usepackage{a4wide}
+\usepackage{vmargin}
+\setpapersize{A4}
+\setmarginsrb{2cm}{3cm}{2cm}{3cm}{12pt}{20pt}{0pt}{0pt}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% NEW COMMANDS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newcommand\TDAScode[1]{\gdef\@TDASnumber{#1}}
+%-----------------------------------------------------------
+\newcommand\TDASref[1]{\gdef\@TDASref{#1}}
+%-----------------------------------------------------------
+\renewcommand\@maketitle{%
+  \newpage
+  \null
+  \begin{picture}(0,0)%
+  \put(0,50){\epsfig{file=magiclogo.eps,width=4cm}}%
+  \put(400,80){\parbox[t]{0.3\linewidth}{\textsf{\@TDASnumber}}}%
+  \end{picture}%
+  \begin{center}%
+  \let \footnote \thanks
+    {\large \scshape \@title \par}%
+    \vskip 1.5em%
+    {\large
+      \lineskip .5em%
+      \begin{tabular}[t]{c}%
+        \@author
+      \end{tabular}\par}%
+    \vskip 1em%
+    {\large \@date}%
+  \end{center}%
+  \par
+  \vskip 1.5em}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% TABLE OF CONTENTS AND BIBLIOGRAPHY %%%%%%%%%%%%%%%%%%%%%
+\def\thetableofcontents{%
+\small%
+\renewcommand{\contentsname}{}%
+\begin{center}%
+{\bfseries Contents}\\%
+\begin{minipage}{0.7\linewidth}%
+\footnotesize%
+\tableofcontents%
+\end{minipage}%
+\vskip20pt
+\end{center}}
+
+\def\theBibliography{%
+\nocite{*}
+\renewcommand{\refname}{}
+\bibliographystyle{abbrv}
+\begin{center}%
+{\bfseries References}\\%
+\begin{minipage}{0.7\linewidth}%
+\footnotesize%
+\bibliography{anasoft}%
+\end{minipage}%
+\end{center}}
+
+\renewenvironment{thebibliography}[1]
+     {\vskip\baselineskip\centering{\bfseries References\\}
+        \@mkboth{References}{References}%
+        \list{\@biblabel{\@arabic\c@enumiv}}%
+           {\settowidth\labelwidth{\@biblabel{#1}}%
+            \leftmargin\labelwidth
+            \advance\leftmargin\labelsep
+            \@openbib@code
+            \usecounter{enumiv}%
+            \let\p@enumiv\@empty
+            \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+      \sloppy
+      \clubpenalty4000
+      \@clubpenalty \clubpenalty
+      \widowpenalty4000%
+      \sfcode`\.\@m}
+     {\def\@noitemerr
+       {\@latex@warning{Empty `thebibliography' environment}}%
+      \endlist}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% CITES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% cite(s) in captions
+\newcommand{\ccite}[1]{\protect\cite{#1}\xspace}     
+%% references in captions
+\newcommand{\cref}[1]{\protect\ref{#1}\xspace}       
+%% also references in captions
+\newcommand{\fullcref}[1]{\protect\ref{#1} %
+in page \protect\pageref{#1}\xspace} 
+%% id., normal
+\newcommand{\fullref}[1]{\ref{#1} in page \pageref{#1}\xspace} 
+
+%% units
+\renewcommand{\u}[1]{\ensuremath{\mathrm{\,#1}}}    
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% FANCYHEADINGS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pagestyle{fancyplain}
+%\addtolength{\headwidth}{\marginparsep}
+%\addtolength{\headwidth}{\marginparwidth}
+\addtolength{\headwidth}{1cm}
+%\renewcommand{\chaptermark}[1]%
+%   {\markboth{#1}{}}
+\renewcommand{\sectionmark}[1]%
+   {\markright{\thesection\ #1}}
+\renewcommand{\subsectionmark}[1]%
+   {\markright{\thesubsection\ #1}}
+\lhead[\fancyplain{}{\itshape \thepage}]%
+   {\fancyplain{}{\itshape  \rightmark}}
+\rhead[\fancyplain{}{\itshape \thetitle}]%
+   {\fancyplain{}{\itshape \thepage}}
+\cfoot{}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% CAPTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\long\def\@makecaption#1#2{%
+%\centering\parbox[b][\height+\baselineskip][b]{0.8\linewidth}{\small{\bf #1}.\quad #2}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% SECTIONING COMMANDS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\renewcommand{\section}{\@startsection
+  {section}%
+  {1}%
+  {0pt}%
+  {\baselineskip}% 
+  {0.5\baselineskip}%
+  {\large\scshape}}
+
+\renewcommand{\subsection}{\@startsection
+  {subsection}%
+  {2}%
+  {0pt}%
+  {0.8\baselineskip}% 
+  {0.5\baselineskip}%
+  {\bfseries}}
+
+\renewcommand{\subsubsection}{\@startsection
+  {subsubsection}%
+  {3}%
+  {10pt}%
+  {0.5\baselineskip}% 
+  {0.2\baselineskip}%
+  {\itshape}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% GENERAL FORMATTING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{0.2\baselineskip}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\endinput
+
+%%EOF
Index: /trunk/MagicSoft/TDAS-Extractor/magiclogo.eps
===================================================================
--- /trunk/MagicSoft/TDAS-Extractor/magiclogo.eps	(revision 5216)
+++ /trunk/MagicSoft/TDAS-Extractor/magiclogo.eps	(revision 5216)
@@ -0,0 +1,1406 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: /hd90/gonzalez/LaTeX/papers/anasoft/mag1.eps
+%%Creator: XV Version 3.10a  Rev: 12/29/94  -  by John Bradley
+%%BoundingBox: 210 377 386 464
+%%Pages: 1
+%%DocumentFonts:
+%%EndComments
+%%EndProlog
+
+%%Page: 1 1
+
+% remember original state
+/origstate save def
+
+% build a temporary dictionary
+20 dict begin
+
+% define string to hold a scanline's worth of data
+/pix 528 string def
+
+% define space for color conversions
+/grays 176 string def  % space for gray scale line
+/npixls 0 def
+/rgbindx 0 def
+
+% lower left corner
+210 377 translate
+
+% size of image (on paper, in 1/72inch coords)
+175.96800 86.97600 scale
+
+% define 'colorimage' if it isn't defined
+%   ('colortogray' and 'mergeprocs' come from xwd2ps
+%     via xgrab)
+/colorimage where   % do we know about 'colorimage'?
+  { pop }           % yes: pop off the 'dict' returned
+  {                 % no:  define one
+    /colortogray {  % define an RGB->I function
+      /rgbdata exch store    % call input 'rgbdata'
+      rgbdata length 3 idiv
+      /npixls exch store
+      /rgbindx 0 store
+      0 1 npixls 1 sub {
+        grays exch
+        rgbdata rgbindx       get 20 mul    % Red
+        rgbdata rgbindx 1 add get 32 mul    % Green
+        rgbdata rgbindx 2 add get 12 mul    % Blue
+        add add 64 idiv      % I = .5G + .31R + .18B
+        put
+        /rgbindx rgbindx 3 add store
+      } for
+      grays 0 npixls getinterval
+    } bind def
+
+    % Utility procedure for colorimage operator.
+    % This procedure takes two procedures off the
+    % stack and merges them into a single procedure.
+
+    /mergeprocs { % def
+      dup length
+      3 -1 roll
+      dup
+      length
+      dup
+      5 1 roll
+      3 -1 roll
+      add
+      array cvx
+      dup
+      3 -1 roll
+      0 exch
+      putinterval
+      dup
+      4 2 roll
+      putinterval
+    } bind def
+
+    /colorimage { % def
+      pop pop     % remove 'false 3' operands
+      {colortogray} mergeprocs
+      image
+    } bind def
+  } ifelse          % end of 'false' case
+
+
+
+176 87 8			% dimensions of data
+[176 0 0 -87 0 87]		% mapping matrix
+{currentfile pix readhexstring pop}
+false 3 colorimage
+
+d8d5de9993a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a7
+9c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a7
+9c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a7
+9c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a7
+9c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a7
+9c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a7
+9c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79c96a79993a7
+b5b2c5fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf5dbfdf0d3
+fdf0d3fdf5e3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf5dbfdf0d3fdf0d3
+fdf5dbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdf5e3fdf0d3fdf0d3fdf5dbfdfdf3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf5e3fdedc7ebdca4f4db9d
+f4e0b0f4e8c7fdf9f3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf0d3
+fdf0d3fdf5dbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdf9f3f4e8c7fdedc7fdedc7fdf5dbfdfdf3fdfdfb
+716f8d151939151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f
+151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f
+151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f
+151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f
+151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f
+151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f
+151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f151a3f
+2c2a4cf6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf5dbd2a812caa604
+caa604dab437fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdedc7d2a906caa604caa604
+d2aa19fdf9f3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbe3bf54caa204caa604caa204f4db9dfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf0d3ebc867d2a906caa604d2a70bcaa204
+caa204d2a906d2ad19ebc867fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdedc7d2a906
+caa604daaf21fdf9f3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfde8bb
+e3bf5ed2aa19d2a906caa604caa204caa604daaf21fdedc7
+6f6a88151739151939151939151a3f151939151939151a3f151939151939151a3f151939
+151939151a3f151939151939151a3f151939151939151a3f151939151939151a3f151939
+151939151a3f151939151939151a3f151939151939151a3f151939151939151a3f151939
+151939151a3f151939151939151a3f151939151939151a3f151939151939151a3f151939
+151939151a3f151939151939151a3f151939151939151a3f151939151939151a3f151939
+151939151a3f151939151939151a3f151939151939151a3f151939151939151a3f151939
+151939151a3f151939151939151a3f151939151939151a3f151939151939151739171739
+28284cf6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf4e8b7caa204caa204
+d2a70bd2a70bf4e8b7fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbebd07ecaa204caa204d2a70b
+d2a906fdf0d3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdf5e3d2aa19d2a70bcaa604caa204e3bf5efdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbe3c76dcaa604caa204caa204caa604caa204caa204
+caa204caa204caa204e3bf54fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf4e4bfcaa204
+caa204d2ad19fdfdf3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbe3c76dcaa204
+caa204caa204caa204caa204caa204caa204d2a906fdedc7
+746f8d151539151739151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f171a3f151739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf4db9dcaa204d2a906
+caa604caa204ebd07efdfdfbfdfdfbfdfdfbfdfdfbfdfdfbdaaf30caa204caa604caa604
+caa204fdedc7fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+f4e4a8caa204caa604caa604caa604d2ad19fdf5e3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbebc867caa204caa204caa604caa204dab328dabb4de3bf54
+dab746d2ad19caa204e3c76dfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf4e8c7caa604
+caa204d2aa19fdf9f3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbe3bf5ecaa204d2a906
+caa604caa204d2ad27dab437dab328d2a906d2a812fdf9f3
+746f8d151739151a3f151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151a3f151a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbebcb74caa204caa204
+caa604d2a70bdaaf30fdfdfbfdfdfbfdfdfbfdfdfbfdedc7d2a906caa204caa204caa604
+caa204f4e4a8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+e3bf5ecaa204caa204caa204caa204caa204f4db9dfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbebd07ecaa204caa604caa204dab328f4e8b7fdf9f3fdfdfbfdfdfb
+fdfdfbfdf5e3f4db9dfdedc7fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdedc7caa604
+caa204d2aa19fdfdf3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbebd48dcaa204caa204caa204
+daaf21f4db9dfdf9f3fdfdfbfdfdf3fdf5e3f4e4bffdfdfb
+716f8d151739151739151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151939171a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbe3bf54caa204caa604
+caa204caa604caa604fdedc7fdfdfbfdfdfbfdfdfbebd07ecaa204d2a906caa604d2a906
+caa204ebd48dfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf5db
+d2a812caa204daaf21dab437caa604caa204dab746fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdf0d3d2a812caa204caa204daaf30fdedd3fdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf4e4bfd2a906
+caa604d2ad19fdf9f3fdfdfbfdfdfbfdfdfbfdfdfbfdfdf3daaf30d2a70bcaa604d2a812
+f4e8c7fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+746f8d151739151939171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f
+171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f
+171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f
+171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f
+171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f
+171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f
+171a3f171939171a3f171a3f171939171a3f171a3f171939151a3f151a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf9f3d2ad27d2a70bd2a906
+d2aa19caa204caa204ebcb74fdfdfbfdfdfbfdfdfbdab746caa204d2a906d2ac2fcaa204
+d2a70bebcb74fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbebd48d
+caa204caa204ebcb74ebd48dcaa204caa204d2a906fdf0d3fdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbebcb74caa204caa604caa604f4e8b7fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf4e4bfd2a70b
+d2a70bd2a812fdfdf3fdfdfbfdfdfbfdfdfbfdfdfbfdedc7caa604caa204caa204ebd48d
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739151939151a3f151939151939151a3f151a3f151939151a3f151939
+151939151a3f151a3f151939151a3f151939151939151a3f151a3f151939151a3f151939
+151939151a3f151a3f151939151a3f151939151939151a3f151a3f151939151a3f151939
+151939151a3f151a3f151939151a3f151939151939151a3f151a3f151939151a3f151939
+151939151a3f151a3f151939151a3f151939151939151a3f151a3f151939151a3f151939
+151939151a3f151a3f151939151a3f151939151939151a3f151a3f151939151a3f151939
+151939151a3f151a3f151939151a3f151939151939151a3f171939151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf5e3d2a906caa604d2ad19
+ebcb74d2a70bcaa204d2ad27fdfdf3fdfdfbfdf5e3d2a812caa204dab83eebcb74caa204
+caa204dabb4dfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbdab83e
+caa204caa204f4e8b7fdf5e3d2a906caa604caa204f4db9dfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbdab746caa204d2a70bdab328fdf9f3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf4e8c7caa604
+caa204d2ad19fdf9f3fdfdfbfdfdfbfdfdfbfdfdfbebdca4caa204caa604caa204fdedc7
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+746f8d171739151a3f151a3f151a3f151a3f151939151a3f151a3f151939151a3f151a3f
+151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f
+151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f
+151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f
+151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f
+151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f
+151939151a3f151a3f151939151a3f151a3f151a3f151a3f151939151a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdedc7caa204caa204d2aa19
+f4e8b7d2a906caa604caa204fde8bbfdfdfbebd79dcaa204caa204e3c76df4db9dcaa204
+d2a70bdab328fdfdf3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf4e8c7caa604
+caa204d2aa19fdf9f3fdfdfbdabb4dcaa204caa204e3bf5efdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdf9f3daaf21caa604caa204e3bf54fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdf9f3f4e8b7f4e8b7fdedc7fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf4e8c7caa604
+d2a70bd2a812fdfdf3fdfdfbfdfdfbfdfdfbfdfdfbebd48dcaa204caa604caa604fdf5e3
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739151939151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151939171a3f171a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbebd79dcaa204d2a70bdab83e
+fdf9f3daaf30caa204caa204e3c76dfdfdfbe3bf5ecaa204caa204f4e0b0f4e8c7caa604
+caa204d2a906fdf5e3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbebcb74caa204
+caa204ebc867fdfdfbfdfdfbebd79dcaa204caa604d2aa19fdf5e3fdfdfbfdfdfbfdfdfb
+fdfdfbfdf9f3d2ad19caa204caa204e3bf5efdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+f4e8c7caa604caa204d2aa19fdfdf3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf4e8c7caa604
+caa204d2ad19fdf9f3fdfdfbfdfdfbfdfdfbfdfdfbebd07ecaa204caa204d2a812fdf9f3
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+716f8d151739151a3f171a3f171a3f171939171939171a3f171a3f171939171a3f171939
+171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939
+171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939
+171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939
+171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939
+171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939
+171a3f171a3f171939171939171a3f171939151a3f151939151a3f171939151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbebd07ecaa204caa204e3bf54
+fdfdfbe3bf5ecaa204d2a906dab83efdf5dbd2aa19caa204d2aa19fdf5e3fdf5dbcaa604
+caa204d2a70bfdedc7fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf9f3dab437caa204
+caa604f4e0b0fdfdfbfdfdfbfdf5e3d2aa19caa204caa204f4db9dfdfdfbfdfdfbfdfdfb
+fdfdfbfdf9f3d2ad19caa604caa204e3bf54fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+f4e8c7d2a906caa204d2aa19fdfdf3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdedc7caa604
+d2a70bd2a812fdfdf3fdfdfbfdfdfbfdfdfbfdfdfbebd48dcaa204caa604d2a906fdf0d3
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739151a3f151939151a3f151a3f151a3f151939151a3f151939151a3f
+151a3f151939151a3f151939151939151a3f151a3f151939151a3f151939151939151a3f
+151a3f151939151a3f151939151939151a3f151a3f151939151a3f151939151939151a3f
+151a3f151939151a3f151939151939151a3f151a3f151939151a3f151939151939151a3f
+151a3f151939151a3f151939151939151a3f151a3f151939151a3f151939151939151a3f
+151a3f151939151a3f151939151939151a3f151a3f151939151a3f151939151939151a3f
+151a3f151939151a3f151a3f151a3f151a3f171a3f151a3f151939151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbe3bf5ecaa204caa204ebcb74
+fdfdfbebd79dcaa204caa204d2ad19ebcb74d2a906caa204e3bf5efdfdfbfdfdf3dab328
+caa204caa204f4db9dfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfde8bbd2a70bcaa604
+caa204ebcb74f4db9debd48debd48ddaaf30caa604caa204dabb4dfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbd2ac2fcaa204caa204d2aa19fdf5e3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdedc7caa204caa204d2aa19fdf9f3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf4e4bfcaa604
+caa204d2ad19fdf9f3fdfdfbfdfdfbfdfdfbfdfdfbf4db9dcaa204caa204caa204f4e4a8
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+746f8d171739151939151a3f151a3f151939151939151a3f151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151939151939151a3f151939151a3f151a3f171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf9f3dab437caa204caa204ebd48d
+fdfdfbfdf5dbcaa604caa204caa604d2a70bcaa604caa204f4e0b0fdfdfbfdfdfbe3bf54
+caa204caa204ebcb74fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbe3c465caa204caa604
+caa204caa204d2a70bcaa204caa204caa204d2a906caa204caa604fdedc7fdfdfbfdfdfb
+fdfdfbfdfdfbebcb74caa204caa604caa204ebcb74fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+f4e8c7caa604d2a70bd2a812fdfdf3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdedc7caa604
+d2a70bd2a812fdfdf3fdfdfbfdfdfbfdfdfbfdfdfbf4e8b7caa604caa604caa204dab746
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739151a3f151939151a3f151a3f151a3f151939151939151a3f151a3f
+151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f
+151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f
+151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f
+151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f
+151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f
+151939151a3f151939151a3f151a3f151939171a3f171a3f151939151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf9f3d2a812d2a70bcaa204ebdca4
+fdfdfbfdfdfbe3bf54caa204caa604caa604caa204d2ad19fdf5e3fdfdfbfdfdfbe3c76d
+caa204caa204e3bf5efdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf5e3daaf21caa204d2a906
+d2a906caa604d2a812d2a906d2ad19d2a906caa604d2a906caa204ebd07efdfdfbfdfdfb
+fdfdfbfdfdfbf4e8c7caa604caa604caa604caa604f4db9dfdfdfbfdfdfbfdfdfbfdfdfb
+f4e8c7d2a70bcaa604d2ad19fdf9f3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf4e4bfcaa604
+caa204d2ad19fdf9f3fdfdfbfdfdfbfdfdfbfdfdfbfdf5e3daaf21caa204caa204caa204
+ebcb74fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+716f8d151739151a3f171a3f171939171a3f171939171a3f171a3f171939171a3f171a3f
+171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f
+171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f
+171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f
+171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f
+171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f
+171939171a3f171a3f171939151a3f151939151a3f171a3f151939171939151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf4e8c7caa604caa204d2a906fdedc7
+fdfdfbfdfdfbebd79dcaa204caa604caa604caa204e3bf5efdfdfbfdfdfbfdfdfbebd48d
+caa204caa604dab437fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbebd79dcaa204caa204d2a906
+fdedc7fdf9f3fdf9f3fdf5e3fdf9f3fdf9f3e3c76dcaa204caa604daaf30fdfdf3fdfdfb
+fdfdfbfdfdfbfdfdfbebcb74caa204d2a70bcaa604d2a906e3bf54f4db9df4e0b0f4e4a8
+e3c76dcaa204d2a70bd2a812fdfdf3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdedc7caa604
+d2a70bd2a812fdfdf3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf4d489caa204d2a906caa604
+caa204dab83eebd48df4e4a8f4db9debcb74dab437fdf5db
+6f6a88151739151739151939151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151939151939151a3f151a3f151939151a3f151939151939151a3f151a3f151939
+151a3f151939151939151a3f151a3f151939151a3f151939151939151a3f151a3f151939
+151a3f151939151939151a3f151a3f151939151a3f151939151939151a3f151a3f151939
+151a3f151939151939151a3f151a3f151939151a3f151939151939151a3f151a3f151939
+151a3f151939151939151a3f151a3f151939151a3f151939151939151a3f151a3f151939
+151a3f151a3f151939151a3f171a3f151a3f151939151939151a3f151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf4e4a8caa204caa604caa604fdf5db
+fdfdfbfdfdfbfdf5e3d2a906caa204d2a906caa204f4db9dfdfdfbfdfdfbfdfdfbf4e4a8
+caa204caa204d2a812fdf5e3fdfdfbfdfdfbfdfdfbfdfdfbe3bf54caa204caa204e3bf54
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf4e0b0d2a70bcaa204caa204f4e8b7fdfdfb
+fdfdfbfdfdfbfdfdfbfdf9f3e3bf54caa204caa204caa204caa204caa204caa604caa204
+caa204caa604caa204d2a812fdf9f3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf4e4bfcaa604
+caa204d2ad19fdf9f3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdf3e3bf54caa204caa204
+d2a906d2a70bd2a70bcaa204caa204caa204caa204fde8bb
+746f8d171739151a3f151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151939151a3f151939151a3f151939151a3f151a3f171a3f151a3f171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbebd48dcaa204caa204daaf21fdfdf3
+fdfdfbfdfdfbfdfdfbe3bf54caa204caa204caa204fdedc7fdfdfbfdfdfbfdfdfbfdedc7
+d2a70bcaa204d2a70bfdedc7fdfdfbfdfdfbfdfdfbfdf5dbd2a906caa204caa204f4db9d
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdf3daaf21caa204caa204e3c465fdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdf3ebd07ed2ad19caa604caa204caa204caa204caa204
+caa204caa604d2a906dab83efdfdf3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdedc7caa604
+caa204d2a812fdfdf3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf9f3ebcb74d2a906
+caa604caa204caa204caa204caa204caa204caa604f4e4a8
+6f6a88151739151739151a3f151939151a3f151939151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151a3f151a3f151939171a3f171a3f151939151939151939151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdedc7f4db9debdca4ebdca4fdfdfb
+fdfdfbfdfdfbfdfdfbfdf0d3f4db9debdca4f4e4a8fdf9f3fdfdfbfdfdfbfdfdfbfdfdf3
+f4e4a8f4db9debdca4fdf5e3fdfdfbfdfdfbfdfdfbfdf5e3ebdca4ebdca4ebdca4fdf9f3
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf4e8b7f4db9debdca4f4e8b7fdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf5e3fde8bbebd48debd07eebd07eebd48d
+ebd48debdca4fdf0d3fdfdf3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf9f3f4e4a8
+f4db9df4e0b0fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf5db
+f4e0b0ebd48debd07eebd48debd48df4db9df4e4bffdf9f3
+716f8d151739151939171a3f171a3f171a3f171a3f171939171a3f171a3f171939171a3f
+171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f
+171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f
+171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f
+171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f
+171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f
+171939171a3f151a3f151a3f151939171a3f151a3f171a3f151939171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739151939151939151a3f151939151a3f151a3f151939151a3f151939
+151939151a3f151a3f151939151a3f151939151939151a3f151a3f151939151a3f151939
+151939151a3f151a3f151939151a3f151939151939151a3f151a3f151939151a3f151939
+151939151a3f151a3f151939151a3f151939151939151a3f151a3f151939151a3f151939
+151939151a3f151a3f151939151a3f151939151939151a3f151a3f151939151a3f151939
+151939151a3f151a3f151939151a3f151939151939151a3f151a3f151939151a3f151939
+151a3f151a3f171939151939151a3f151939151a3f151939151a3f151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+746f8d171739151a3f151a3f151939151a3f151939151a3f151a3f151939151a3f151a3f
+151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f
+151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f
+151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f
+151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f
+151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151939
+151a3f151a3f151a3f151a3f151a3f171939151a3f171939151a3f171939151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151a3f
+151a3f151939151939151a3f151a3f151939151a3f151939151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151939151a3f
+151a3f151939171939171a3f151939151a3f151a3f151a3f151939151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+716f8d151739151939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939
+171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939
+171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939
+171a3f171a3f171939171a3f171a3f171939171a3f151a3f171739171739171739161539
+151539151739151739151739151a3f151a3f171a3f151739151739171739151539151539
+171739171739171a3f171939171a3f171939171a3f171a3f171a3f171a3f171939171a3f
+151a3f151a3f151939171a3f151939171a3f151939171a3f151a3f171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739151939151a3f151a3f151939151939151a3f151a3f151939151a3f
+151939151939151a3f151a3f151939151a3f151939151939151a3f151a3f151939151a3f
+151939151939151a3f151a3f151939151a3f151939151939151a3f151a3f151939151a3f
+151939151939151a3f151a3f151939151739151539151739171c3f28284c3b395b524f6c
+6761817f7d99827d99928ca7928fa7a7a4b69993a78f89a7827d99746f8d5d58764a4763
+2c2c53171c3f151739151739151739151a3f151939151939151a3f151939151a3f151939
+171a3f151939151a3f151a3f151a3f151939151a3f151a3f151939151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+746f8d171739151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151739151739151539151a3f28284c5753768f89a7cdc9d6f6f6f8fdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbc0b9c56f6a883b395b171c3f151539151739151a3f151a3f151939151a3f151939
+151a3f151939151a3f171939151a3f171939151a3f171a3f151939171939151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f
+151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f
+151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151739
+151739171c3f323053696481bcb9c5f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbbcb9c5524f6c1c1f45151739151939151a3f151a3f151a3f
+171a3f171a3f151939151a3f151939151a3f151a3f151939151a3f151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+716f8d151739151a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f
+171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f
+171939171a3f171a3f171939171a3f171a3f171939171a3f151a3f171739171739202045
+5d5876c0b9c5fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbb5b2c52e2e53171739151939151939151939
+151a3f171a3f151a3f171a3f151939171a3f151a3f171939151a3f171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739151a3f151939151939151a3f151a3f151939151a3f151939151939
+151a3f151a3f151939151a3f151939151939151a3f151a3f151939151a3f151939151939
+151a3f151a3f151939151a3f151939151a3f1517391515391717392c2c53746f8de5e5e7
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf2f2f8514d6c171739171a3f151a3f
+151939151a3f151939151939151a3f151a3f151939151a3f151939151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+746f8d171739151a3f151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151939151739171c3f3f3e63928fa7fdf9f3fdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb716f8d171a3f151a3f
+151939171a3f151a3f171939151a3f171a3f151939171a3f151939171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f
+151a3f151939151a3f1517391517393f3e63c9c6d6fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb8b8599171939
+151a3f151a3f151939151a3f151a3f151939151a3f151a3f151a3f151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+716f8d151739151939171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f
+171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f171a3f171939171a3f
+171a3f1717391615392e2e539c96a7fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf5e3fdf5e3fdfdfbfdfdfbfdfdfbfdfdfb5d5876
+151739171a3f151939171939151a3f171939151a3f171939151939171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739151939151a3f151939151939151a3f151a3f151939151a3f151939
+151939151a3f151a3f151939151a3f151939151939151a3f151a3f151939151a3f151939
+1515391e21456f6c8dfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdf5e3daaf21dab437fdfdfbfdfdfbfdfdfbfdfdfbe5e5e7
+2c2a4c151739151a3f151a3f151a3f151a3f151939151a3f151a3f151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+746f8d171739151a3f151a3f151a3f151a3f151939151a3f151a3f151939151a3f151a3f
+151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151939151a3f151739
+323053c0b9c5fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf5e3f4e0b0f4e0b0f4e8b7fdedc7
+fdedc7fdf0d3fdf5e3fdfdf3f4e0b0caa204d2a70bfdf5dbfdfdfbfdfdfbfdfdfbfdfdfb
+746f8d171739151939171939151a3f171a3f151939171a3f151939171939151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbe5e5e7b5b2c5e1dee7fdfdfb
+fdfdfbc9c6d6c0b9c5fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb6f6a888b8599
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbcdc9d6b5b2c5fdfdfbfdfdfbfdfdfbe1dee7d8d5defdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb928fa73b395b
+cdc9d6fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfb746f8da7a4b6fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739151939151a3f151939151a3f151a3f151939151a3f151a3f151939
+151a3f151a3f151939151a3f151a3f151a3f151a3f151939151a3f1717391517394a486c
+f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf0d3daaf21caa204caa204d2a70bcaa204
+caa204caa204d2a906d2a906d2a906d2a70bd2a906fdf5e3fdfdfbfdfdfbfdfdfbfdfdfb
+d1cdd6171c3f151a3f151a3f151a3f151939151a3f151939151a3f151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb746f8d1615394a4763fdfdfb
+f6f6f826264c1e2145f2f2f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf6f6f81e21453b395b
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbf2f6f828284c151939a49db6fdfdfbfdfdfb28284c5d5876fdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb6f6c8d151539
+b5b2c5fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+f2f6f81e21455a5576fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+716f8d151739151a3f171a3f171a3f171939171939171a3f171a3f171939171a3f171939
+171a3f171a3f171939171939171939171939171a3f151939151739202345827d99fdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbebd48dcaa204d2a906d2aa19d2a906d2a906
+d2a906caa604caa204caa204caa604caa604ebc867fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfb4a4763151739171939151a3f171a3f151a3f171a3f151a3f171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb514d6c141234202345e5e1e7
+b5b2c5171939151a3fcdc9d6fdfdfb77728d5753766f6a88e1dee7fdfdfb5a55767f7d99
+fdfdfbbcb9c5676181676181aaa7b6fdfdfbb5b2c5827d996f6a88cdc9d6fdfdfbfdfdfb
+fdfdfb928fa7151739151739514d6cfdfdfb8b8599171c3f36355ba7a4b6dadae7827d99
+928ca7625d7caaa7b68b85995d5876a7a4b6fdfdfbf2f2f877728d5d5876827d99f6f6f8
+fdfdfb9993a7514d6c8f89a7fdfdfb8b85998f89a76964818b8599fdfdfb716f8d151939
+696481625d7caaa7b6fdfdfbf2f2f87f7d99575376928fa7fdfdfbb5b2c5827d996f6a88
+aaa7b66f6a889993a7fdfdfbbcb9c5696481625d7cd1cdd6
+6f6a88151739151739151a3f151939151a3f151a3f151a3f151939151a3f151939151a3f
+151a3f151939151a3f151a3f151a3f151a3f151739161539454063e5e5e7fdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbebd07ecaa204dab437fdf9f3fdf9f3fdf5e3
+fdf0d3fdedc7fdedc7f4e8b7f4e8b7fdf0d3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbaaa7b6151a3f151a3f151a3f151939151939151939151939151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb36355b171a3f1517398b8599
+575376171c3f171c3f8b8599fdfdfb3f3e63524f6c171c3f454063fdfdfb202345454063
+f2f2f820234528284c26264c171a3fbcb9c5625d7c14123428284cb5b2c5fdfdfbfdfdfb
+fdfdfb45406328284c3e3c5b171c3fe1dee76f6c8d151a3f20234577728d928ca7171739
+20234528284c171a3f28284c2020451e2145fdfdfb5a5576171c3f34325b171739575376
+9993a7171a3f4a486c8b8599f2f6f81c1f45171c3f2c2c531717398b8599827d99151539
+20234526264c26264cfdfdfb454063171c3f454063171c3fcdc9d65d5876141234202345
+928fa736355b625d7ccdc9d6171c3f2023453b395bb5b2c5
+746f8d171739151939151a3f151a3f151939151939151a3f151a3f151a3f151939151a3f
+151a3f151939151a3f151939151a3f151a3f151a3f5d5876fdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf4e4a8caa204d2a906fdf0d3fdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbf6f6f828284c171739151a3f171a3f151a3f171a3f151939171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf6f6f81e2145454063202345323053
+28284c454063171c3f625d7cfdfdfbb5b2c56761811e214534325bf2f6f82020454a486c
+8b8599171c3fe1dee7cdc9d61517396964816761811c1f45e1dee7fdfdfbfdfdfbfdfdfb
+f2f2f826264c575376928fa715153977728dfdfdfb2023455d5876fdfdfb8f89a7151739
+827d99827d99151a3fd1cdd6625d7c171a3fcdc9d62023456f6c8dfdfdfb32305326264c
+7f7d99151539514d6ce1dee7f2f2f8171c3f3e3c5be5e5e7151a3f514d6c7f7d99151739
+9993a7827d991e2145c0b9c51c1f452023453e3c5b1517397f7d99625d7c151739bcb9c5
+fdfdfb28284c676181676181151739cdc9d6fdfdfbfdfdfb
+6f6a88151739151739151a3f151939151a3f151a3f151a3f151939151939151a3f151a3f
+151939151a3f151939151a3f151739151739696481fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf0d3caa604caa204ebd07efdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfb4a486c151739151a3f151939151a3f151939151a3f151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbd1cdd6151a3f696481514d6c171739
+171939928fa7171c3f514d6cb5b2c51e21453f3e63202045323053f6f6f82023454a4763
+746f8d1e2145f6f6f8cdc9d61717396964815d58762c2c53fdfdfbfdfdfbfdfdfbfdfdfb
+b5b2c5151a3f171a3f1e21451517393b395bfdfdfb2023455a5576fdfdfb8f89a7151739
+aaa7b6827d99171c3ffdfdfb5d5876151a3fc0b9c5171a3f77728dfdfdfb3b395b202345
+f6f6f87f7d99171a3f26264ce1dee7171c3f5d5876fdfdfb1517395a557677728d151a3f
+cdc9d6827d991e2145cdc9d6171a3f3230537f7d9977728de1dee75a5576171a3ff2f2f8
+fdfdfb2c2a4c6964815d5876151739e1dee7fdfdfbfdfdfb
+716f8d151739151a3f171a3f171939171a3f171939171a3f171a3f171939171a3f171a3f
+171a3f171a3f171a3f171a3f1717395d5876fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf9f3d2ac2fcaa204e3bf54fdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfb7f7d99171939151a3f171939151a3f171939151a3f171939151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb9993a71515398b8599928fa7141234
+202045e1dee728284c3230535d58761515395a5576171a3f303053f2f2f8202045454063
+bcb9c51719393e3c5b303053171c3fcdc9d6514d6c2c2a4cfdfdfbfdfdfbfdfdfbfdfdfb
+524f6c2023458b8599928fa73b395b171739b5b2c528284c26264c8b8599928ca7151539
+a7a4b6827d99171a3ffdfdfb5d5876171739e5e5e73230532023454a47631517395a5576
+d1cdd66964812023451e1e39d8d5de1c1f45303053454063171a3faaa7b6746f8d151739
+bcb9c57f7d99171a3fe1dee72e2e532020456f6a885d5876e1dee7575376171939f2f2f8
+fdfdfb28284c625d7c8b859916153934325b514d6cb5b2c5
+6f6a88151739151739151939151a3f151939151a3f151a3f151939151a3f151a3f151939
+151939151939151739151739676181fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbe3c76dcaa204d2a812fdf5e3fdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbb5b2c5151a3f151939151a3f151a3f151a3f151939151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfba49db63b395bb5b2c5f2f2f83f3e63
+5d5876fdfdfb5d58764a486cc9c6d63e3c5b3030534540635d5876f2f6f82023453f3e63
+fdfdfb67618128284c3230538f89a7fdfdfb77728d575376fdfdfbfdfdfbfdfdfbfdfdfb
+575376716f8dfdfdfbfdfdfba49db636355ba49db66f6a8828284c5d5876aaa7b63b395b
+cdc9d6a49db6454063fdfdfb8b85993b395bf6f6f8b5b2c534325b28284c5a5576fdfdfb
+aaa7b62c2a4c36355ba7a4b6f2f6f81e21451c1f45303053827d99fdfdfb928fa73b395b
+e1dee7a7a4b6454063f6f6f8bcb9c53e3c5b28284c323053d8d5de827d993e3c5bf2f6f8
+fdfdfb514d6c827d99fdfdfb5a55762c2a4c2c2c53b5b2c5
+746f8d171739151a3f151a3f151a3f151939151a3f151a3f151939151a3f151a3f151a3f
+151a3f151939171a3f696481fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf4e0b0caa204caa204f4db9dfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbf2f2f81e2145151939171939151a3f171a3f151a3f171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbe5e1e7928ca7171a3f454063
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbe5e5e7151a3f575376fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739151939151939151a3f151a3f151939151a3f151939151939151a3f
+151739151739746f8dfdfdfb7f7d99514d6c746f8d9993a7cdc9d6f2f2f8fdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf9f3dab328caa204e3bf5efdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfb323053151739151a3f151a3f151939151939151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfba7a4b61e214528284cb5b2c5
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbe6e6e6202345625d7cfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+716f8d151739151a3f171a3f171939171a3f171a3f171939171a3f171a3f171939151a3f
+171739575376fdfdfb9993a7171c3f151539151739171a3f171c3f202345303053454063
+625d7c827d99a7a4b6e1dee7f2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbe3c76dcaa204daaf21fdfdf3
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfb3e3c5b151739171939151a3f171a3f151939171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf2f2f8e1dee7f2f6f8fdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbe6e6e6f2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739151939151a3f151a3f151939151a3f151a3f151a3f151a3f171739
+303053fdfdfbd1cdd6202345151539151a3f151739151939171739171739171739151739
+151539171739151a3f171c3f26264c3b395b514d6c6f6c8d928fa7b5b2c5e5e5e7fdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdf3ebd48d
+e3bf54e3bf54e3bf54e3bf5ee3bf5eebcb74ebcb74ebd48ddab746caa204d2a812fdf5e3
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfb514d6c151539151a3f151a3f151939151a3f151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+746f8d171739151a3f151939151a3f151a3f151939151939151939151a3f151a3f151a3f
+a49db6fdfdfb36355b151739151a3f171a3f151a3f151a3f151a3f151a3f171a3f151a3f
+151a3f151a3f151a3f171739151739151739151539151539151a3f171a3f1c1f452e2e53
+3f3e63a7a4b6fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbebcb74caa204
+caa204caa204caa204caa204caa204caa204caa204caa204caa204caa204e3bc47fdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfb5d5876151539171939151a3f171939151a3f171939151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739151a3f151a3f151939151a3f151a3f151a3f1519391515393e3c5b
+fdfdfb514d6c151539151a3f151939151939151a3f151a3f151a3f151a3f151a3f151939
+151a3f151939171a3f151a3f151a3f171a3f151939151a3f151739151a3f151739151739
+1615391c1f45928fa7fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdf9f3daaf30caa204
+d2aa19e3bf54dabb4ddab437d2ac2fd2ad27daaf21d2ad19d2aa19e3bf54fdf0d3fdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfb5d5876151539151a3f151a3f151a3f151939151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+716f8d151739151939171a3f171a3f171939171a3f171939171a3f151739202345e1dee7
+696481151739151739171a3f151a3f151939151a3f151939151939151939171a3f151939
+171a3f151939151939151a3f151939171a3f151939151a3f171939151a3f151a3f151939
+171939151739171a3f524f6cf6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbdab746caa204
+e3bf54fdfdfbfdfdfbfdfdfbfdf9f3fdf9f3fdf9f3fdf9f3fdf9f3fdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfb5d5876151539171939151a3f171a3f151a3f171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739151a3f151939151a3f151939151a3f151a3f151739746f8dc0b9c5
+171a3f151739171a3f151939151a3f171a3f171939171a3f171a3f151a3f151a3f171a3f
+151a3f151a3f151a3f171939151a3f151a3f151a3f151939151a3f171a3f171939151a3f
+151a3f151a3f1519391515393b395be5e5e7fdfdfbfdfdfbfdfdfbfdfdfbebd07ecaa204
+d2aa19fdfdf3fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfb5d5876151539151a3f151a3f151939151939151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+746f8d171739151a3f151a3f151a3f151a3f151939151a3f171739202345fdfdfb676181
+161539151a3f151a3f171939151a3f151a3f151939151a3f171939151939151939151a3f
+151939171a3f151a3f151939151a3f151a3f171a3f151939151a3f151a3f151a3f151939
+151a3f171a3f151a3f151a3f151539303053e1dee7fdfdfbfdfdfbfdfdfbfdedc7caa604
+d2a70bf4e8b7fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfb575376151539171939151a3f171a3f151939171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739151939151939151939151a3f151a3f151739625d7cfdfdfba49db6
+151a3f151939151939151a3f151a3f151939151a3f151939151a3f151a3f151a3f151939
+171a3f151a3f151939171a3f151939171939151939151a3f151a3f151939171939151a3f
+171939151a3f171939151a3f151a3f1515393b395be5e5e7fdfdfbfdfdfbfdfdf3daaf30
+caa204ebd07efdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfb454063151739151a3f151a3f151939151a3f151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+716f8d151739151a3f171a3f171a3f171939151a3f151739171a3fcdc9d6fdfdfbe5e5e7
+1e2145171739151a3f151939151a3f151a3f151a3f151a3f171939151a3f171a3f151939
+151a3f151a3f151939171a3f151a3f151a3f171939151a3f151a3f151a3f171a3f151a3f
+151939151a3f151939171a3f151a3f1519391515392e2e53d1cdd6fdfdfbfdfdfbebcb74
+d2a70bdab83efdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfb3b395b151739171939151a3f171939151a3f171939151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739151939151a3f151a3f171a3f171739454063fdfdfbfdfdfbfdfdfb
+303053151739151939171a3f171939171a3f171939151939151a3f171939151939151a3f
+151a3f171939151a3f151a3f151a3f151939151a3f171a3f171939151939151a3f151939
+151a3f151a3f151a3f151939151a3f151a3f151a3f15173926264cb5b2c5fdfdfbf4e4a8
+caa204d2a906fdf5dbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfb2c2c53151739151a3f151a3f151a3f151939151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+746f8d171739151a3f151939151939151a3f151a3f1517398f89a7fdfdfbfdfdfbfdfdfb
+4a486c151739151a3f151a3f151939151a3f171a3f151a3f151a3f151a3f151939171a3f
+151a3f151939151939151939171a3f151939151a3f151a3f151a3f151939151a3f171939
+151a3f171939151a3f171939151739171739171739151a3f161539171c3f6f6c8dfdf9f3
+dab328caa204ebd48dfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbe5e5e7171c3f151939171939151a3f171a3f151a3f171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739151a3f151a3f1519391517391e2145e5e1e7fdfdfbfdfdfbfdfdfb
+746f8d171739151739151939151a3f151939151a3f151939151a3f151939171a3f151a3f
+151939171a3f151a3f171a3f151a3f151a3f151939151a3f171939151a3f171939151a3f
+171a3f151739151a3f1e1e392f2734262239262239171c3f171c3f1519391519395d5876
+e3bf5ecaa204e3bf5efdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbaaa7b6151a3f151a3f151a3f151a3f151939151939151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+716f8d151739151a3f171939151a3f151a3f1615393e3c5bfdfdfbfdfdfbfdfdfbfdfdfb
+b5b2c5171c3f151a3f151a3f151a3f151939171a3f151939171a3f151939151a3f151a3f
+151939171a3f151939151939171a3f151a3f151939151a3f171a3f151a3f151939151a3f
+151a3f171739433734caa204d2a906caa604caa204ba9311ba9311ba9311ab8b169d7a1b
+d2a70bcaa204ebc867fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfb77728d151739151939171a3f151a3f171a3f151939171939151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739151a3f171a3f151a3f151539625d7cfdfdfbfdfdfbfdfdfbfdfdfb
+f2f2f828284c171739171a3f171939151a3f151a3f171a3f151939151a3f151a3f171939
+151a3f151939151a3f151a3f151a3f171939171a3f151a3f151939151939151a3f151a3f
+1519391e1e39ba9503d2a906caa204d2a906d2a906caa604d2a906d2a906d2a906d2b004
+d2a906ab8b16ebdca4fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfb575376151539151a3f151939151a3f151939151a3f151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbb5b2c55753763f3e63
+454063aaa7b6fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbf6f6f85d5876928fa7fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbc9c6d61e21456f6a88fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+746f8d171739151939151a3f171939151a3f151a3f928fa7fdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfb4a486c151539151a3f171939151939151a3f151a3f151939171a3f151a3f151a3f
+151a3f151939171a3f151939151a3f151939151a3f151a3f151a3f171939151a3f151a3f
+151739262239caa204d2a9064337342622392f27342f27342f2734382e35433734433734
+382e35171c3f454063f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfb323053151739151a3f171939151a3f171a3f151a3f171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb7f7d99151939171c3f2e2e53
+202045746f8dfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbe5e5e7171739514d6cfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbc0b9c5303053827d99fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739151939151a3f151939171c3fc9c6d6fdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfb77728d151939151739151a3f151a3f151a3f151939171a3f151939151939171a3f
+151939171a3f151939151a3f151939151a3f171939151a3f171939151a3f171939151a3f
+151a3f151a3f967827d2b004514133151739171739151739151939151739151739151739
+151739151739151539303053bcb9c5fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbd1cdd61c1f45171739151a3f151a3f151939151939151939151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbd1cdd6171c3f2c2a4ce1dee7fdfdfb
+fdfdfbfdfdfbfdfdfb8f89a736355b36355b454063cdc9d6fdfdfb77728d3f3e63454063
+34325b6761813f3e63303053928ca7fdfdfbb5b2c53f3e634a486c3030535a5576575376
+2e2e536f6a88fdfdfbf6f6f845406336355b36355b8b8599fdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbe5e1e7151a3f575376fdfdfb8b85993f3e6345406334325b676181
+4540633030539993a7fdfdfbc9c6d63f3e6336355b3b395bb5b2c5fdfdfbe5e5e75a5576
+36355b36355b36355baaa7b6fdfdfb3b395b827d99fdfdfb5753764540633f3e63303053
+827d99fdfdfbe1dee7514d6c36355b3230533030537f7d99
+716f8d151739151739151a3f151a3f1517391e2145e6e6e6fdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbd1cdd61c1f45151739171939151a3f171a3f151939151a3f151a3f151939171a3f
+151a3f151a3f171a3f151a3f151939151a3f171939151a3f151939151a3f171939151a3f
+151939151739433734d2b004594635151939151939151939151939151939151939151939
+171a3f151a3f151a3f1517391c1f458f89a7fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfb7f7d99151939151939151a3f171a3f151a3f171a3f151939171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb8f89a7171739827d99fdfdfbfdfdfb
+77728da49db6fdfdfbaaa7b6827d9977728d15193977728dfdfdfb5a55761412345d5876
+3b395b151739696481202345323053fdfdfb9993a71515394540634a4763141234454063
+4a486c202045e6e6e6f2f6f8827d999c96a7323053303053fdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbe5e5e7151a3f575376fdfdfb6761811412345d587636355b151539
+5d587632305334325bfdfdfbd1cdd67f7d999993a7202345454063fdfdfb625d7c151739
+bcb9c5514d6c171a3fd1cdd6e5e5e71517395d5876fdfdfb30305317173969648126264c
+303053fdfdfb575376171a3fcdc9d6514d6c141234aaa7b6
+6f6a88151739151a3f151a3f1519391517392e2e53fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfb323053151739151a3f171a3f151939151a3f151a3f171939151a3f151a3f
+151939151939151a3f171939171a3f151a3f151a3f151a3f151a3f151a3f151a3f171939
+151a3f151939171939262239171939151939151a3f151a3f171a3f151a3f151a3f151a3f
+151a3f151a3f171a3f171a3f1717391719397f7d99fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfb454063151539171a3f151939151939151a3f151939151a3f151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb8b85991515396f6c8dfdfdfbfdfdfb
+26264c514d6cfdfdfbbcb9c53f3e6328284c15173977728dfdfdfb524f6c171c3ffdfdfb
+524f6c303053fdfdfb303053303053fdfdfb9c96a7171c3fd1cdd677728d171939b5b2c5
+928fa71e2145e5e1e7fdfdfb6f6a882e2e531c1f45303053fdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbe5e1e7171a3f524f6cfdfdfb5d58761e2145fdfdfb5a5576171c3f
+fdfdfb524f6c2c2c53fdfdfbf6f6f85a557628284c151a3f454063fdfdfb676181151739
+746f8d3b395b34325bfdfdfbe1dee7151739625d7cfdfdfb3030532e2e53fdfdfb36355b
+2c2a4cfdfdfb5d5876171c3f7f7d993230531e2145f2f2f8
+746f8d151739151939171a3f171a3f17173936355bfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfb5d5876151539151939151a3f151a3f171939151a3f151939151a3f151a3f
+171a3f151939151a3f151939151a3f151939151939171939151a3f151939151a3f151a3f
+151a3f151939151739171739151739151a3f151939151a3f151939171a3f171939151939
+171939151939151a3f151a3f151a3f151739202045f2f2f8fdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+e5e5e7202345151739171a3f151a3f171939151a3f171939151a3f171939151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbdadae7171a3f202345aaa7b6f2f2f8
+28284c5a5576fdfdfb32305326264c928fa7171c3f7f7d99fdfdfb514d6c1e2145fdfdfb
+524f6c303053fdfdfb2e2e532e2e53fdfdfb9993a7171c3ff6f6f8716f8d151939c9c6d6
+928ca71e2145f6f6f8a49db61517396f6a884540632e2e53fdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbe5e5e7171c3f575376fdfdfb625d7c202345fdfdfb524f6c1e2145
+fdfdfb514d6c2c2c53fdfdfb625d7c1517398f89a728284c3f3e63fdfdfba7a4b6151a3f
+2023453e3c5bbcb9c5fdfdfbe1dee7151739625d7cfdfdfb2e2e5336355bfdfdfb36355b
+2e2e53fdfdfb928fa715173928284c3b395ba7a4b6fdfdfb
+6f6a88171739151a3f151939151a3f1517393b395bfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfb928fa7151939151a3f151a3f171939151a3f151a3f171a3f151939171a3f
+151939151a3f151a3f151a3f171939151a3f171a3f151a3f171939151a3f151a3f171a3f
+151939151a3f151a3f151a3f151a3f171939171a3f151939171a3f151939151a3f151a3f
+151a3f151a3f151939151a3f151939151739151a3f9993a7fdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+a7a4b6151a3f151a3f151a3f151a3f151a3f151a3f151a3f151939151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb77728d171c3f171a3f151a3f
+151539676181fdfdfb3b395b171c3f28284c151a3f6f6a88fdfdfb5753761e2145fdfdfb
+514d6c323053fdfdfb303053303053fdfdfba49db6171a3ff6f6f8746f8d151739c0b9c5
+928ca7171c3ff2f6f8a7a4b6151a3f2023451c1f4528284cf6f6f8fdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbe5e1e7151a3f514d6cfdfdfb625d7c202045fdfdfb5753761e2145
+fdfdfb5753762c2a4cfdfdfb6f6c8d1717392c2c53151939454063fdfdfb928ca7151939
+2020452e2e535a5576fdfdfbe1dee7151a3f625d7cfdfdfb2e2e53323053fdfdfb36355b
+2c2a4cfdfdfb77728d1517392023452e2e534a4763e1dee7
+6f6a88161539151739151a3f1519391517393b395bfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbe1dee71e2145171939151a3f151939151a3f151939171a3f151939151a3f
+171939151a3f151939151a3f171a3f151939151a3f151a3f171939151a3f151939171a3f
+171a3f151a3f151a3f151939151a3f151a3f151a3f151a3f151a3f151a3f171939151a3f
+151939151a3f171939171a3f151a3f1519391517395a5576fdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151939171939151939171a3f151939171a3f151a3f171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbcdc9d677728d6f6c8d
+8b8599e5e5e7fdfdfbcdc9d66f6a88928fa7a7a4b6c9c6d6fdfdfbbcb9c59993a7fdfdfb
+bcb9c5a7a4b6fdfdfba49db6a7a4b6fdfdfbe1dee7928fa7fdf9f3cdc9d6928ca7f2f2f8
+e1dee7928fa7fdf9f3fdfdfb928fa7716f8daaa7b6a49db6fdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfb928fa7c0b9c5fdfdfbc9c6d69993a7fdfdfbb5b2c59993a7
+fdfdfbbcb9c5a7a4b6fdfdfbf2f6f8827d997f7d99aaa7b6aaa7b6fdfdfb6f6a881c1f45
+6964814a486c1717399993a7fdfdfb928ca7c9c6d6fdfdfba7a4b6aaa7b6fdfdfbaaa7b6
+a7a4b6fdfdfb5d58761c1f45696481514d6c151539696481
+746f8d151739151a3f151939151a3f1517393b395bfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfb3b395b151539151939151a3f171939151a3f151a3f151a3f151a3f
+151a3f171939171a3f151a3f151939151a3f151a3f151939151a3f171939151a3f151939
+151939151a3f151939151a3f151a3f151939171939151a3f151939151939151a3f151939
+171a3f171a3f151a3f151939171a3f171a3f1515392e2e53fdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+323053151739151a3f151a3f151a3f151939151a3f151a3f151939151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb4a486c151939
+6f6a884a4763202345c9c6d6fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfb3e3c5b171c3f746f8d514d6c171c3f9993a7
+716f8d151739151a3f171a3f151a3f15153936355bfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfb6f6a88151539151939151a3f151939151a3f151939171939151a3f
+151a3f151939151a3f151a3f151939171939151a3f151a3f151a3f151939151a3f151a3f
+171939171a3f171a3f151939151a3f151a3f151939171a3f171a3f151a3f171a3f151939
+151a3f151a3f151a3f151939151a3f151a3f151939151a3fb5b2c5fdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb9993a7
+151739151a3f151939171a3f151a3f171939151a3f171a3f151939171939151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbe1dee7625d7c
+3e3c5b575376d1cdd6fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbd8d5de5d58763b395b514d6cb5b2c5fdfdfb
+746f8d151739151739151a3f17193915193928284cf6f6f8fdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbb1aabc171c3f151a3f151a3f171a3f151939171a3f151a3f151939
+151939151a3f171a3f151939171a3f151a3f171939151a3f151939171a3f151a3f151a3f
+151a3f151a3f151939171a3f171a3f151939171a3f151a3f151939151a3f151939151a3f
+151939151a3f151939151a3f151a3f151939151a3f171739696481fdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb454063
+171739151939151a3f151939151939151a3f151a3f151939151a3f151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88171739151939151a3f151a3f151739171c3fe5e5e7fdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbf2f2f8202345171739151a3f171a3f151939151a3f171a3f151a3f
+151939151a3f171a3f151939151a3f151a3f171939151a3f151939171a3f171939151939
+151939151a3f151939151a3f151a3f151939151a3f151a3f171939151a3f151939151a3f
+171939171a3f151939151a3f171a3f151939151a3f1615393e3c5bfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbbcb9c5171c3f
+171739171a3f151a3f171a3f151939171a3f151a3f171939151a3f171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+746f8d151739151739151939151939151a3f151a3faaa7b6fdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfb524f6c151539151739151939151a3f151939151a3f171939
+171a3f151a3f151939151a3f151a3f151939151a3f171a3f151a3f151939151a3f151a3f
+151a3f151a3f151a3f151939171939151a3f151a3f151939151a3f151a3f171a3f171a3f
+151a3f151939171a3f171a3f151939171a3f151939151a3f1e2145e1dee7fdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb514d6c151739
+151a3f151a3f151a3f151939151a3f151a3f151939151a3f151939151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+746f8d151739151739171a3f151a3f151a3f151a3f7f7d99fdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb575376151739151739171a3f151939151a3f151939
+151a3f151a3f151939171939151a3f151939151a3f151939151a3f151939171a3f171939
+171939151a3f151a3f151a3f151939171a3f171a3f151939171939151939151a3f151939
+151a3f151939151a3f151a3f151a3f151a3f151939151a3f151a3f8f89a7fdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbcdc9d61c1f45151939
+151a3f171939151a3f171939151a3f171a3f151939171a3f151939171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151a3f151a3f151939151939151539514d6cfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb5a5576151a3f151939151a3f151939151a3f
+171a3f151939171a3f151a3f171a3f151a3f151939171a3f151a3f151a3f151939151a3f
+151a3f171939171a3f151939171a3f151a3f151939151a3f151a3f151a3f151939151a3f
+151a3f151a3f151939151939151a3f171939151a3f151939151539514d6cfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb4a4763151539151a3f
+151939151a3f151939151a3f151a3f151939151a3f151a3f151a3f151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+746f8d151739151739171a3f171a3f171a3f17173928284cf6f6f8fdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb827d99171a3f151739151a3f151939
+171a3f151a3f151939151939171a3f151a3f151939171a3f171939151a3f151a3f151939
+151a3f151939151a3f151939151a3f151a3f171939151a3f151939151a3f171939171a3f
+151939151a3f171a3f151939151a3f171939151a3f15193915173926264cf6f6f8fdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb928fa7151a3f151939171a3f
+151a3f171a3f151939171a3f151a3f171939151939171a3f151939171939151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88171739151a3f151a3f151939151a3f151939151a3faaa7b6fdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfba49db6202045161539151a3f
+151939151939151a3f151a3f151a3f171939151a3f151939151a3f151a3f151939151a3f
+151a3f151a3f171939151a3f151a3f151939151a3f151939171a3f171a3f151a3f151939
+171a3f171a3f151939171a3f151a3f151a3f171a3f151a3f151a3f151a3fa49db6fdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf6f6f82c2a4c171739171a3f151a3f
+151939151939151a3f151a3f151939151a3f151a3f151939151a3f151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151939151a3f151939151a3f151a3f1515395d5876fdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbb5b2c528284c151539
+151a3f171939151a3f151939151a3f151a3f151a3f151939171a3f171a3f171939151a3f
+151939151a3f151939171a3f171a3f151a3f171a3f151939151a3f151939151a3f151a3f
+151939151a3f151939151a3f151939151939171a3f151939151939151539625d7cfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb6f6a88151539151739151a3f171a3f
+151a3f171939151a3f171a3f151939171a3f151a3f171a3f151a3f171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+746f8d151739151739151a3f151a3f151a3f171a3f17173928284cf2f6f8fdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbd1cdd6303053
+161539151a3f171939151a3f151939171939151939151a3f151a3f151939151a3f171939
+171a3f151a3f171a3f151939151939151a3f151939151a3f151939151a3f151a3f151939
+151a3f151a3f151a3f171939151a3f151a3f151939151a3f171a3f17173934325bfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbd1cdd61c1f45151a3f151a3f151939151a3f
+151939151a3f151a3f151939151a3f151939151939151939151939151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151739171939151a3f151939151a3f151a3f1717398f89a7fdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbe1dee7
+303053151539151739151a3f151a3f171a3f171939151a3f151a3f151939151a3f151939
+151a3f151939151a3f151a3f171939151a3f151a3f151a3f171939171a3f151a3f151939
+171a3f151939151a3f171939151a3f151a3f171a3f151939151a3f151939171c3fcdc9d6
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb5d5876151539151939171a3f151939171a3f
+151939171a3f151a3f171a3f151a3f171a3f151a3f171a3f151939171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+746f8d171739151a3f151a3f171939151a3f151939151a3f1517392e2e53f6f6f8fdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+e1dee74a486c171739171939151a3f151939151a3f151a3f151939151a3f151a3f151a3f
+171939151a3f151a3f151939151a3f151a3f171939171939151a3f151a3f171939171a3f
+151939171a3f151a3f151a3f171939151939151939151a3f151a3f151739161539746f8d
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb8b8599171a3f171939151a3f151a3f151a3f151a3f
+151a3f151939151939151939151a3f151939151a3f151939151a3f151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+716f8d171739151939151a3f151a3f151a3f151939151a3f1519391517397f7d99fdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfb625d7c151939151739151a3f171939171a3f171939151a3f151939151a3f
+151a3f171939171a3f151939171a3f151a3f151a3f151939151a3f151a3f151939151a3f
+151939151a3f151939151a3f171a3f151a3f151939151a3f151a3f151a3f1515393e3c5b
+fdfdfbfdfdfbfdfdfbfdfdfbc9c6d61e2145151539171939151a3f171939151939171a3f
+151a3f171a3f151a3f171939151a3f171939151a3f171939151a3f171939151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151739151a3f151939171a3f171939151a3f151a3f151a3f171739202345e5e1e7
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfb77728d171c3f171739151a3f151939151a3f171939171a3f151a3f
+171939151a3f151939151a3f151a3f151939151939151a3f151a3f151939151a3f151a3f
+151a3f171939151a3f151a3f151939151a3f171a3f171939151939151a3f1519391e2145
+e5e1e7fdfdfbfdfdfbf6f6f8323053171739151a3f151a3f151939151a3f151a3f151939
+151a3f151939151a3f151a3f151a3f151a3f151a3f151a3f151939151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbb5b2c59993a7
+d1cdd6fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbe5e5e73f3e63928fa7fdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbb5b2c5b5b2c5b5b2c5b5b2c5b5b2c5fdfdfbfdfdfbfdfdfbfdfdfbf2f6f8
+3f3e637f7d99fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+6f6a88151539151a3f151939151a3f171939171a3f171939151a3f171a3f1517395a5576
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfb928fa7171c3f151739151a3f151a3f151939151a3f151a3f
+151a3f151a3f171939151a3f151a3f151a3f171939171a3f151a3f151939171939151a3f
+151a3f171a3f151939151a3f171939151a3f151a3f171a3f151939171a3f151a3f151a3f
+8b8599fdfdfbfdfdfb514d6c151539151a3f151939171a3f151939171a3f151a3f171939
+151a3f171939151939171a3f151939171939151a3f171a3f151a3f171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbb5b2c52c2a4c151a3f151739
+3b395bfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbd8d5de151739696481fdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbe1dee71e2145151a3f171a3f151a3f1e2145e1dee7fdfdfbfdfdfbfdfdfbe5e5e7
+171739575376fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+746f8d151739151939151a3f151a3f151a3f151939151a3f151a3f151a3f151739171c3f
+b5b2c5fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbaaa7b61e2145151739151939151a3f171939151a3f
+151939151939151a3f151a3f171939171939151a3f151a3f171939171a3f151a3f171a3f
+151939151939171a3f151a3f151a3f151939151939151a3f171a3f151a3f151739151539
+77728dfdfdfb6f6a88151939151a3f171939151a3f151a3f151a3f151a3f151939151a3f
+151a3f151a3f151a3f151939151a3f151a3f151a3f151939151939151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb28284c171a3f77728d9993a7
+a49db6fdfdfba7a4b65a5576928ca7fdfdfbe1dee79993a78f89a7a49db6fdfdfb827d99
+5d5876cdc9d6fdfdfbaaa7b6a7a4b6827d99696481e5e1e7e5e1e7171c3f746f8de1dee7
+827d99e1dee7f2f2f877728d625d7cbcb9c5e5e5e7928ca7e1dee7fdfdfba7a4b6a7a4b6
+fdfdfbfdfdfba7a4b6625d7c151939625d7cb1aabccdc9d6676181746f8df2f2f8f2f2f8
+151a3f524f6cfdfdfbb5b2c55d58767f7d99f6f6f8fdfdfba49db65a5576928ca7fdfdfb
+f6f6f8827d99696481e1dee7fdfdfb8b85995d5876aaa7b6fdfdfbbcb9c59993a7928fa7
+625d7cbcb9c5fdfdfbe5e5e7746f8d5d5876c9c6d6fdfdfb
+746f8d151539151939151a3f151939151a3f151939151a3f151a3f151a3f151a3f151739
+3f3e63fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb9993a71c1f45151539151a3f151939171a3f
+171a3f151939171a3f151a3f151a3f151939151a3f151a3f151939151a3f151939151a3f
+151a3f151939171a3f151939151a3f151a3f151939151939151a3f151a3f1515394a486c
+fdfdfb8b8599171a3f151939151a3f171939151a3f171939151939171a3f151939171a3f
+151939171a3f151a3f171939151a3f171939151a3f171a3f151939171a3f151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbaaa7b61517395a5576fdfdfbfdfdfb
+fdfdfb827d99171c3f28284c151a3f6f6a88aaa7b6151a3f151739676181524f6c1c1f45
+28284c2c2a4cf2f2f836355b1517391e2145151739676181f6f6f8151a3f676181303053
+202345c9c6d636355b171a3f151a3f1c1f45928ca71e2145696481f2f2f8171c3f4a4763
+fdfdfbfdfdfbfdfdfb928ca7151739928fa7fdfdfb303053202345171c3f3e3c5be6e6e6
+171c3f5d5876b5b2c51c1f4528284c151a3f5a55769993a7151a3f28284c676181fdfdfb
+3e3c5b1517391e2145a7a4b6454063151a3f171c3f1c1f45cdc9d6625d7c1515391e2145
+151a3f2e2e53f6f6f83b395b1e2145202345202345d1cdd6
+716f8d171739151739171939151a3f151a3f151a3f171939151a3f171939171939151a3f
+151739514d6cfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbc9c6d6323053151539151a3f151a3f
+151939151a3f151a3f151939151939151a3f151a3f151939151a3f151939151a3f171939
+151a3f151a3f151939151a3f171939171a3f151a3f151a3f151739151739524f6cfdfdfb
+9993a7171a3f151739151a3f151a3f151a3f151939151a3f151a3f151a3f151a3f151939
+151a3f151a3f151939151a3f151939151a3f151939151939151a3f151a3f151a3f171739
+2c2a4cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfb827d991615396f6a88fdfdfbfdfdfb
+fdfdfb323053171c3f3e3c5b171a3f323053a49db6151a3f8b8599b5b2c5171a3f202345
+3b395b1517399993a73b395b202045d8d5de3b395b454063f2f6f81c1f45171c3f1c1f45
+d1cdd66f6a88171739aaa7b6d1cdd6171a3f4a47633f3e6328284c676181151739aaa7b6
+fdfdfbfdfdfbfdfdfb8b8599151a3fa49db69993a71517393b395b202345171a3fcdc9d6
+171c3f5a55764a47631519393e3c5b2020452023456f6a88171739454063cdc9d6a49db6
+151539716f8dfdfdfb9993a7151739746f8df6f6f8202345625d7c696481151739b1aabc
+827d991e2145827d991717392c2a4c323053161539746f8d
+716f8d151739151a3f171a3f171939171939151a3f171939151a3f151a3f151939171a3f
+151a3f1717395a5576fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf2f6f8454063151739151539
+151739151739151739151739151a3f151939151a3f151a3f171a3f151a3f151a3f171939
+151a3f151a3f171a3f151a3f151939171a3f151939151a3f151539454063fdfdfbaaa7b6
+1e2145171739171a3f151939151939171a3f151939171a3f151939171939151a3f171939
+151a3f171a3f151939171a3f151a3f171a3f151a3f171939151a3f171939151a3f151739
+2c2c53f6f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbaaa7b6151739454063fdfdfbfdfdfb
+fdfdfb30305320234577728d7f7d99a49db69993a71c1f45f2f2f8a7a4b61717393e3c5b
+7f7d9977728dd1cdd6303053303053fdfdfb3e3c5b3e3c5be6e6e6171c3f171c3f171c3f
+c0b9c55d5876151739d1cdd6f2f6f8171c3f514d6c827d99151739171c3f36355bfdfdfb
+fdfdfbfdfdfbfdfdfb928ca7151939a49db6827d99151a3f6761817f7d99827d99e1dee7
+171c3f5753763b395b1e2145716f8d7f7d998b8599e5e1e76f6a88171c3f28284c827d99
+1517398f89a7fdfdfb8f89a7171739928ca7fdfdfb28284c5d5876676181151a3ffdfdfb
+827d9920204577728d151a3f4a486c7f7d9977728dbcb9c5
+6f6a88161539151739151739151739151739151739151739151739151739151539151739
+151739151539151539575376fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf6f6f8928ca7625d7c
+45406334325b202345171c3f151939171739151739171739151739171739151739151739
+1615391517391517391517391517391517391717391515393f3e63fdfdfb9993a7171c3f
+141234151739151539171739151739151739151739151739151739151739151739151739
+151739151739151739151739151739151739151739151739151739151739151739151539
+28284cf2f6f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb3230531412342e2e533b395b
+575376514d6c1517395d58765a5576928ca79c96a7171a3fe1dee7f6f6f8202345202345
+676181575376e6e6e63030532c2a4cfdfdfb3b395b3e3c5bf2f2f8171a3f5d587626264c
+28284c7f7d991717393230533b395b1517399993a7f2f2f81e2145141234746f8dfdfdfb
+fdfdfbfdfdfbfdfdfb8b85991515399993a7d1cdd6171a3f4540635d5876696481e1dee7
+1517395d58766f6a88151539514d6c5d5876746f8db5b2c569648126264c202045aaa7b6
+171a3f202345514d6c827d99171c3f28284c454063171c3fbcb9c5625d7c151739524f6c
+2023452e2e53c9c6d6171c3f2e2e53696481514d6ccdc9d6
+8f89a730305332305334325b34325b32305334325b32305334325b36355b323053323053
+36355b323053303053303053928fa7fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbf6f6f8cdc9d69993a7746f8d514d6c3b395b32305332305334325b323053
+32305332305332305334325b32305336355b3030533e3c5be5e5e7e1dee73f3e63303053
+34325b32305336355b36355b36355b36355b32305336355b36355b32305336355b323053
+32305336355b36355b32305332305332305336355b32305336355b36355b36355b303053
+4a486cfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbe1dee75753763030532c2a4c
+5d5876e1dee7514d6c28284c2c2a4c827d99bcb9c5454063e5e5e7fdfdfbaaa7b63b395b
+26264c3f3e63f6f6f85d58765a5576fdfdfb676181676181f2f2f83e3c5ba49db69993a7
+323053a7a4b677728d2c2c532e2e53827d99fdfdfbfdfdfb625d7c3b395be1dee7fdfdfb
+fdfdfbfdfdfbfdfdfbb1aabc3b395bb1aabcfdfdfb827d992c2c5328284c524f6cf2f6f8
+3f3e637f7d99fdfdfb5a55762c2c5328284c6f6a889993a728284c3b395ba49db6fdfdfb
+827d992e2e53303053bcb9c5928ca734325b28284c716f8dfdfdfb5d587615153928284c
+3f3e63b5b2c5fdfdfb928fa732305328284c3b395bcdc9d6
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbf2f2f8fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbf6f6f8f6f6f8fdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb5a5576151a3fe1dee7
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb5d5876171c3fe5e5e7
+fdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfbfdfdfb
+
+showpage
+
+% stop using temporary dictionary
+end
+
+% restore original state
+origstate restore
+
+%%Trailer
