merged
authorpaulson
Tue Oct 27 14:46:03 2009 +0000 (2009-10-27)
changeset 33270320a1d67b9ae
parent 33269 3b7e2dbbd684
parent 33220 11a1af478dac
child 33271 7be66dee1a5a
merged
NEWS
src/HOL/IsaMakefile
src/HOL/Library/Convex_Euclidean_Space.thy
src/HOL/Library/Determinants.thy
src/HOL/Library/Euclidean_Space.thy
src/HOL/Library/Fin_Fun.thy
src/HOL/Library/Finite_Cartesian_Product.thy
src/HOL/Library/Topology_Euclidean_Space.thy
src/HOL/Multivariate_Analysis/Convex_Euclidean_Space.thy
src/HOL/Multivariate_Analysis/Euclidean_Space.thy
src/HOL/Multivariate_Analysis/Topology_Euclidean_Space.thy
src/HOL/Tools/Function/auto_term.ML
src/HOL/Tools/Function/fundef.ML
src/HOL/Tools/Function/fundef_common.ML
src/HOL/Tools/Function/fundef_core.ML
src/HOL/Tools/Function/fundef_datatype.ML
src/HOL/Tools/Function/fundef_lib.ML
     1.1 --- a/Admin/isatest/isatest-makeall	Tue Oct 27 12:59:57 2009 +0000
     1.2 +++ b/Admin/isatest/isatest-makeall	Tue Oct 27 14:46:03 2009 +0000
     1.3 @@ -63,7 +63,7 @@
     1.4          ;;
     1.5    
     1.6      sunbroy2)
     1.7 -        MFLAGS="-k -j 6"
     1.8 +        MFLAGS="-k -j 2"
     1.9          NICE="nice"
    1.10          ;;
    1.11  
     2.1 --- a/Admin/isatest/isatest-makedist	Tue Oct 27 12:59:57 2009 +0000
     2.2 +++ b/Admin/isatest/isatest-makedist	Tue Oct 27 14:46:03 2009 +0000
     2.3 @@ -91,7 +91,7 @@
     2.4  
     2.5  ## spawn test runs
     2.6  
     2.7 -#$SSH sunbroy2 "$MAKEALL $HOME/settings/sun-poly"
     2.8 +$SSH sunbroy2 "$MAKEALL $HOME/settings/sun-poly"
     2.9  # give test some time to copy settings and start
    2.10  sleep 15
    2.11  $SSH macbroy22 "$MAKEALL $HOME/settings/at-poly"
    2.12 @@ -110,8 +110,8 @@
    2.13  sleep 15
    2.14  $SSH macbroy5 "$MAKEALL $HOME/settings/mac-poly"
    2.15  sleep 15
    2.16 -#$SSH macbroy6 "$MAKEALL $HOME/settings/at-mac-poly-5.1-para"
    2.17 -#sleep 15
    2.18 +$SSH macbroy6 "sleep 10800; $MAKEALL $HOME/settings/at-mac-poly-5.1-para"
    2.19 +sleep 15
    2.20  $SSH atbroy51 "$HOME/admin/isatest/isatest-annomaly"
    2.21  
    2.22  echo ------------------- spawned tests successfully --- `date` --- $HOSTNAME >> $DISTLOG 2>&1
     3.1 --- a/Admin/isatest/settings/at-mac-poly-5.1-para	Tue Oct 27 12:59:57 2009 +0000
     3.2 +++ b/Admin/isatest/settings/at-mac-poly-5.1-para	Tue Oct 27 14:46:03 2009 +0000
     3.3 @@ -23,6 +23,6 @@
     3.4  ISABELLE_OUTPUT="$ISABELLE_HOME_USER/heaps"
     3.5  ISABELLE_BROWSER_INFO="$ISABELLE_HOME_USER/browser_info"
     3.6  
     3.7 -ISABELLE_USEDIR_OPTIONS="-i false -d false -M 4"
     3.8 +ISABELLE_USEDIR_OPTIONS="-i false -d false -t true -M 4 -q 2"
     3.9  
    3.10  HOL_USEDIR_OPTIONS="-p 2 -q 0"
     4.1 --- a/Admin/isatest/settings/mac-poly-M4	Tue Oct 27 12:59:57 2009 +0000
     4.2 +++ b/Admin/isatest/settings/mac-poly-M4	Tue Oct 27 14:46:03 2009 +0000
     4.3 @@ -1,7 +1,7 @@
     4.4  # -*- shell-script -*- :mode=shellscript:
     4.5  
     4.6 -  POLYML_HOME="/home/polyml/polyml-svn"
     4.7 -  ML_SYSTEM="polyml-experimental"
     4.8 +  POLYML_HOME="/home/polyml/polyml-5.2.1"
     4.9 +  ML_SYSTEM="polyml-5.2.1"
    4.10    ML_PLATFORM="x86-darwin"
    4.11    ML_HOME="$POLYML_HOME/$ML_PLATFORM"
    4.12    ML_OPTIONS="--mutable 800 --immutable 2000"
    4.13 @@ -23,6 +23,6 @@
    4.14  ISABELLE_OUTPUT="$ISABELLE_HOME_USER/heaps"
    4.15  ISABELLE_BROWSER_INFO="$ISABELLE_HOME_USER/browser_info"
    4.16  
    4.17 -ISABELLE_USEDIR_OPTIONS="-i false -d false -M 4 -t true -q 2"
    4.18 +ISABELLE_USEDIR_OPTIONS="-i false -d false -t true -M 4 -q 2"
    4.19  
    4.20  HOL_USEDIR_OPTIONS="-p 2 -q 0"
     5.1 --- a/Admin/isatest/settings/mac-poly-M8	Tue Oct 27 12:59:57 2009 +0000
     5.2 +++ b/Admin/isatest/settings/mac-poly-M8	Tue Oct 27 14:46:03 2009 +0000
     5.3 @@ -1,7 +1,7 @@
     5.4  # -*- shell-script -*- :mode=shellscript:
     5.5  
     5.6 -  POLYML_HOME="/home/polyml/polyml-svn"
     5.7 -  ML_SYSTEM="polyml-experimental"
     5.8 +  POLYML_HOME="/home/polyml/polyml-5.2.1"
     5.9 +  ML_SYSTEM="polyml-5.2.1"
    5.10    ML_PLATFORM="x86-darwin"
    5.11    ML_HOME="$POLYML_HOME/$ML_PLATFORM"
    5.12    ML_OPTIONS="--mutable 800 --immutable 2000"
    5.13 @@ -23,6 +23,6 @@
    5.14  ISABELLE_OUTPUT="$ISABELLE_HOME_USER/heaps"
    5.15  ISABELLE_BROWSER_INFO="$ISABELLE_HOME_USER/browser_info"
    5.16  
    5.17 -ISABELLE_USEDIR_OPTIONS="-i false -d false -M 8 -t true -q 2"
    5.18 +ISABELLE_USEDIR_OPTIONS="-i false -d false -t true -M 8 -q 2"
    5.19  
    5.20  HOL_USEDIR_OPTIONS="-p 2 -q 0"
     6.1 --- a/Admin/isatest/settings/mac-poly64-M4	Tue Oct 27 12:59:57 2009 +0000
     6.2 +++ b/Admin/isatest/settings/mac-poly64-M4	Tue Oct 27 14:46:03 2009 +0000
     6.3 @@ -23,6 +23,6 @@
     6.4  ISABELLE_OUTPUT="$ISABELLE_HOME_USER/heaps"
     6.5  ISABELLE_BROWSER_INFO="$ISABELLE_HOME_USER/browser_info"
     6.6  
     6.7 -ISABELLE_USEDIR_OPTIONS="-i false -d false -M 4 -q 2 -t true"
     6.8 +ISABELLE_USEDIR_OPTIONS="-i false -d false -t true -M 4 -q 2"
     6.9  
    6.10  HOL_USEDIR_OPTIONS="-p 2 -q 2"
     7.1 --- a/Admin/isatest/settings/mac-poly64-M8	Tue Oct 27 12:59:57 2009 +0000
     7.2 +++ b/Admin/isatest/settings/mac-poly64-M8	Tue Oct 27 14:46:03 2009 +0000
     7.3 @@ -23,6 +23,6 @@
     7.4  ISABELLE_OUTPUT="$ISABELLE_HOME_USER/heaps"
     7.5  ISABELLE_BROWSER_INFO="$ISABELLE_HOME_USER/browser_info"
     7.6  
     7.7 -ISABELLE_USEDIR_OPTIONS="-i false -d false -M 8 -q 2 -t true"
     7.8 +ISABELLE_USEDIR_OPTIONS="-i false -d false -t true -M 8 -q 2"
     7.9  
    7.10  HOL_USEDIR_OPTIONS="-p 2 -q 2"
     8.1 --- a/Admin/isatest/settings/sun-poly	Tue Oct 27 12:59:57 2009 +0000
     8.2 +++ b/Admin/isatest/settings/sun-poly	Tue Oct 27 14:46:03 2009 +0000
     8.3 @@ -23,6 +23,6 @@
     8.4  ISABELLE_BROWSER_INFO="$ISABELLE_HOME_USER/browser_info"
     8.5  
     8.6  #ISABELLE_USEDIR_OPTIONS="-i true -d dvi -g true -v true"
     8.7 -ISABELLE_USEDIR_OPTIONS="-i true -d pdf -v true -t true -M 1"
     8.8 +ISABELLE_USEDIR_OPTIONS="-i true -d pdf -v true -t true -M 6 -q 2"
     8.9  
    8.10  HOL_USEDIR_OPTIONS="-p 0" 
     9.1 --- a/CONTRIBUTORS	Tue Oct 27 12:59:57 2009 +0000
     9.2 +++ b/CONTRIBUTORS	Tue Oct 27 14:46:03 2009 +0000
     9.3 @@ -7,44 +7,48 @@
     9.4  Contributions to this Isabelle version
     9.5  --------------------------------------
     9.6  
     9.7 +* October 2009: Jasmin Blanchette, TUM
     9.8 +  Nitpick: yet another counterexample generator for Isabelle/HOL
     9.9 +
    9.10  * October 2009: Sascha Boehme, TUM
    9.11 -  Extension of SMT method: proof-reconstruction for the SMT solver Z3
    9.12 +  Extension of SMT method: proof-reconstruction for the SMT solver Z3.
    9.13  
    9.14  * October 2009: Florian Haftmann, TUM
    9.15 -  Refinement of parts of the HOL datatype package
    9.16 +  Refinement of parts of the HOL datatype package.
    9.17  
    9.18  * October 2009: Florian Haftmann, TUM
    9.19 -  Generic term styles for term antiquotations
    9.20 +  Generic term styles for term antiquotations.
    9.21  
    9.22  * September 2009: Thomas Sewell, NICTA
    9.23 -  More efficient HOL/record implementation
    9.24 +  More efficient HOL/record implementation.
    9.25  
    9.26  * September 2009: Sascha Boehme, TUM
    9.27 -  SMT method using external SMT solvers
    9.28 +  SMT method using external SMT solvers.
    9.29  
    9.30  * September 2009: Florian Haftmann, TUM
    9.31 -  Refinement of sets and lattices
    9.32 +  Refinement of sets and lattices.
    9.33  
    9.34  * July 2009: Jeremy Avigad and Amine Chaieb
    9.35 -  New number theory
    9.36 +  New number theory.
    9.37  
    9.38  * July 2009: Philipp Meyer, TUM
    9.39 -  HOL/Library/Sum_of_Squares: functionality to call a remote csdp prover
    9.40 +  HOL/Library/Sum_Of_Squares: functionality to call a remote csdp
    9.41 +  prover.
    9.42  
    9.43  * July 2009: Florian Haftmann, TUM
    9.44 -  New quickcheck implementation using new code generator
    9.45 +  New quickcheck implementation using new code generator.
    9.46  
    9.47  * July 2009: Florian Haftmann, TUM
    9.48 -  HOL/Library/FSet: an explicit type of sets; finite sets ready to use for code generation
    9.49 -
    9.50 -* June 2009: Andreas Lochbihler, Uni Karlsruhe
    9.51 -  HOL/Library/Fin_Fun: almost everywhere constant functions
    9.52 +  HOL/Library/FSet: an explicit type of sets; finite sets ready to use
    9.53 +  for code generation.
    9.54  
    9.55  * June 2009: Florian Haftmann, TUM
    9.56 -  HOL/Library/Tree: searchtrees implementing mappings, ready to use for code generation
    9.57 +  HOL/Library/Tree: searchtrees implementing mappings, ready to use
    9.58 +  for code generation.
    9.59  
    9.60  * March 2009: Philipp Meyer, TUM
    9.61 -  minimalization algorithm for results from sledgehammer call
    9.62 +  Minimalization algorithm for results from sledgehammer call.
    9.63 +
    9.64  
    9.65  Contributions to Isabelle2009
    9.66  -----------------------------
    10.1 --- a/NEWS	Tue Oct 27 12:59:57 2009 +0000
    10.2 +++ b/NEWS	Tue Oct 27 14:46:03 2009 +0000
    10.3 @@ -50,6 +50,9 @@
    10.4  this method is proof-producing. Certificates are provided to
    10.5  avoid calling the external solvers solely for re-checking proofs.
    10.6  
    10.7 +* New counterexample generator tool "nitpick" based on the Kodkod
    10.8 +relational model finder.
    10.9 +
   10.10  * Reorganization of number theory:
   10.11    * former session NumberTheory now named Old_Number_Theory
   10.12    * new session Number_Theory by Jeremy Avigad; if possible, prefer this.
   10.13 @@ -167,7 +170,8 @@
   10.14  
   10.15  * New implementation of quickcheck uses generic code generator;
   10.16  default generators are provided for all suitable HOL types, records
   10.17 -and datatypes.
   10.18 +and datatypes.  Old quickcheck can be re-activated importing
   10.19 +theory Library/SML_Quickcheck.
   10.20  
   10.21  * Renamed theorems:
   10.22  Suc_eq_add_numeral_1 -> Suc_eq_plus1
    11.1 --- a/doc-src/Dirs	Tue Oct 27 12:59:57 2009 +0000
    11.2 +++ b/doc-src/Dirs	Tue Oct 27 14:46:03 2009 +0000
    11.3 @@ -1,1 +1,1 @@
    11.4 -Intro Ref System Logics HOL ZF Inductive TutorialI IsarOverview IsarRef IsarImplementation Locales LaTeXsugar Classes Codegen Functions Main
    11.5 +Intro Ref System Logics HOL ZF Inductive TutorialI IsarOverview IsarRef IsarImplementation Locales LaTeXsugar Classes Codegen Functions Nitpick Main
    12.1 --- a/doc-src/IsarImplementation/Thy/Logic.thy	Tue Oct 27 12:59:57 2009 +0000
    12.2 +++ b/doc-src/IsarImplementation/Thy/Logic.thy	Tue Oct 27 14:46:03 2009 +0000
    12.3 @@ -322,9 +322,9 @@
    12.4    @{index_ML fastype_of: "term -> typ"} \\
    12.5    @{index_ML lambda: "term -> term -> term"} \\
    12.6    @{index_ML betapply: "term * term -> term"} \\
    12.7 -  @{index_ML Sign.declare_const: "Properties.T -> (binding * typ) * mixfix ->
    12.8 +  @{index_ML Sign.declare_const: "(binding * typ) * mixfix ->
    12.9    theory -> term * theory"} \\
   12.10 -  @{index_ML Sign.add_abbrev: "string -> Properties.T -> binding * term ->
   12.11 +  @{index_ML Sign.add_abbrev: "string -> binding * term ->
   12.12    theory -> (term * term) * theory"} \\
   12.13    @{index_ML Sign.const_typargs: "theory -> string * typ -> typ list"} \\
   12.14    @{index_ML Sign.const_instance: "theory -> string * typ list -> typ"} \\
   12.15 @@ -370,11 +370,11 @@
   12.16    "t u"}, with topmost @{text "\<beta>"}-conversion if @{text "t"} is an
   12.17    abstraction.
   12.18  
   12.19 -  \item @{ML Sign.declare_const}~@{text "properties ((c, \<sigma>), mx)"}
   12.20 +  \item @{ML Sign.declare_const}~@{text "((c, \<sigma>), mx)"}
   12.21    declares a new constant @{text "c :: \<sigma>"} with optional mixfix
   12.22    syntax.
   12.23  
   12.24 -  \item @{ML Sign.add_abbrev}~@{text "print_mode properties (c, t)"}
   12.25 +  \item @{ML Sign.add_abbrev}~@{text "print_mode (c, t)"}
   12.26    introduces a new term abbreviation @{text "c \<equiv> t"}.
   12.27  
   12.28    \item @{ML Sign.const_typargs}~@{text "thy (c, \<tau>)"} and @{ML
    13.1 --- a/doc-src/IsarImplementation/Thy/ML.thy	Tue Oct 27 12:59:57 2009 +0000
    13.2 +++ b/doc-src/IsarImplementation/Thy/ML.thy	Tue Oct 27 14:46:03 2009 +0000
    13.3 @@ -317,7 +317,7 @@
    13.4    a theory by constant declararion and primitive definitions:
    13.5  
    13.6    \smallskip\begin{mldecls}
    13.7 -  @{ML "Sign.declare_const: Properties.T -> (binding * typ) * mixfix
    13.8 +  @{ML "Sign.declare_const: (binding * typ) * mixfix
    13.9    -> theory -> term * theory"} \\
   13.10    @{ML "Thm.add_def: bool -> bool -> binding * term -> theory -> thm * theory"}
   13.11    \end{mldecls}
   13.12 @@ -329,7 +329,7 @@
   13.13    \smallskip\begin{mldecls}
   13.14    @{ML "(fn (t, thy) => Thm.add_def false false
   13.15    (Binding.name \"bar_def\", Logic.mk_equals (t, @{term \"%x. x\"})) thy)
   13.16 -    (Sign.declare_const []
   13.17 +    (Sign.declare_const
   13.18        ((Binding.name \"bar\", @{typ \"foo => foo\"}), NoSyn) thy)"}
   13.19    \end{mldecls}
   13.20  
   13.21 @@ -344,7 +344,7 @@
   13.22  
   13.23    \smallskip\begin{mldecls}
   13.24  @{ML "thy
   13.25 -|> Sign.declare_const [] ((Binding.name \"bar\", @{typ \"foo => foo\"}), NoSyn)
   13.26 +|> Sign.declare_const ((Binding.name \"bar\", @{typ \"foo => foo\"}), NoSyn)
   13.27  |> (fn (t, thy) => thy
   13.28  |> Thm.add_def false false
   13.29       (Binding.name \"bar_def\", Logic.mk_equals (t, @{term \"%x. x\"})))"}
   13.30 @@ -368,7 +368,7 @@
   13.31  
   13.32    \smallskip\begin{mldecls}
   13.33  @{ML "thy
   13.34 -|> Sign.declare_const [] ((Binding.name \"bar\", @{typ \"foo => foo\"}), NoSyn)
   13.35 +|> Sign.declare_const ((Binding.name \"bar\", @{typ \"foo => foo\"}), NoSyn)
   13.36  |-> (fn t => Thm.add_def false false
   13.37        (Binding.name \"bar_def\", Logic.mk_equals (t, @{term \"%x. x\"})))
   13.38  "}
   13.39 @@ -378,7 +378,7 @@
   13.40  
   13.41    \smallskip\begin{mldecls}
   13.42  @{ML "thy
   13.43 -|> Sign.declare_const [] ((Binding.name \"bar\", @{typ \"foo => foo\"}), NoSyn)
   13.44 +|> Sign.declare_const ((Binding.name \"bar\", @{typ \"foo => foo\"}), NoSyn)
   13.45  |>> (fn t => Logic.mk_equals (t, @{term \"%x. x\"}))
   13.46  |-> (fn def => Thm.add_def false false (Binding.name \"bar_def\", def))
   13.47  "}
   13.48 @@ -389,7 +389,7 @@
   13.49  
   13.50    \smallskip\begin{mldecls}
   13.51  @{ML "thy
   13.52 -|> Sign.declare_const [] ((Binding.name \"bar\", @{typ \"foo => foo\"}), NoSyn)
   13.53 +|> Sign.declare_const ((Binding.name \"bar\", @{typ \"foo => foo\"}), NoSyn)
   13.54  ||> Sign.add_path \"foobar\"
   13.55  |-> (fn t => Thm.add_def false false
   13.56        (Binding.name \"bar_def\", Logic.mk_equals (t, @{term \"%x. x\"})))
   13.57 @@ -401,8 +401,8 @@
   13.58  
   13.59    \smallskip\begin{mldecls}
   13.60  @{ML "thy
   13.61 -|> Sign.declare_const [] ((Binding.name \"bar\", @{typ \"foo => foo\"}), NoSyn)
   13.62 -||>> Sign.declare_const [] ((Binding.name \"foobar\", @{typ \"foo => foo\"}), NoSyn)
   13.63 +|> Sign.declare_const ((Binding.name \"bar\", @{typ \"foo => foo\"}), NoSyn)
   13.64 +||>> Sign.declare_const ((Binding.name \"foobar\", @{typ \"foo => foo\"}), NoSyn)
   13.65  |-> (fn (t1, t2) => Thm.add_def false false
   13.66        (Binding.name \"bar_def\", Logic.mk_equals (t1, t2)))
   13.67  "}
   13.68 @@ -447,7 +447,7 @@
   13.69    val consts = [\"foo\", \"bar\"];
   13.70  in
   13.71    thy
   13.72 -  |> fold_map (fn const => Sign.declare_const []
   13.73 +  |> fold_map (fn const => Sign.declare_const
   13.74         ((Binding.name const, @{typ \"foo => foo\"}), NoSyn)) consts
   13.75    |>> map (fn t => Logic.mk_equals (t, @{term \"%x. x\"}))
   13.76    |-> (fn defs => fold_map (fn def =>
   13.77 @@ -486,11 +486,11 @@
   13.78    \smallskip\begin{mldecls}
   13.79  @{ML "thy
   13.80  |> tap (fn _ => writeln \"now adding constant\")
   13.81 -|> Sign.declare_const [] ((Binding.name \"bar\", @{typ \"foo => foo\"}), NoSyn)
   13.82 +|> Sign.declare_const ((Binding.name \"bar\", @{typ \"foo => foo\"}), NoSyn)
   13.83  ||>> `(fn thy => Sign.declared_const thy
   13.84           (Sign.full_name thy (Binding.name \"foobar\")))
   13.85  |-> (fn (t, b) => if b then I
   13.86 -       else Sign.declare_const []
   13.87 +       else Sign.declare_const
   13.88           ((Binding.name \"foobar\", @{typ \"foo => foo\"}), NoSyn) #> snd)
   13.89  "}
   13.90    \end{mldecls}
    14.1 --- a/doc-src/IsarImplementation/Thy/Prelim.thy	Tue Oct 27 12:59:57 2009 +0000
    14.2 +++ b/doc-src/IsarImplementation/Thy/Prelim.thy	Tue Oct 27 14:46:03 2009 +0000
    14.3 @@ -689,19 +689,19 @@
    14.4    @{index_ML Long_Name.explode: "string -> string list"} \\
    14.5    \end{mldecls}
    14.6    \begin{mldecls}
    14.7 -  @{index_ML_type NameSpace.naming} \\
    14.8 -  @{index_ML NameSpace.default_naming: NameSpace.naming} \\
    14.9 -  @{index_ML NameSpace.add_path: "string -> NameSpace.naming -> NameSpace.naming"} \\
   14.10 -  @{index_ML NameSpace.full_name: "NameSpace.naming -> binding -> string"} \\
   14.11 +  @{index_ML_type Name_Space.naming} \\
   14.12 +  @{index_ML Name_Space.default_naming: Name_Space.naming} \\
   14.13 +  @{index_ML Name_Space.add_path: "string -> Name_Space.naming -> Name_Space.naming"} \\
   14.14 +  @{index_ML Name_Space.full_name: "Name_Space.naming -> binding -> string"} \\
   14.15    \end{mldecls}
   14.16    \begin{mldecls}
   14.17 -  @{index_ML_type NameSpace.T} \\
   14.18 -  @{index_ML NameSpace.empty: NameSpace.T} \\
   14.19 -  @{index_ML NameSpace.merge: "NameSpace.T * NameSpace.T -> NameSpace.T"} \\
   14.20 -  @{index_ML NameSpace.declare: "NameSpace.naming -> binding -> NameSpace.T ->
   14.21 -  string * NameSpace.T"} \\
   14.22 -  @{index_ML NameSpace.intern: "NameSpace.T -> string -> string"} \\
   14.23 -  @{index_ML NameSpace.extern: "NameSpace.T -> string -> string"} \\
   14.24 +  @{index_ML_type Name_Space.T} \\
   14.25 +  @{index_ML Name_Space.empty: "string -> Name_Space.T"} \\
   14.26 +  @{index_ML Name_Space.merge: "Name_Space.T * Name_Space.T -> Name_Space.T"} \\
   14.27 +  @{index_ML Name_Space.declare: "bool -> Name_Space.naming -> binding -> Name_Space.T ->
   14.28 +  string * Name_Space.T"} \\
   14.29 +  @{index_ML Name_Space.intern: "Name_Space.T -> string -> string"} \\
   14.30 +  @{index_ML Name_Space.extern: "Name_Space.T -> string -> string"} \\
   14.31    \end{mldecls}
   14.32  
   14.33    \begin{description}
   14.34 @@ -719,41 +719,43 @@
   14.35    Long_Name.explode}~@{text "name"} convert between the packed string
   14.36    representation and the explicit list form of qualified names.
   14.37  
   14.38 -  \item @{ML_type NameSpace.naming} represents the abstract concept of
   14.39 +  \item @{ML_type Name_Space.naming} represents the abstract concept of
   14.40    a naming policy.
   14.41  
   14.42 -  \item @{ML NameSpace.default_naming} is the default naming policy.
   14.43 +  \item @{ML Name_Space.default_naming} is the default naming policy.
   14.44    In a theory context, this is usually augmented by a path prefix
   14.45    consisting of the theory name.
   14.46  
   14.47 -  \item @{ML NameSpace.add_path}~@{text "path naming"} augments the
   14.48 +  \item @{ML Name_Space.add_path}~@{text "path naming"} augments the
   14.49    naming policy by extending its path component.
   14.50  
   14.51 -  \item @{ML NameSpace.full_name}~@{text "naming binding"} turns a
   14.52 +  \item @{ML Name_Space.full_name}~@{text "naming binding"} turns a
   14.53    name binding (usually a basic name) into the fully qualified
   14.54    internal name, according to the given naming policy.
   14.55  
   14.56 -  \item @{ML_type NameSpace.T} represents name spaces.
   14.57 +  \item @{ML_type Name_Space.T} represents name spaces.
   14.58  
   14.59 -  \item @{ML NameSpace.empty} and @{ML NameSpace.merge}~@{text
   14.60 +  \item @{ML Name_Space.empty}~@{text "kind"} and @{ML Name_Space.merge}~@{text
   14.61    "(space\<^isub>1, space\<^isub>2)"} are the canonical operations for
   14.62    maintaining name spaces according to theory data management
   14.63 -  (\secref{sec:context-data}).
   14.64 +  (\secref{sec:context-data}); @{text "kind"} is a formal comment
   14.65 +  to characterize the purpose of a name space.
   14.66  
   14.67 -  \item @{ML NameSpace.declare}~@{text "naming bindings space"} enters a
   14.68 -  name binding as fully qualified internal name into the name space,
   14.69 -  with external accesses determined by the naming policy.
   14.70 +  \item @{ML Name_Space.declare}~@{text "strict naming bindings
   14.71 +  space"} enters a name binding as fully qualified internal name into
   14.72 +  the name space, with external accesses determined by the naming
   14.73 +  policy.
   14.74  
   14.75 -  \item @{ML NameSpace.intern}~@{text "space name"} internalizes a
   14.76 +  \item @{ML Name_Space.intern}~@{text "space name"} internalizes a
   14.77    (partially qualified) external name.
   14.78  
   14.79    This operation is mostly for parsing!  Note that fully qualified
   14.80    names stemming from declarations are produced via @{ML
   14.81 -  "NameSpace.full_name"} and @{ML "NameSpace.declare"}
   14.82 +  "Name_Space.full_name"} and @{ML "Name_Space.declare"}
   14.83    (or their derivatives for @{ML_type theory} and
   14.84    @{ML_type Proof.context}).
   14.85  
   14.86 -  \item @{ML NameSpace.extern}~@{text "space name"} externalizes a
   14.87 +  \item @{ML Name_Space.extern}~@{text "space name"} externalizes a
   14.88    (fully qualified) internal name.
   14.89  
   14.90    This operation is mostly for printing!  User code should not rely on
    15.1 --- a/doc-src/IsarImplementation/Thy/document/Logic.tex	Tue Oct 27 12:59:57 2009 +0000
    15.2 +++ b/doc-src/IsarImplementation/Thy/document/Logic.tex	Tue Oct 27 14:46:03 2009 +0000
    15.3 @@ -325,9 +325,9 @@
    15.4    \indexdef{}{ML}{fastype\_of}\verb|fastype_of: term -> typ| \\
    15.5    \indexdef{}{ML}{lambda}\verb|lambda: term -> term -> term| \\
    15.6    \indexdef{}{ML}{betapply}\verb|betapply: term * term -> term| \\
    15.7 -  \indexdef{}{ML}{Sign.declare\_const}\verb|Sign.declare_const: Properties.T -> (binding * typ) * mixfix ->|\isasep\isanewline%
    15.8 +  \indexdef{}{ML}{Sign.declare\_const}\verb|Sign.declare_const: (binding * typ) * mixfix ->|\isasep\isanewline%
    15.9  \verb|  theory -> term * theory| \\
   15.10 -  \indexdef{}{ML}{Sign.add\_abbrev}\verb|Sign.add_abbrev: string -> Properties.T -> binding * term ->|\isasep\isanewline%
   15.11 +  \indexdef{}{ML}{Sign.add\_abbrev}\verb|Sign.add_abbrev: string -> binding * term ->|\isasep\isanewline%
   15.12  \verb|  theory -> (term * term) * theory| \\
   15.13    \indexdef{}{ML}{Sign.const\_typargs}\verb|Sign.const_typargs: theory -> string * typ -> typ list| \\
   15.14    \indexdef{}{ML}{Sign.const\_instance}\verb|Sign.const_instance: theory -> string * typ list -> typ| \\
   15.15 @@ -365,11 +365,11 @@
   15.16    \item \verb|betapply|~\isa{{\isacharparenleft}t{\isacharcomma}\ u{\isacharparenright}} produces an application \isa{t\ u}, with topmost \isa{{\isasymbeta}}-conversion if \isa{t} is an
   15.17    abstraction.
   15.18  
   15.19 -  \item \verb|Sign.declare_const|~\isa{properties\ {\isacharparenleft}{\isacharparenleft}c{\isacharcomma}\ {\isasymsigma}{\isacharparenright}{\isacharcomma}\ mx{\isacharparenright}}
   15.20 +  \item \verb|Sign.declare_const|~\isa{{\isacharparenleft}{\isacharparenleft}c{\isacharcomma}\ {\isasymsigma}{\isacharparenright}{\isacharcomma}\ mx{\isacharparenright}}
   15.21    declares a new constant \isa{c\ {\isacharcolon}{\isacharcolon}\ {\isasymsigma}} with optional mixfix
   15.22    syntax.
   15.23  
   15.24 -  \item \verb|Sign.add_abbrev|~\isa{print{\isacharunderscore}mode\ properties\ {\isacharparenleft}c{\isacharcomma}\ t{\isacharparenright}}
   15.25 +  \item \verb|Sign.add_abbrev|~\isa{print{\isacharunderscore}mode\ {\isacharparenleft}c{\isacharcomma}\ t{\isacharparenright}}
   15.26    introduces a new term abbreviation \isa{c\ {\isasymequiv}\ t}.
   15.27  
   15.28    \item \verb|Sign.const_typargs|~\isa{thy\ {\isacharparenleft}c{\isacharcomma}\ {\isasymtau}{\isacharparenright}} and \verb|Sign.const_instance|~\isa{thy\ {\isacharparenleft}c{\isacharcomma}\ {\isacharbrackleft}{\isasymtau}\isactrlisub {\isadigit{1}}{\isacharcomma}\ {\isasymdots}{\isacharcomma}\ {\isasymtau}\isactrlisub n{\isacharbrackright}{\isacharparenright}}
    16.1 --- a/doc-src/IsarImplementation/Thy/document/ML.tex	Tue Oct 27 12:59:57 2009 +0000
    16.2 +++ b/doc-src/IsarImplementation/Thy/document/ML.tex	Tue Oct 27 14:46:03 2009 +0000
    16.3 @@ -242,14 +242,14 @@
    16.4    view being presented to the user.
    16.5  
    16.6    Occasionally, such global process flags are treated like implicit
    16.7 -  arguments to certain operations, by using the \verb|setmp| combinator
    16.8 +  arguments to certain operations, by using the \verb|setmp_CRITICAL| combinator
    16.9    for safe temporary assignment.  Its traditional purpose was to
   16.10    ensure proper recovery of the original value when exceptions are
   16.11    raised in the body, now the functionality is extended to enter the
   16.12    \emph{critical section} (with its usual potential of degrading
   16.13    parallelism).
   16.14  
   16.15 -  Note that recovery of plain value passing semantics via \verb|setmp|~\isa{ref\ value} assumes that this \isa{ref} is
   16.16 +  Note that recovery of plain value passing semantics via \verb|setmp_CRITICAL|~\isa{ref\ value} assumes that this \isa{ref} is
   16.17    exclusively manipulated within the critical section.  In particular,
   16.18    any persistent global assignment of \isa{ref\ {\isacharcolon}{\isacharequal}\ value} needs to
   16.19    be marked critical as well, to prevent intruding another threads
   16.20 @@ -277,7 +277,7 @@
   16.21  \begin{mldecls}
   16.22    \indexdef{}{ML}{NAMED\_CRITICAL}\verb|NAMED_CRITICAL: string -> (unit -> 'a) -> 'a| \\
   16.23    \indexdef{}{ML}{CRITICAL}\verb|CRITICAL: (unit -> 'a) -> 'a| \\
   16.24 -  \indexdef{}{ML}{setmp}\verb|setmp: 'a Unsynchronized.ref -> 'a -> ('b -> 'c) -> 'b -> 'c| \\
   16.25 +  \indexdef{}{ML}{setmp\_CRITICAL}\verb|setmp_CRITICAL: 'a Unsynchronized.ref -> 'a -> ('b -> 'c) -> 'b -> 'c| \\
   16.26    \end{mldecls}
   16.27  
   16.28    \begin{description}
   16.29 @@ -291,7 +291,7 @@
   16.30    \item \verb|CRITICAL| is the same as \verb|NAMED_CRITICAL| with empty
   16.31    name argument.
   16.32  
   16.33 -  \item \verb|setmp|~\isa{ref\ value\ f\ x} evaluates \isa{f\ x}
   16.34 +  \item \verb|setmp_CRITICAL|~\isa{ref\ value\ f\ x} evaluates \isa{f\ x}
   16.35    while staying within the critical section and having \isa{ref\ {\isacharcolon}{\isacharequal}\ value} assigned temporarily.  This recovers a value-passing
   16.36    semantics involving global references, regardless of exceptions or
   16.37    concurrency.
   16.38 @@ -366,7 +366,7 @@
   16.39    a theory by constant declararion and primitive definitions:
   16.40  
   16.41    \smallskip\begin{mldecls}
   16.42 -  \verb|Sign.declare_const: Properties.T -> (binding * typ) * mixfix|\isasep\isanewline%
   16.43 +  \verb|Sign.declare_const: (binding * typ) * mixfix|\isasep\isanewline%
   16.44  \verb|  -> theory -> term * theory| \\
   16.45    \verb|Thm.add_def: bool -> bool -> binding * term -> theory -> thm * theory|
   16.46    \end{mldecls}
   16.47 @@ -378,7 +378,7 @@
   16.48    \smallskip\begin{mldecls}
   16.49    \verb|(fn (t, thy) => Thm.add_def false false|\isasep\isanewline%
   16.50  \verb|  (Binding.name "bar_def", Logic.mk_equals (t, @{term "%x. x"})) thy)|\isasep\isanewline%
   16.51 -\verb|    (Sign.declare_const []|\isasep\isanewline%
   16.52 +\verb|    (Sign.declare_const|\isasep\isanewline%
   16.53  \verb|      ((Binding.name "bar", @{typ "foo => foo"}), NoSyn) thy)|
   16.54    \end{mldecls}
   16.55  
   16.56 @@ -394,7 +394,7 @@
   16.57  
   16.58    \smallskip\begin{mldecls}
   16.59  \verb|thy|\isasep\isanewline%
   16.60 -\verb||\verb,|,\verb|> Sign.declare_const [] ((Binding.name "bar", @{typ "foo => foo"}), NoSyn)|\isasep\isanewline%
   16.61 +\verb||\verb,|,\verb|> Sign.declare_const ((Binding.name "bar", @{typ "foo => foo"}), NoSyn)|\isasep\isanewline%
   16.62  \verb||\verb,|,\verb|> (fn (t, thy) => thy|\isasep\isanewline%
   16.63  \verb||\verb,|,\verb|> Thm.add_def false false|\isasep\isanewline%
   16.64  \verb|     (Binding.name "bar_def", Logic.mk_equals (t, @{term "%x. x"})))|
   16.65 @@ -433,7 +433,7 @@
   16.66  
   16.67    \smallskip\begin{mldecls}
   16.68  \verb|thy|\isasep\isanewline%
   16.69 -\verb||\verb,|,\verb|> Sign.declare_const [] ((Binding.name "bar", @{typ "foo => foo"}), NoSyn)|\isasep\isanewline%
   16.70 +\verb||\verb,|,\verb|> Sign.declare_const ((Binding.name "bar", @{typ "foo => foo"}), NoSyn)|\isasep\isanewline%
   16.71  \verb||\verb,|,\verb|-> (fn t => Thm.add_def false false|\isasep\isanewline%
   16.72  \verb|      (Binding.name "bar_def", Logic.mk_equals (t, @{term "%x. x"})))|\isasep\isanewline%
   16.73  
   16.74 @@ -443,7 +443,7 @@
   16.75  
   16.76    \smallskip\begin{mldecls}
   16.77  \verb|thy|\isasep\isanewline%
   16.78 -\verb||\verb,|,\verb|> Sign.declare_const [] ((Binding.name "bar", @{typ "foo => foo"}), NoSyn)|\isasep\isanewline%
   16.79 +\verb||\verb,|,\verb|> Sign.declare_const ((Binding.name "bar", @{typ "foo => foo"}), NoSyn)|\isasep\isanewline%
   16.80  \verb||\verb,|,\verb|>> (fn t => Logic.mk_equals (t, @{term "%x. x"}))|\isasep\isanewline%
   16.81  \verb||\verb,|,\verb|-> (fn def => Thm.add_def false false (Binding.name "bar_def", def))|\isasep\isanewline%
   16.82  
   16.83 @@ -454,7 +454,7 @@
   16.84  
   16.85    \smallskip\begin{mldecls}
   16.86  \verb|thy|\isasep\isanewline%
   16.87 -\verb||\verb,|,\verb|> Sign.declare_const [] ((Binding.name "bar", @{typ "foo => foo"}), NoSyn)|\isasep\isanewline%
   16.88 +\verb||\verb,|,\verb|> Sign.declare_const ((Binding.name "bar", @{typ "foo => foo"}), NoSyn)|\isasep\isanewline%
   16.89  \verb||\verb,|,\verb||\verb,|,\verb|> Sign.add_path "foobar"|\isasep\isanewline%
   16.90  \verb||\verb,|,\verb|-> (fn t => Thm.add_def false false|\isasep\isanewline%
   16.91  \verb|      (Binding.name "bar_def", Logic.mk_equals (t, @{term "%x. x"})))|\isasep\isanewline%
   16.92 @@ -466,8 +466,8 @@
   16.93  
   16.94    \smallskip\begin{mldecls}
   16.95  \verb|thy|\isasep\isanewline%
   16.96 -\verb||\verb,|,\verb|> Sign.declare_const [] ((Binding.name "bar", @{typ "foo => foo"}), NoSyn)|\isasep\isanewline%
   16.97 -\verb||\verb,|,\verb||\verb,|,\verb|>> Sign.declare_const [] ((Binding.name "foobar", @{typ "foo => foo"}), NoSyn)|\isasep\isanewline%
   16.98 +\verb||\verb,|,\verb|> Sign.declare_const ((Binding.name "bar", @{typ "foo => foo"}), NoSyn)|\isasep\isanewline%
   16.99 +\verb||\verb,|,\verb||\verb,|,\verb|>> Sign.declare_const ((Binding.name "foobar", @{typ "foo => foo"}), NoSyn)|\isasep\isanewline%
  16.100  \verb||\verb,|,\verb|-> (fn (t1, t2) => Thm.add_def false false|\isasep\isanewline%
  16.101  \verb|      (Binding.name "bar_def", Logic.mk_equals (t1, t2)))|\isasep\isanewline%
  16.102  
  16.103 @@ -527,7 +527,7 @@
  16.104  \verb|  val consts = ["foo", "bar"];|\isasep\isanewline%
  16.105  \verb|in|\isasep\isanewline%
  16.106  \verb|  thy|\isasep\isanewline%
  16.107 -\verb|  |\verb,|,\verb|> fold_map (fn const => Sign.declare_const []|\isasep\isanewline%
  16.108 +\verb|  |\verb,|,\verb|> fold_map (fn const => Sign.declare_const|\isasep\isanewline%
  16.109  \verb|       ((Binding.name const, @{typ "foo => foo"}), NoSyn)) consts|\isasep\isanewline%
  16.110  \verb|  |\verb,|,\verb|>> map (fn t => Logic.mk_equals (t, @{term "%x. x"}))|\isasep\isanewline%
  16.111  \verb|  |\verb,|,\verb|-> (fn defs => fold_map (fn def =>|\isasep\isanewline%
  16.112 @@ -596,11 +596,11 @@
  16.113    \smallskip\begin{mldecls}
  16.114  \verb|thy|\isasep\isanewline%
  16.115  \verb||\verb,|,\verb|> tap (fn _ => writeln "now adding constant")|\isasep\isanewline%
  16.116 -\verb||\verb,|,\verb|> Sign.declare_const [] ((Binding.name "bar", @{typ "foo => foo"}), NoSyn)|\isasep\isanewline%
  16.117 +\verb||\verb,|,\verb|> Sign.declare_const ((Binding.name "bar", @{typ "foo => foo"}), NoSyn)|\isasep\isanewline%
  16.118  \verb||\verb,|,\verb||\verb,|,\verb|>> `(fn thy => Sign.declared_const thy|\isasep\isanewline%
  16.119  \verb|         (Sign.full_name thy (Binding.name "foobar")))|\isasep\isanewline%
  16.120  \verb||\verb,|,\verb|-> (fn (t, b) => if b then I|\isasep\isanewline%
  16.121 -\verb|       else Sign.declare_const []|\isasep\isanewline%
  16.122 +\verb|       else Sign.declare_const|\isasep\isanewline%
  16.123  \verb|         ((Binding.name "foobar", @{typ "foo => foo"}), NoSyn) #> snd)|\isasep\isanewline%
  16.124  
  16.125    \end{mldecls}%
    17.1 --- a/doc-src/IsarImplementation/Thy/document/Prelim.tex	Tue Oct 27 12:59:57 2009 +0000
    17.2 +++ b/doc-src/IsarImplementation/Thy/document/Prelim.tex	Tue Oct 27 14:46:03 2009 +0000
    17.3 @@ -798,19 +798,19 @@
    17.4    \indexdef{}{ML}{Long\_Name.explode}\verb|Long_Name.explode: string -> string list| \\
    17.5    \end{mldecls}
    17.6    \begin{mldecls}
    17.7 -  \indexdef{}{ML type}{NameSpace.naming}\verb|type NameSpace.naming| \\
    17.8 -  \indexdef{}{ML}{NameSpace.default\_naming}\verb|NameSpace.default_naming: NameSpace.naming| \\
    17.9 -  \indexdef{}{ML}{NameSpace.add\_path}\verb|NameSpace.add_path: string -> NameSpace.naming -> NameSpace.naming| \\
   17.10 -  \indexdef{}{ML}{NameSpace.full\_name}\verb|NameSpace.full_name: NameSpace.naming -> binding -> string| \\
   17.11 +  \indexdef{}{ML type}{Name\_Space.naming}\verb|type Name_Space.naming| \\
   17.12 +  \indexdef{}{ML}{Name\_Space.default\_naming}\verb|Name_Space.default_naming: Name_Space.naming| \\
   17.13 +  \indexdef{}{ML}{Name\_Space.add\_path}\verb|Name_Space.add_path: string -> Name_Space.naming -> Name_Space.naming| \\
   17.14 +  \indexdef{}{ML}{Name\_Space.full\_name}\verb|Name_Space.full_name: Name_Space.naming -> binding -> string| \\
   17.15    \end{mldecls}
   17.16    \begin{mldecls}
   17.17 -  \indexdef{}{ML type}{NameSpace.T}\verb|type NameSpace.T| \\
   17.18 -  \indexdef{}{ML}{NameSpace.empty}\verb|NameSpace.empty: NameSpace.T| \\
   17.19 -  \indexdef{}{ML}{NameSpace.merge}\verb|NameSpace.merge: NameSpace.T * NameSpace.T -> NameSpace.T| \\
   17.20 -  \indexdef{}{ML}{NameSpace.declare}\verb|NameSpace.declare: NameSpace.naming -> binding -> NameSpace.T ->|\isasep\isanewline%
   17.21 -\verb|  string * NameSpace.T| \\
   17.22 -  \indexdef{}{ML}{NameSpace.intern}\verb|NameSpace.intern: NameSpace.T -> string -> string| \\
   17.23 -  \indexdef{}{ML}{NameSpace.extern}\verb|NameSpace.extern: NameSpace.T -> string -> string| \\
   17.24 +  \indexdef{}{ML type}{Name\_Space.T}\verb|type Name_Space.T| \\
   17.25 +  \indexdef{}{ML}{Name\_Space.empty}\verb|Name_Space.empty: string -> Name_Space.T| \\
   17.26 +  \indexdef{}{ML}{Name\_Space.merge}\verb|Name_Space.merge: Name_Space.T * Name_Space.T -> Name_Space.T| \\
   17.27 +  \indexdef{}{ML}{Name\_Space.declare}\verb|Name_Space.declare: bool -> Name_Space.naming -> binding -> Name_Space.T ->|\isasep\isanewline%
   17.28 +\verb|  string * Name_Space.T| \\
   17.29 +  \indexdef{}{ML}{Name\_Space.intern}\verb|Name_Space.intern: Name_Space.T -> string -> string| \\
   17.30 +  \indexdef{}{ML}{Name\_Space.extern}\verb|Name_Space.extern: Name_Space.T -> string -> string| \\
   17.31    \end{mldecls}
   17.32  
   17.33    \begin{description}
   17.34 @@ -827,39 +827,40 @@
   17.35    \item \verb|Long_Name.implode|~\isa{names} and \verb|Long_Name.explode|~\isa{name} convert between the packed string
   17.36    representation and the explicit list form of qualified names.
   17.37  
   17.38 -  \item \verb|NameSpace.naming| represents the abstract concept of
   17.39 +  \item \verb|Name_Space.naming| represents the abstract concept of
   17.40    a naming policy.
   17.41  
   17.42 -  \item \verb|NameSpace.default_naming| is the default naming policy.
   17.43 +  \item \verb|Name_Space.default_naming| is the default naming policy.
   17.44    In a theory context, this is usually augmented by a path prefix
   17.45    consisting of the theory name.
   17.46  
   17.47 -  \item \verb|NameSpace.add_path|~\isa{path\ naming} augments the
   17.48 +  \item \verb|Name_Space.add_path|~\isa{path\ naming} augments the
   17.49    naming policy by extending its path component.
   17.50  
   17.51 -  \item \verb|NameSpace.full_name|~\isa{naming\ binding} turns a
   17.52 +  \item \verb|Name_Space.full_name|~\isa{naming\ binding} turns a
   17.53    name binding (usually a basic name) into the fully qualified
   17.54    internal name, according to the given naming policy.
   17.55  
   17.56 -  \item \verb|NameSpace.T| represents name spaces.
   17.57 -
   17.58 -  \item \verb|NameSpace.empty| and \verb|NameSpace.merge|~\isa{{\isacharparenleft}space\isactrlisub {\isadigit{1}}{\isacharcomma}\ space\isactrlisub {\isadigit{2}}{\isacharparenright}} are the canonical operations for
   17.59 -  maintaining name spaces according to theory data management
   17.60 -  (\secref{sec:context-data}).
   17.61 +  \item \verb|Name_Space.T| represents name spaces.
   17.62  
   17.63 -  \item \verb|NameSpace.declare|~\isa{naming\ bindings\ space} enters a
   17.64 -  name binding as fully qualified internal name into the name space,
   17.65 -  with external accesses determined by the naming policy.
   17.66 +  \item \verb|Name_Space.empty|~\isa{kind} and \verb|Name_Space.merge|~\isa{{\isacharparenleft}space\isactrlisub {\isadigit{1}}{\isacharcomma}\ space\isactrlisub {\isadigit{2}}{\isacharparenright}} are the canonical operations for
   17.67 +  maintaining name spaces according to theory data management
   17.68 +  (\secref{sec:context-data}); \isa{kind} is a formal comment
   17.69 +  to characterize the purpose of a name space.
   17.70  
   17.71 -  \item \verb|NameSpace.intern|~\isa{space\ name} internalizes a
   17.72 +  \item \verb|Name_Space.declare|~\isa{strict\ naming\ bindings\ space} enters a name binding as fully qualified internal name into
   17.73 +  the name space, with external accesses determined by the naming
   17.74 +  policy.
   17.75 +
   17.76 +  \item \verb|Name_Space.intern|~\isa{space\ name} internalizes a
   17.77    (partially qualified) external name.
   17.78  
   17.79    This operation is mostly for parsing!  Note that fully qualified
   17.80 -  names stemming from declarations are produced via \verb|NameSpace.full_name| and \verb|NameSpace.declare|
   17.81 +  names stemming from declarations are produced via \verb|Name_Space.full_name| and \verb|Name_Space.declare|
   17.82    (or their derivatives for \verb|theory| and
   17.83    \verb|Proof.context|).
   17.84  
   17.85 -  \item \verb|NameSpace.extern|~\isa{space\ name} externalizes a
   17.86 +  \item \verb|Name_Space.extern|~\isa{space\ name} externalizes a
   17.87    (fully qualified) internal name.
   17.88  
   17.89    This operation is mostly for printing!  User code should not rely on
    18.1 --- a/doc-src/Makefile.in	Tue Oct 27 12:59:57 2009 +0000
    18.2 +++ b/doc-src/Makefile.in	Tue Oct 27 14:46:03 2009 +0000
    18.3 @@ -45,6 +45,9 @@
    18.4  isabelle_zf.eps:
    18.5  	test -r isabelle_zf.eps || ln -s ../gfx/isabelle_zf.eps .
    18.6  
    18.7 +isabelle_nitpick.eps:
    18.8 +	test -r isabelle_nitpick.eps || ln -s ../gfx/isabelle_nitpick.eps .
    18.9 +
   18.10  
   18.11  isabelle.pdf:
   18.12  	test -r isabelle.pdf || ln -s ../gfx/isabelle.pdf .
   18.13 @@ -58,6 +61,9 @@
   18.14  isabelle_zf.pdf:
   18.15  	test -r isabelle_zf.pdf || ln -s ../gfx/isabelle_zf.pdf .
   18.16  
   18.17 +isabelle_nitpick.pdf:
   18.18 +	test -r isabelle_nitpick.pdf || ln -s ../gfx/isabelle_nitpick.pdf .
   18.19 +
   18.20  typedef.ps:
   18.21  	test -r typedef.ps || ln -s ../gfx/typedef.ps .
   18.22  
    19.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.2 +++ b/doc-src/Nitpick/Makefile	Tue Oct 27 14:46:03 2009 +0000
    19.3 @@ -0,0 +1,36 @@
    19.4 +#
    19.5 +# $Id$
    19.6 +#
    19.7 +
    19.8 +## targets
    19.9 +
   19.10 +default: dvi
   19.11 +
   19.12 +
   19.13 +## dependencies
   19.14 +
   19.15 +include ../Makefile.in
   19.16 +
   19.17 +NAME = nitpick
   19.18 +FILES = nitpick.tex ../iman.sty ../manual.bib
   19.19 +
   19.20 +dvi: $(NAME).dvi
   19.21 +
   19.22 +$(NAME).dvi: $(FILES) isabelle_nitpick.eps
   19.23 +	$(LATEX) $(NAME)
   19.24 +	$(BIBTEX) $(NAME)
   19.25 +	$(LATEX) $(NAME)
   19.26 +	$(LATEX) $(NAME)
   19.27 +	$(SEDINDEX) $(NAME)
   19.28 +	$(LATEX) $(NAME)
   19.29 +
   19.30 +pdf: $(NAME).pdf
   19.31 +
   19.32 +$(NAME).pdf: $(FILES) isabelle_nitpick.pdf
   19.33 +	$(PDFLATEX) $(NAME)
   19.34 +	$(BIBTEX) $(NAME)
   19.35 +	$(PDFLATEX) $(NAME)
   19.36 +	$(PDFLATEX) $(NAME)
   19.37 +	$(SEDINDEX) $(NAME)
   19.38 +	$(FIXBOOKMARKS) $(NAME).out
   19.39 +	$(PDFLATEX) $(NAME)
    20.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.2 +++ b/doc-src/Nitpick/nitpick.tex	Tue Oct 27 14:46:03 2009 +0000
    20.3 @@ -0,0 +1,2486 @@
    20.4 +\documentclass[a4paper,12pt]{article}
    20.5 +\usepackage[T1]{fontenc}
    20.6 +\usepackage{amsmath}
    20.7 +\usepackage{amssymb}
    20.8 +\usepackage[french,english]{babel}
    20.9 +\usepackage{color}
   20.10 +\usepackage{graphicx}
   20.11 +%\usepackage{mathpazo}
   20.12 +\usepackage{multicol}
   20.13 +\usepackage{stmaryrd}
   20.14 +%\usepackage[scaled=.85]{beramono}
   20.15 +\usepackage{../iman,../pdfsetup}
   20.16 +
   20.17 +%\oddsidemargin=4.6mm
   20.18 +%\evensidemargin=4.6mm
   20.19 +%\textwidth=150mm
   20.20 +%\topmargin=4.6mm
   20.21 +%\headheight=0mm
   20.22 +%\headsep=0mm
   20.23 +%\textheight=234mm
   20.24 +
   20.25 +\def\Colon{\mathord{:\mkern-1.5mu:}}
   20.26 +%\def\lbrakk{\mathopen{\lbrack\mkern-3.25mu\lbrack}}
   20.27 +%\def\rbrakk{\mathclose{\rbrack\mkern-3.255mu\rbrack}}
   20.28 +\def\lparr{\mathopen{(\mkern-4mu\mid}}
   20.29 +\def\rparr{\mathclose{\mid\mkern-4mu)}}
   20.30 +
   20.31 +\def\undef{\textit{undefined}}
   20.32 +\def\unk{{?}}
   20.33 +%\def\unr{\textit{others}}
   20.34 +\def\unr{\ldots}
   20.35 +\def\Abs#1{\hbox{\rm{\flqq}}{\,#1\,}\hbox{\rm{\frqq}}}
   20.36 +\def\Q{{\smash{\lower.2ex\hbox{$\scriptstyle?$}}}}
   20.37 +
   20.38 +\hyphenation{Mini-Sat size-change First-Steps grand-parent nit-pick
   20.39 +counter-example counter-examples data-type data-types co-data-type 
   20.40 +co-data-types in-duc-tive co-in-duc-tive}
   20.41 +
   20.42 +\urlstyle{tt}
   20.43 +
   20.44 +\begin{document}
   20.45 +
   20.46 +\title{\includegraphics[scale=0.5]{isabelle_nitpick} \\[4ex]
   20.47 +Picking Nits \\[\smallskipamount]
   20.48 +\Large A User's Guide to Nitpick for Isabelle/HOL 2010}
   20.49 +\author{\hbox{} \\
   20.50 +Jasmin Christian Blanchette \\
   20.51 +{\normalsize Fakult\"at f\"ur Informatik, Technische Universit\"at M\"unchen} \\
   20.52 +\hbox{}}
   20.53 +
   20.54 +\maketitle
   20.55 +
   20.56 +\tableofcontents
   20.57 +
   20.58 +\setlength{\parskip}{.7em plus .2em minus .1em}
   20.59 +\setlength{\parindent}{0pt}
   20.60 +\setlength{\abovedisplayskip}{\parskip}
   20.61 +\setlength{\abovedisplayshortskip}{.9\parskip}
   20.62 +\setlength{\belowdisplayskip}{\parskip}
   20.63 +\setlength{\belowdisplayshortskip}{.9\parskip}
   20.64 +
   20.65 +% General-purpose enum environment with correct spacing
   20.66 +\newenvironment{enum}%
   20.67 +    {\begin{list}{}{%
   20.68 +        \setlength{\topsep}{.1\parskip}%
   20.69 +        \setlength{\partopsep}{.1\parskip}%
   20.70 +        \setlength{\itemsep}{\parskip}%
   20.71 +        \advance\itemsep by-\parsep}}
   20.72 +    {\end{list}}
   20.73 +
   20.74 +\def\pre{\begingroup\vskip0pt plus1ex\advance\leftskip by\leftmargin
   20.75 +\advance\rightskip by\leftmargin}
   20.76 +\def\post{\vskip0pt plus1ex\endgroup}
   20.77 +
   20.78 +\def\prew{\pre\advance\rightskip by-\leftmargin}
   20.79 +\def\postw{\post}
   20.80 +
   20.81 +\section{Introduction}
   20.82 +\label{introduction}
   20.83 +
   20.84 +Nitpick \cite{blanchette-nipkow-2009} is a counterexample generator for
   20.85 +Isabelle/HOL \cite{isa-tutorial} that is designed to handle formulas
   20.86 +combining (co)in\-duc\-tive datatypes, (co)in\-duc\-tively defined predicates, and
   20.87 +quantifiers. It builds on Kodkod \cite{torlak-jackson-2007}, a highly optimized
   20.88 +first-order relational model finder developed by the Software Design Group at
   20.89 +MIT. It is conceptually similar to Refute \cite{weber-2008}, from which it
   20.90 +borrows many ideas and code fragments, but it benefits from Kodkod's
   20.91 +optimizations and a new encoding scheme. The name Nitpick is shamelessly
   20.92 +appropriated from a now retired Alloy precursor.
   20.93 +
   20.94 +Nitpick is easy to use---you simply enter \textbf{nitpick} after a putative
   20.95 +theorem and wait a few seconds. Nonetheless, there are situations where knowing
   20.96 +how it works under the hood and how it reacts to various options helps
   20.97 +increase the test coverage. This manual also explains how to install the tool on
   20.98 +your workstation. Should the motivation fail you, think of the many hours of
   20.99 +hard work Nitpick will save you. Proving non-theorems is \textsl{hard work}.
  20.100 +
  20.101 +Another common use of Nitpick is to find out whether the axioms of a locale are
  20.102 +satisfiable, while the locale is being developed. To check this, it suffices to
  20.103 +write
  20.104 +
  20.105 +\prew
  20.106 +\textbf{lemma}~``$\textit{False}$'' \\
  20.107 +\textbf{nitpick}~[\textit{show\_all}]
  20.108 +\postw
  20.109 +
  20.110 +after the locale's \textbf{begin} keyword. To falsify \textit{False}, Nitpick
  20.111 +must find a model for the axioms. If it finds no model, we have an indication
  20.112 +that the axioms might be unsatisfiable.
  20.113 +
  20.114 +Nitpick requires the Kodkodi package for Isabelle as well as a Java 1.5 virtual
  20.115 +machine called \texttt{java}. The examples presented in this manual can be found
  20.116 +in Isabelle's \texttt{src/HOL/Nitpick\_Examples/Manual\_Nits.thy} theory.
  20.117 +
  20.118 +\newbox\boxA
  20.119 +\setbox\boxA=\hbox{\texttt{nospam}}
  20.120 +
  20.121 +The known bugs and limitations at the time of writing are listed in
  20.122 +\S\ref{known-bugs-and-limitations}. Comments and bug reports concerning Nitpick
  20.123 +or this manual should be directed to
  20.124 +\texttt{blan{\color{white}nospam}\kern-\wd\boxA{}chette@\allowbreak
  20.125 +in.\allowbreak tum.\allowbreak de}.
  20.126 +
  20.127 +\vskip2.5\smallskipamount
  20.128 +
  20.129 +\textbf{Acknowledgment.} The author would like to thank Mark Summerfield for
  20.130 +suggesting several textual improvements.
  20.131 +% and Perry James for reporting a typo.
  20.132 +
  20.133 +\section{First Steps}
  20.134 +\label{first-steps}
  20.135 +
  20.136 +This section introduces Nitpick by presenting small examples. If possible, you
  20.137 +should try out the examples on your workstation. Your theory file should start
  20.138 +the standard way:
  20.139 +
  20.140 +\prew
  20.141 +\textbf{theory}~\textit{Scratch} \\
  20.142 +\textbf{imports}~\textit{Main} \\
  20.143 +\textbf{begin}
  20.144 +\postw
  20.145 +
  20.146 +The results presented here were obtained using the JNI version of MiniSat and
  20.147 +with multithreading disabled to reduce nondeterminism. This was done by adding
  20.148 +the line
  20.149 +
  20.150 +\prew
  20.151 +\textbf{nitpick\_params} [\textit{sat\_solver}~= \textit{MiniSatJNI}, \,\textit{max\_threads}~= 1]
  20.152 +\postw
  20.153 +
  20.154 +after the \textbf{begin} keyword. The JNI version of MiniSat is bundled with
  20.155 +Kodkodi and is precompiled for the major platforms. Other SAT solvers can also
  20.156 +be installed, as explained in \S\ref{optimizations}. If you have already
  20.157 +configured SAT solvers in Isabelle (e.g., for Refute), these will also be
  20.158 +available to Nitpick.
  20.159 +
  20.160 +Throughout this manual, we will explicitly invoke the \textbf{nitpick} command.
  20.161 +Nitpick also provides an automatic mode that can be enabled by specifying
  20.162 +
  20.163 +\prew
  20.164 +\textbf{nitpick\_params} [\textit{auto}]
  20.165 +\postw
  20.166 +
  20.167 +at the beginning of the theory file. In this mode, Nitpick is run for up to 5
  20.168 +seconds (by default) on every newly entered theorem, much like Auto Quickcheck.
  20.169 +
  20.170 +\subsection{Propositional Logic}
  20.171 +\label{propositional-logic}
  20.172 +
  20.173 +Let's start with a trivial example from propositional logic:
  20.174 +
  20.175 +\prew
  20.176 +\textbf{lemma}~``$P \longleftrightarrow Q$'' \\
  20.177 +\textbf{nitpick}
  20.178 +\postw
  20.179 +
  20.180 +You should get the following output:
  20.181 +
  20.182 +\prew
  20.183 +\slshape
  20.184 +Nitpick found a counterexample: \\[2\smallskipamount]
  20.185 +\hbox{}\qquad Free variables: \nopagebreak \\
  20.186 +\hbox{}\qquad\qquad $P = \textit{True}$ \\
  20.187 +\hbox{}\qquad\qquad $Q = \textit{False}$
  20.188 +\postw
  20.189 +
  20.190 +Nitpick can also be invoked on individual subgoals, as in the example below:
  20.191 +
  20.192 +\prew
  20.193 +\textbf{apply}~\textit{auto} \\[2\smallskipamount]
  20.194 +{\slshape goal (2 subgoals): \\
  20.195 +\ 1. $P\,\Longrightarrow\, Q$ \\
  20.196 +\ 2. $Q\,\Longrightarrow\, P$} \\[2\smallskipamount]
  20.197 +\textbf{nitpick}~1 \\[2\smallskipamount]
  20.198 +{\slshape Nitpick found a counterexample: \\[2\smallskipamount]
  20.199 +\hbox{}\qquad Free variables: \nopagebreak \\
  20.200 +\hbox{}\qquad\qquad $P = \textit{True}$ \\
  20.201 +\hbox{}\qquad\qquad $Q = \textit{False}$} \\[2\smallskipamount]
  20.202 +\textbf{nitpick}~2 \\[2\smallskipamount]
  20.203 +{\slshape Nitpick found a counterexample: \\[2\smallskipamount]
  20.204 +\hbox{}\qquad Free variables: \nopagebreak \\
  20.205 +\hbox{}\qquad\qquad $P = \textit{False}$ \\
  20.206 +\hbox{}\qquad\qquad $Q = \textit{True}$} \\[2\smallskipamount]
  20.207 +\textbf{oops}
  20.208 +\postw
  20.209 +
  20.210 +\subsection{Type Variables}
  20.211 +\label{type-variables}
  20.212 +
  20.213 +If you are left unimpressed by the previous example, don't worry. The next
  20.214 +one is more mind- and computer-boggling:
  20.215 +
  20.216 +\prew
  20.217 +\textbf{lemma} ``$P~x\,\Longrightarrow\, P~(\textrm{THE}~y.\;P~y)$''
  20.218 +\postw
  20.219 +\pagebreak[2] %% TYPESETTING
  20.220 +
  20.221 +The putative lemma involves the definite description operator, {THE}, presented
  20.222 +in section 5.10.1 of the Isabelle tutorial \cite{isa-tutorial}. The
  20.223 +operator is defined by the axiom $(\textrm{THE}~x.\; x = a) = a$. The putative
  20.224 +lemma is merely asserting the indefinite description operator axiom with {THE}
  20.225 +substituted for {SOME}.
  20.226 +
  20.227 +The free variable $x$ and the bound variable $y$ have type $'a$. For formulas
  20.228 +containing type variables, Nitpick enumerates the possible domains for each type
  20.229 +variable, up to a given cardinality (8 by default), looking for a finite
  20.230 +countermodel:
  20.231 +
  20.232 +\prew
  20.233 +\textbf{nitpick} [\textit{verbose}] \\[2\smallskipamount]
  20.234 +\slshape
  20.235 +Trying 8 scopes: \nopagebreak \\
  20.236 +\hbox{}\qquad \textit{card}~$'a$~= 1; \\
  20.237 +\hbox{}\qquad \textit{card}~$'a$~= 2; \\
  20.238 +\hbox{}\qquad $\qquad\vdots$ \\[.5\smallskipamount]
  20.239 +\hbox{}\qquad \textit{card}~$'a$~= 8. \\[2\smallskipamount]
  20.240 +Nitpick found a counterexample for \textit{card} $'a$~= 3: \\[2\smallskipamount]
  20.241 +\hbox{}\qquad Free variables: \nopagebreak \\
  20.242 +\hbox{}\qquad\qquad $P = \{a_2,\, a_3\}$ \\
  20.243 +\hbox{}\qquad\qquad $x = a_3$ \\[2\smallskipamount]
  20.244 +Total time: 580 ms.
  20.245 +\postw
  20.246 +
  20.247 +Nitpick found a counterexample in which $'a$ has cardinality 3. (For
  20.248 +cardinalities 1 and 2, the formula holds.) In the counterexample, the three
  20.249 +values of type $'a$ are written $a_1$, $a_2$, and $a_3$.
  20.250 +
  20.251 +The message ``Trying $n$ scopes: {\ldots}''\ is shown only if the option
  20.252 +\textit{verbose} is enabled. You can specify \textit{verbose} each time you
  20.253 +invoke \textbf{nitpick}, or you can set it globally using the command
  20.254 +
  20.255 +\prew
  20.256 +\textbf{nitpick\_params} [\textit{verbose}]
  20.257 +\postw
  20.258 +
  20.259 +This command also displays the current default values for all of the options
  20.260 +supported by Nitpick. The options are listed in \S\ref{option-reference}.
  20.261 +
  20.262 +\subsection{Constants}
  20.263 +\label{constants}
  20.264 +
  20.265 +By just looking at Nitpick's output, it might not be clear why the
  20.266 +counterexample in \S\ref{type-variables} is genuine. Let's invoke Nitpick again,
  20.267 +this time telling it to show the values of the constants that occur in the
  20.268 +formula:
  20.269 +
  20.270 +\prew
  20.271 +\textbf{lemma}~``$P~x\,\Longrightarrow\, P~(\textrm{THE}~y.\;P~y)$'' \\
  20.272 +\textbf{nitpick}~[\textit{show\_consts}] \\[2\smallskipamount]
  20.273 +\slshape
  20.274 +Nitpick found a counterexample for \textit{card} $'a$~= 3: \\[2\smallskipamount]
  20.275 +\hbox{}\qquad Free variables: \nopagebreak \\
  20.276 +\hbox{}\qquad\qquad $P = \{a_2,\, a_3\}$ \\
  20.277 +\hbox{}\qquad\qquad $x = a_3$ \\
  20.278 +\hbox{}\qquad Constant: \nopagebreak \\
  20.279 +\hbox{}\qquad\qquad $\textit{The}~\textsl{fallback} = a_1$
  20.280 +\postw
  20.281 +
  20.282 +We can see more clearly now. Since the predicate $P$ isn't true for a unique
  20.283 +value, $\textrm{THE}~y.\;P~y$ can denote any value of type $'a$, even
  20.284 +$a_1$. Since $P~a_1$ is false, the entire formula is falsified.
  20.285 +
  20.286 +As an optimization, Nitpick's preprocessor introduced the special constant
  20.287 +``\textit{The} fallback'' corresponding to $\textrm{THE}~y.\;P~y$ (i.e.,
  20.288 +$\mathit{The}~(\lambda y.\;P~y)$) when there doesn't exist a unique $y$
  20.289 +satisfying $P~y$. We disable this optimization by passing the
  20.290 +\textit{full\_descrs} option:
  20.291 +
  20.292 +\prew
  20.293 +\textbf{nitpick}~[\textit{full\_descrs},\, \textit{show\_consts}] \\[2\smallskipamount]
  20.294 +\slshape
  20.295 +Nitpick found a counterexample for \textit{card} $'a$~= 3: \\[2\smallskipamount]
  20.296 +\hbox{}\qquad Free variables: \nopagebreak \\
  20.297 +\hbox{}\qquad\qquad $P = \{a_2,\, a_3\}$ \\
  20.298 +\hbox{}\qquad\qquad $x = a_3$ \\
  20.299 +\hbox{}\qquad Constant: \nopagebreak \\
  20.300 +\hbox{}\qquad\qquad $\hbox{\slshape THE}~y.\;P~y = a_1$
  20.301 +\postw
  20.302 +
  20.303 +As the result of another optimization, Nitpick directly assigned a value to the
  20.304 +subterm $\textrm{THE}~y.\;P~y$, rather than to the \textit{The} constant. If we
  20.305 +disable this second optimization by using the command
  20.306 +
  20.307 +\prew
  20.308 +\textbf{nitpick}~[\textit{dont\_specialize},\, \textit{full\_descrs},\,
  20.309 +\textit{show\_consts}]
  20.310 +\postw
  20.311 +
  20.312 +we finally get \textit{The}:
  20.313 +
  20.314 +\prew
  20.315 +\slshape Constant: \nopagebreak \\
  20.316 +\hbox{}\qquad $\mathit{The} = \undef{}
  20.317 +    (\!\begin{aligned}[t]%
  20.318 +    & \{\} := a_3,\> \{a_3\} := a_3,\> \{a_2\} := a_2, \\[-2pt] %% TYPESETTING
  20.319 +    & \{a_2, a_3\} := a_1,\> \{a_1\} := a_1,\> \{a_1, a_3\} := a_3, \\[-2pt]
  20.320 +    & \{a_1, a_2\} := a_3,\> \{a_1, a_2, a_3\} := a_3)\end{aligned}$
  20.321 +\postw
  20.322 +
  20.323 +Notice that $\textit{The}~(\lambda y.\;P~y) = \textit{The}~\{a_2, a_3\} = a_1$,
  20.324 +just like before.\footnote{The \undef{} symbol's presence is explained as
  20.325 +follows: In higher-order logic, any function can be built from the undefined
  20.326 +function using repeated applications of the function update operator $f(x :=
  20.327 +y)$, just like any list can be built from the empty list using $x \mathbin{\#}
  20.328 +xs$.}
  20.329 +
  20.330 +Our misadventures with THE suggest adding `$\exists!x{.}$' (``there exists a
  20.331 +unique $x$ such that'') at the front of our putative lemma's assumption:
  20.332 +
  20.333 +\prew
  20.334 +\textbf{lemma}~``$\exists {!}x.\; P~x\,\Longrightarrow\, P~(\textrm{THE}~y.\;P~y)$''
  20.335 +\postw
  20.336 +
  20.337 +The fix appears to work:
  20.338 +
  20.339 +\prew
  20.340 +\textbf{nitpick} \\[2\smallskipamount]
  20.341 +\slshape Nitpick found no counterexample.
  20.342 +\postw
  20.343 +
  20.344 +We can further increase our confidence in the formula by exhausting all
  20.345 +cardinalities up to 50:
  20.346 +
  20.347 +\prew
  20.348 +\textbf{nitpick} [\textit{card} $'a$~= 1--50]\footnote{The symbol `--'
  20.349 +can be entered as \texttt{-} (hyphen) or
  20.350 +\texttt{\char`\\\char`\<midarrow\char`\>}.} \\[2\smallskipamount]
  20.351 +\slshape Nitpick found no counterexample.
  20.352 +\postw
  20.353 +
  20.354 +Let's see if Sledgehammer \cite{sledgehammer-2009} can find a proof:
  20.355 +
  20.356 +\prew
  20.357 +\textbf{sledgehammer} \\[2\smallskipamount]
  20.358 +{\slshape Sledgehammer: external prover ``$e$'' for subgoal 1: \\
  20.359 +$\exists{!}x.\; P~x\,\Longrightarrow\, P~(\hbox{\slshape THE}~y.\; P~y)$ \\
  20.360 +Try this command: \textrm{apply}~(\textit{metis~the\_equality})} \\[2\smallskipamount]
  20.361 +\textbf{apply}~(\textit{metis~the\_equality\/}) \nopagebreak \\[2\smallskipamount]
  20.362 +{\slshape No subgoals!}% \\[2\smallskipamount]
  20.363 +%\textbf{done}
  20.364 +\postw
  20.365 +
  20.366 +This must be our lucky day.
  20.367 +
  20.368 +\subsection{Skolemization}
  20.369 +\label{skolemization}
  20.370 +
  20.371 +Are all invertible functions onto? Let's find out:
  20.372 +
  20.373 +\prew
  20.374 +\textbf{lemma} ``$\exists g.\; \forall x.~g~(f~x) = x
  20.375 + \,\Longrightarrow\, \forall y.\; \exists x.~y = f~x$'' \\
  20.376 +\textbf{nitpick} \\[2\smallskipamount]
  20.377 +\slshape
  20.378 +Nitpick found a counterexample for \textit{card} $'a$~= 2 and \textit{card} $'b$~=~1: \\[2\smallskipamount]
  20.379 +\hbox{}\qquad Free variable: \nopagebreak \\
  20.380 +\hbox{}\qquad\qquad $f = \undef{}(b_1 := a_1)$ \\
  20.381 +\hbox{}\qquad Skolem constants: \nopagebreak \\
  20.382 +\hbox{}\qquad\qquad $g = \undef{}(a_1 := b_1,\> a_2 := b_1)$ \\
  20.383 +\hbox{}\qquad\qquad $y = a_2$
  20.384 +\postw
  20.385 +
  20.386 +Although $f$ is the only free variable occurring in the formula, Nitpick also
  20.387 +displays values for the bound variables $g$ and $y$. These values are available
  20.388 +to Nitpick because it performs skolemization as a preprocessing step.
  20.389 +
  20.390 +In the previous example, skolemization only affected the outermost quantifiers.
  20.391 +This is not always the case, as illustrated below:
  20.392 +
  20.393 +\prew
  20.394 +\textbf{lemma} ``$\exists x.\; \forall f.\; f~x = x$'' \\
  20.395 +\textbf{nitpick} \\[2\smallskipamount]
  20.396 +\slshape
  20.397 +Nitpick found a counterexample for \textit{card} $'a$~= 2: \\[2\smallskipamount]
  20.398 +\hbox{}\qquad Skolem constant: \nopagebreak \\
  20.399 +\hbox{}\qquad\qquad $\lambda x.\; f =
  20.400 +    \undef{}(\!\begin{aligned}[t]
  20.401 +    & a_1 := \undef{}(a_1 := a_2,\> a_2 := a_1), \\[-2pt]
  20.402 +    & a_2 := \undef{}(a_1 := a_1,\> a_2 := a_1))\end{aligned}$
  20.403 +\postw
  20.404 +
  20.405 +The variable $f$ is bound within the scope of $x$; therefore, $f$ depends on
  20.406 +$x$, as suggested by the notation $\lambda x.\,f$. If $x = a_1$, then $f$ is the
  20.407 +function that maps $a_1$ to $a_2$ and vice versa; otherwise, $x = a_2$ and $f$
  20.408 +maps both $a_1$ and $a_2$ to $a_1$. In both cases, $f~x \not= x$.
  20.409 +
  20.410 +The source of the Skolem constants is sometimes more obscure:
  20.411 +
  20.412 +\prew
  20.413 +\textbf{lemma} ``$\mathit{refl}~r\,\Longrightarrow\, \mathit{sym}~r$'' \\
  20.414 +\textbf{nitpick} \\[2\smallskipamount]
  20.415 +\slshape
  20.416 +Nitpick found a counterexample for \textit{card} $'a$~= 2: \\[2\smallskipamount]
  20.417 +\hbox{}\qquad Free variable: \nopagebreak \\
  20.418 +\hbox{}\qquad\qquad $r = \{(a_1, a_1),\, (a_2, a_1),\, (a_2, a_2)\}$ \\
  20.419 +\hbox{}\qquad Skolem constants: \nopagebreak \\
  20.420 +\hbox{}\qquad\qquad $\mathit{sym}.x = a_2$ \\
  20.421 +\hbox{}\qquad\qquad $\mathit{sym}.y = a_1$
  20.422 +\postw
  20.423 +
  20.424 +What happened here is that Nitpick expanded the \textit{sym} constant to its
  20.425 +definition:
  20.426 +
  20.427 +\prew
  20.428 +$\mathit{sym}~r \,\equiv\,
  20.429 + \forall x\> y.\,\> (x, y) \in r \longrightarrow (y, x) \in r.$
  20.430 +\postw
  20.431 +
  20.432 +As their names suggest, the Skolem constants $\mathit{sym}.x$ and
  20.433 +$\mathit{sym}.y$ are simply the bound variables $x$ and $y$
  20.434 +from \textit{sym}'s definition.
  20.435 +
  20.436 +Although skolemization is a useful optimization, you can disable it by invoking
  20.437 +Nitpick with \textit{dont\_skolemize}. See \S\ref{optimizations} for details.
  20.438 +
  20.439 +\subsection{Natural Numbers and Integers}
  20.440 +\label{natural-numbers-and-integers}
  20.441 +
  20.442 +Because of the axiom of infinity, the type \textit{nat} does not admit any
  20.443 +finite models. To deal with this, Nitpick considers prefixes $\{0,\, 1,\,
  20.444 +\ldots,\, K - 1\}$ of \textit{nat} (where $K = \textit{card}~\textit{nat}$) and
  20.445 +maps all other numbers to the undefined value ($\unk$). The type \textit{int} is
  20.446 +handled in a similar way: If $K = \textit{card}~\textit{int}$, the subset of
  20.447 +\textit{int} known to Nitpick is $\{-\lceil K/2 \rceil + 1,\, \ldots,\, +\lfloor
  20.448 +K/2 \rfloor\}$. Undefined values lead to a three-valued logic.
  20.449 +
  20.450 +Here is an example involving \textit{int}:
  20.451 +
  20.452 +\prew
  20.453 +\textbf{lemma} ``$\lbrakk i \le j;\> n \le (m{\Colon}\mathit{int})\rbrakk \,\Longrightarrow\, i * n + j * m \le i * m + j * n$'' \\
  20.454 +\textbf{nitpick} \\[2\smallskipamount]
  20.455 +\slshape Nitpick found a counterexample: \\[2\smallskipamount]
  20.456 +\hbox{}\qquad Free variables: \nopagebreak \\
  20.457 +\hbox{}\qquad\qquad $i = 0$ \\
  20.458 +\hbox{}\qquad\qquad $j = 1$ \\
  20.459 +\hbox{}\qquad\qquad $m = 1$ \\
  20.460 +\hbox{}\qquad\qquad $n = 0$
  20.461 +\postw
  20.462 +
  20.463 +With infinite types, we don't always have the luxury of a genuine counterexample
  20.464 +and must often content ourselves with a potential one. The tedious task of
  20.465 +finding out whether the potential counterexample is in fact genuine can be
  20.466 +outsourced to \textit{auto} by passing the option \textit{check\_potential}. For
  20.467 +example:
  20.468 +
  20.469 +\prew
  20.470 +\textbf{lemma} ``$\forall n.\; \textit{Suc}~n \mathbin{\not=} n \,\Longrightarrow\, P$'' \\
  20.471 +\textbf{nitpick} [\textit{card~nat}~= 100,\, \textit{check\_potential}] \\[2\smallskipamount]
  20.472 +\slshape Nitpick found a potential counterexample: \\[2\smallskipamount]
  20.473 +\hbox{}\qquad Free variable: \nopagebreak \\
  20.474 +\hbox{}\qquad\qquad $P = \textit{False}$ \\[2\smallskipamount]
  20.475 +Confirmation by ``\textit{auto}'': The above counterexample is genuine.
  20.476 +\postw
  20.477 +
  20.478 +You might wonder why the counterexample is first reported as potential. The root
  20.479 +of the problem is that the bound variable in $\forall n.\; \textit{Suc}~n
  20.480 +\mathbin{\not=} n$ ranges over an infinite type. If Nitpick finds an $n$ such
  20.481 +that $\textit{Suc}~n \mathbin{=} n$, it evaluates the assumption to
  20.482 +\textit{False}; but otherwise, it does not know anything about values of $n \ge
  20.483 +\textit{card~nat}$ and must therefore evaluate the assumption to $\unk$, not
  20.484 +\textit{True}. Since the assumption can never be satisfied, the putative lemma
  20.485 +can never be falsified.
  20.486 +
  20.487 +Incidentally, if you distrust the so-called genuine counterexamples, you can
  20.488 +enable \textit{check\_\allowbreak genuine} to verify them as well. However, be
  20.489 +aware that \textit{auto} will often fail to prove that the counterexample is
  20.490 +genuine or spurious.
  20.491 +
  20.492 +Some conjectures involving elementary number theory make Nitpick look like a
  20.493 +giant with feet of clay:
  20.494 +
  20.495 +\prew
  20.496 +\textbf{lemma} ``$P~\textit{Suc}$'' \\
  20.497 +\textbf{nitpick} [\textit{card} = 1--6] \\[2\smallskipamount]
  20.498 +\slshape
  20.499 +Nitpick found no counterexample.
  20.500 +\postw
  20.501 +
  20.502 +For any cardinality $k$, \textit{Suc} is the partial function $\{0 \mapsto 1,\,
  20.503 +1 \mapsto 2,\, \ldots,\, k - 1 \mapsto \unk\}$, which evaluates to $\unk$ when
  20.504 +it is passed as argument to $P$. As a result, $P~\textit{Suc}$ is always $\unk$.
  20.505 +The next example is similar:
  20.506 +
  20.507 +\prew
  20.508 +\textbf{lemma} ``$P~(\textit{op}~{+}\Colon
  20.509 +\textit{nat}\mathbin{\Rightarrow}\textit{nat}\mathbin{\Rightarrow}\textit{nat})$'' \\
  20.510 +\textbf{nitpick} [\textit{card nat} = 1] \\[2\smallskipamount]
  20.511 +{\slshape Nitpick found a counterexample:} \\[2\smallskipamount]
  20.512 +\hbox{}\qquad Free variable: \nopagebreak \\
  20.513 +\hbox{}\qquad\qquad $P = \{\}$ \\[2\smallskipamount]
  20.514 +\textbf{nitpick} [\textit{card nat} = 2] \\[2\smallskipamount]
  20.515 +{\slshape Nitpick found no counterexample.}
  20.516 +\postw
  20.517 +
  20.518 +The problem here is that \textit{op}~+ is total when \textit{nat} is taken to be
  20.519 +$\{0\}$ but becomes partial as soon as we add $1$, because $1 + 1 \notin \{0,
  20.520 +1\}$.
  20.521 +
  20.522 +Because numbers are infinite and are approximated using a three-valued logic,
  20.523 +there is usually no need to systematically enumerate domain sizes. If Nitpick
  20.524 +cannot find a genuine counterexample for \textit{card~nat}~= $k$, it is very
  20.525 +unlikely that one could be found for smaller domains. (The $P~(\textit{op}~{+})$
  20.526 +example above is an exception to this principle.) Nitpick nonetheless enumerates
  20.527 +all cardinalities from 1 to 8 for \textit{nat}, mainly because smaller
  20.528 +cardinalities are fast to handle and give rise to simpler counterexamples. This
  20.529 +is explained in more detail in \S\ref{scope-monotonicity}.
  20.530 +
  20.531 +\subsection{Inductive Datatypes}
  20.532 +\label{inductive-datatypes}
  20.533 +
  20.534 +Like natural numbers and integers, inductive datatypes with recursive
  20.535 +constructors admit no finite models and must be approximated by a subterm-closed
  20.536 +subset. For example, using a cardinality of 10 for ${'}a~\textit{list}$,
  20.537 +Nitpick looks for all counterexamples that can be built using at most 10
  20.538 +different lists.
  20.539 +
  20.540 +Let's see with an example involving \textit{hd} (which returns the first element
  20.541 +of a list) and $@$ (which concatenates two lists):
  20.542 +
  20.543 +\prew
  20.544 +\textbf{lemma} ``$\textit{hd}~(\textit{xs} \mathbin{@} [y, y]) = \textit{hd}~\textit{xs}$'' \\
  20.545 +\textbf{nitpick} \\[2\smallskipamount]
  20.546 +\slshape Nitpick found a counterexample for \textit{card} $'a$~= 3: \\[2\smallskipamount]
  20.547 +\hbox{}\qquad Free variables: \nopagebreak \\
  20.548 +\hbox{}\qquad\qquad $\textit{xs} = []$ \\
  20.549 +\hbox{}\qquad\qquad $\textit{y} = a_3$
  20.550 +\postw
  20.551 +
  20.552 +To see why the counterexample is genuine, we enable \textit{show\_consts}
  20.553 +and \textit{show\_\allowbreak datatypes}:
  20.554 +
  20.555 +\prew
  20.556 +{\slshape Datatype:} \\
  20.557 +\hbox{}\qquad $'a$~\textit{list}~= $\{[],\, [a_3, a_3],\, [a_3],\, \unr\}$ \\
  20.558 +{\slshape Constants:} \\
  20.559 +\hbox{}\qquad $\lambda x_1.\; x_1 \mathbin{@} [y, y] = \undef([] := [a_3, a_3],\> [a_3, a_3] := \unk,\> [a_3] := \unk)$ \\
  20.560 +\hbox{}\qquad $\textit{hd} = \undef([] := a_2,\> [a_3, a_3] := a_3,\> [a_3] := a_3)$
  20.561 +\postw
  20.562 +
  20.563 +Since $\mathit{hd}~[]$ is undefined in the logic, it may be given any value,
  20.564 +including $a_2$.
  20.565 +
  20.566 +The second constant, $\lambda x_1.\; x_1 \mathbin{@} [y, y]$, is simply the
  20.567 +append operator whose second argument is fixed to be $[y, y]$. Appending $[a_3,
  20.568 +a_3]$ to $[a_3]$ would normally give $[a_3, a_3, a_3]$, but this value is not
  20.569 +representable in the subset of $'a$~\textit{list} considered by Nitpick, which
  20.570 +is shown under the ``Datatype'' heading; hence the result is $\unk$. Similarly,
  20.571 +appending $[a_3, a_3]$ to itself gives $\unk$.
  20.572 +
  20.573 +Given \textit{card}~$'a = 3$ and \textit{card}~$'a~\textit{list} = 3$, Nitpick
  20.574 +considers the following subsets:
  20.575 +
  20.576 +\kern-.5\smallskipamount %% TYPESETTING
  20.577 +
  20.578 +\prew
  20.579 +\begin{multicols}{3}
  20.580 +$\{[],\, [a_1],\, [a_2]\}$; \\
  20.581 +$\{[],\, [a_1],\, [a_3]\}$; \\
  20.582 +$\{[],\, [a_2],\, [a_3]\}$; \\
  20.583 +$\{[],\, [a_1],\, [a_1, a_1]\}$; \\
  20.584 +$\{[],\, [a_1],\, [a_2, a_1]\}$; \\
  20.585 +$\{[],\, [a_1],\, [a_3, a_1]\}$; \\
  20.586 +$\{[],\, [a_2],\, [a_1, a_2]\}$; \\
  20.587 +$\{[],\, [a_2],\, [a_2, a_2]\}$; \\
  20.588 +$\{[],\, [a_2],\, [a_3, a_2]\}$; \\
  20.589 +$\{[],\, [a_3],\, [a_1, a_3]\}$; \\
  20.590 +$\{[],\, [a_3],\, [a_2, a_3]\}$; \\
  20.591 +$\{[],\, [a_3],\, [a_3, a_3]\}$.
  20.592 +\end{multicols}
  20.593 +\postw
  20.594 +
  20.595 +\kern-2\smallskipamount %% TYPESETTING
  20.596 +
  20.597 +All subterm-closed subsets of $'a~\textit{list}$ consisting of three values
  20.598 +are listed and only those. As an example of a non-subterm-closed subset,
  20.599 +consider $\mathcal{S} = \{[],\, [a_1],\,\allowbreak [a_1, a_3]\}$, and observe
  20.600 +that $[a_1, a_3]$ (i.e., $a_1 \mathbin{\#} [a_3]$) has $[a_3] \notin
  20.601 +\mathcal{S}$ as a subterm.
  20.602 +
  20.603 +Here's another m\"ochtegern-lemma that Nitpick can refute without a blink:
  20.604 +
  20.605 +\prew
  20.606 +\textbf{lemma} ``$\lbrakk \textit{length}~\textit{xs} = 1;\> \textit{length}~\textit{ys} = 1
  20.607 +\rbrakk \,\Longrightarrow\, \textit{xs} = \textit{ys}$''
  20.608 +\\
  20.609 +\textbf{nitpick} [\textit{show\_datatypes}] \\[2\smallskipamount]
  20.610 +\slshape Nitpick found a counterexample for \textit{card} $'a$~= 3: \\[2\smallskipamount]
  20.611 +\hbox{}\qquad Free variables: \nopagebreak \\
  20.612 +\hbox{}\qquad\qquad $\textit{xs} = [a_2]$ \\
  20.613 +\hbox{}\qquad\qquad $\textit{ys} = [a_3]$ \\
  20.614 +\hbox{}\qquad Datatypes: \\
  20.615 +\hbox{}\qquad\qquad $\textit{nat} = \{0,\, 1,\, 2,\, \unr\}$ \\
  20.616 +\hbox{}\qquad\qquad $'a$~\textit{list} = $\{[],\, [a_3],\, [a_2],\, \unr\}$
  20.617 +\postw
  20.618 +
  20.619 +Because datatypes are approximated using a three-valued logic, there is usually
  20.620 +no need to systematically enumerate cardinalities: If Nitpick cannot find a
  20.621 +genuine counterexample for \textit{card}~$'a~\textit{list}$~= 10, it is very
  20.622 +unlikely that one could be found for smaller cardinalities.
  20.623 +
  20.624 +\subsection{Typedefs, Records, Rationals, and Reals}
  20.625 +\label{typedefs-records-rationals-and-reals}
  20.626 +
  20.627 +Nitpick generally treats types declared using \textbf{typedef} as datatypes
  20.628 +whose single constructor is the corresponding \textit{Abs\_\kern.1ex} function.
  20.629 +For example:
  20.630 +
  20.631 +\prew
  20.632 +\textbf{typedef}~\textit{three} = ``$\{0\Colon\textit{nat},\, 1,\, 2\}$'' \\
  20.633 +\textbf{by}~\textit{blast} \\[2\smallskipamount]
  20.634 +\textbf{definition}~$A \mathbin{\Colon} \textit{three}$ \textbf{where} ``\kern-.1em$A \,\equiv\, \textit{Abs\_\allowbreak three}~0$'' \\
  20.635 +\textbf{definition}~$B \mathbin{\Colon} \textit{three}$ \textbf{where} ``$B \,\equiv\, \textit{Abs\_three}~1$'' \\
  20.636 +\textbf{definition}~$C \mathbin{\Colon} \textit{three}$ \textbf{where} ``$C \,\equiv\, \textit{Abs\_three}~2$'' \\[2\smallskipamount]
  20.637 +\textbf{lemma} ``$\lbrakk P~A;\> P~B\rbrakk \,\Longrightarrow\, P~x$'' \\
  20.638 +\textbf{nitpick} [\textit{show\_datatypes}] \\[2\smallskipamount]
  20.639 +\slshape Nitpick found a counterexample: \\[2\smallskipamount]
  20.640 +\hbox{}\qquad Free variables: \nopagebreak \\
  20.641 +\hbox{}\qquad\qquad $P = \{\Abs{1},\, \Abs{0}\}$ \\
  20.642 +\hbox{}\qquad\qquad $x = \Abs{2}$ \\
  20.643 +\hbox{}\qquad Datatypes: \\
  20.644 +\hbox{}\qquad\qquad $\textit{nat} = \{0,\, 1,\, 2,\, \unr\}$ \\
  20.645 +\hbox{}\qquad\qquad $\textit{three} = \{\Abs{2},\, \Abs{1},\, \Abs{0},\, \unr\}$
  20.646 +\postw
  20.647 +
  20.648 +%% MARK
  20.649 +In the output above, $\Abs{n}$ abbreviates $\textit{Abs\_three}~n$.
  20.650 +
  20.651 +%% MARK
  20.652 +Records, which are implemented as \textbf{typedef}s behind the scenes, are
  20.653 +handled in much the same way:
  20.654 +
  20.655 +\prew
  20.656 +\textbf{record} \textit{point} = \\
  20.657 +\hbox{}\quad $\textit{Xcoord} \mathbin{\Colon} \textit{int}$ \\
  20.658 +\hbox{}\quad $\textit{Ycoord} \mathbin{\Colon} \textit{int}$ \\[2\smallskipamount]
  20.659 +\textbf{lemma} ``$\textit{Xcoord}~(p\Colon\textit{point}) = \textit{Xcoord}~(q\Colon\textit{point})$'' \\
  20.660 +\textbf{nitpick} [\textit{show\_datatypes}] \\[2\smallskipamount]
  20.661 +\slshape Nitpick found a counterexample: \\[2\smallskipamount]
  20.662 +\hbox{}\qquad Free variables: \nopagebreak \\
  20.663 +\hbox{}\qquad\qquad $p = \lparr\textit{Xcoord} = 0,\> \textit{Ycoord} = 0\rparr$ \\
  20.664 +\hbox{}\qquad\qquad $q = \lparr\textit{Xcoord} = 1,\> \textit{Ycoord} = 1\rparr$ \\
  20.665 +\hbox{}\qquad Datatypes: \\
  20.666 +\hbox{}\qquad\qquad $\textit{int} = \{0,\, 1,\, \unr\}$ \\
  20.667 +\hbox{}\qquad\qquad $\textit{point} = \{\lparr\textit{Xcoord} = 1,\>
  20.668 +\textit{Ycoord} = 1\rparr,\> \lparr\textit{Xcoord} = 0,\> \textit{Ycoord} = 0\rparr,\, \unr\}$\kern-1pt %% QUIET
  20.669 +\postw
  20.670 +
  20.671 +Finally, Nitpick provides rudimentary support for rationals and reals using a
  20.672 +similar approach:
  20.673 +
  20.674 +\prew
  20.675 +\textbf{lemma} ``$4 * x + 3 * (y\Colon\textit{real}) \not= 1/2$'' \\
  20.676 +\textbf{nitpick} [\textit{show\_datatypes}] \\[2\smallskipamount]
  20.677 +\slshape Nitpick found a counterexample: \\[2\smallskipamount]
  20.678 +\hbox{}\qquad Free variables: \nopagebreak \\
  20.679 +\hbox{}\qquad\qquad $x = 1/2$ \\
  20.680 +\hbox{}\qquad\qquad $y = -1/2$ \\
  20.681 +\hbox{}\qquad Datatypes: \\
  20.682 +\hbox{}\qquad\qquad $\textit{nat} = \{0,\, 1,\, 2,\, 3,\, 4,\, 5,\, 6,\, 7,\, \unr\}$ \\
  20.683 +\hbox{}\qquad\qquad $\textit{int} = \{0,\, 1,\, 2,\, 3,\, 4,\, -3,\, -2,\, -1,\, \unr\}$ \\
  20.684 +\hbox{}\qquad\qquad $\textit{real} = \{1,\, 0,\, 4,\, -3/2,\, 3,\, 2,\, 1/2,\, -1/2,\, \unr\}$
  20.685 +\postw
  20.686 +
  20.687 +\subsection{Inductive and Coinductive Predicates}
  20.688 +\label{inductive-and-coinductive-predicates}
  20.689 +
  20.690 +Inductively defined predicates (and sets) are particularly problematic for
  20.691 +counterexample generators. They can make Quickcheck~\cite{berghofer-nipkow-2004}
  20.692 +loop forever and Refute~\cite{weber-2008} run out of resources. The crux of
  20.693 +the problem is that they are defined using a least fixed point construction.
  20.694 +
  20.695 +Nitpick's philosophy is that not all inductive predicates are equal. Consider
  20.696 +the \textit{even} predicate below:
  20.697 +
  20.698 +\prew
  20.699 +\textbf{inductive}~\textit{even}~\textbf{where} \\
  20.700 +``\textit{even}~0'' $\,\mid$ \\
  20.701 +``\textit{even}~$n\,\Longrightarrow\, \textit{even}~(\textit{Suc}~(\textit{Suc}~n))$''
  20.702 +\postw
  20.703 +
  20.704 +This predicate enjoys the desirable property of being well-founded, which means
  20.705 +that the introduction rules don't give rise to infinite chains of the form
  20.706 +
  20.707 +\prew
  20.708 +$\cdots\,\Longrightarrow\, \textit{even}~k''
  20.709 +       \,\Longrightarrow\, \textit{even}~k'
  20.710 +       \,\Longrightarrow\, \textit{even}~k.$
  20.711 +\postw
  20.712 +
  20.713 +For \textit{even}, this is obvious: Any chain ending at $k$ will be of length
  20.714 +$k/2 + 1$:
  20.715 +
  20.716 +\prew
  20.717 +$\textit{even}~0\,\Longrightarrow\, \textit{even}~2\,\Longrightarrow\, \cdots
  20.718 +       \,\Longrightarrow\, \textit{even}~(k - 2)
  20.719 +       \,\Longrightarrow\, \textit{even}~k.$
  20.720 +\postw
  20.721 +
  20.722 +Wellfoundedness is desirable because it enables Nitpick to use a very efficient
  20.723 +fixed point computation.%
  20.724 +\footnote{If an inductive predicate is
  20.725 +well-founded, then it has exactly one fixed point, which is simultaneously the
  20.726 +least and the greatest fixed point. In these circumstances, the computation of
  20.727 +the least fixed point amounts to the computation of an arbitrary fixed point,
  20.728 +which can be performed using a straightforward recursive equation.}
  20.729 +Moreover, Nitpick can prove wellfoundedness of most well-founded predicates,
  20.730 +just as Isabelle's \textbf{function} package usually discharges termination
  20.731 +proof obligations automatically.
  20.732 +
  20.733 +Let's try an example:
  20.734 +
  20.735 +\prew
  20.736 +\textbf{lemma} ``$\exists n.\; \textit{even}~n \mathrel{\land} \textit{even}~(\textit{Suc}~n)$'' \\
  20.737 +\textbf{nitpick}~[\textit{card nat}~= 100,\, \textit{verbose}] \\[2\smallskipamount]
  20.738 +\slshape The inductive predicate ``\textit{even}'' was proved well-founded.
  20.739 +Nitpick can compute it efficiently. \\[2\smallskipamount]
  20.740 +Trying 1 scope: \\
  20.741 +\hbox{}\qquad \textit{card nat}~= 100. \\[2\smallskipamount]
  20.742 +Nitpick found a potential counterexample for \textit{card nat}~= 100: \\[2\smallskipamount]
  20.743 +\hbox{}\qquad Empty assignment \\[2\smallskipamount]
  20.744 +Nitpick could not find a better counterexample. \\[2\smallskipamount]
  20.745 +Total time: 2274 ms.
  20.746 +\postw
  20.747 +
  20.748 +No genuine counterexample is possible because Nitpick cannot rule out the
  20.749 +existence of a natural number $n \ge 100$ such that both $\textit{even}~n$ and
  20.750 +$\textit{even}~(\textit{Suc}~n)$ are true. To help Nitpick, we can bound the
  20.751 +existential quantifier:
  20.752 +
  20.753 +\prew
  20.754 +\textbf{lemma} ``$\exists n \mathbin{\le} 99.\; \textit{even}~n \mathrel{\land} \textit{even}~(\textit{Suc}~n)$'' \\
  20.755 +\textbf{nitpick}~[\textit{card nat}~= 100] \\[2\smallskipamount]
  20.756 +\slshape Nitpick found a counterexample: \\[2\smallskipamount]
  20.757 +\hbox{}\qquad Empty assignment
  20.758 +\postw
  20.759 +
  20.760 +So far we were blessed by the wellfoundedness of \textit{even}. What happens if
  20.761 +we use the following definition instead?
  20.762 +
  20.763 +\prew
  20.764 +\textbf{inductive} $\textit{even}'$ \textbf{where} \\
  20.765 +``$\textit{even}'~(0{\Colon}\textit{nat})$'' $\,\mid$ \\
  20.766 +``$\textit{even}'~2$'' $\,\mid$ \\
  20.767 +``$\lbrakk\textit{even}'~m;\> \textit{even}'~n\rbrakk \,\Longrightarrow\, \textit{even}'~(m + n)$''
  20.768 +\postw
  20.769 +
  20.770 +This definition is not well-founded: From $\textit{even}'~0$ and
  20.771 +$\textit{even}'~0$, we can derive that $\textit{even}'~0$. Nonetheless, the
  20.772 +predicates $\textit{even}$ and $\textit{even}'$ are equivalent.
  20.773 +
  20.774 +Let's check a property involving $\textit{even}'$. To make up for the
  20.775 +foreseeable computational hurdles entailed by non-wellfoundedness, we decrease
  20.776 +\textit{nat}'s cardinality to a mere 10:
  20.777 +
  20.778 +\prew
  20.779 +\textbf{lemma}~``$\exists n \in \{0, 2, 4, 6, 8\}.\;
  20.780 +\lnot\;\textit{even}'~n$'' \\
  20.781 +\textbf{nitpick}~[\textit{card nat}~= 10,\, \textit{verbose},\, \textit{show\_consts}] \\[2\smallskipamount]
  20.782 +\slshape
  20.783 +The inductive predicate ``$\textit{even}'\!$'' could not be proved well-founded.
  20.784 +Nitpick might need to unroll it. \\[2\smallskipamount]
  20.785 +Trying 6 scopes: \\
  20.786 +\hbox{}\qquad \textit{card nat}~= 10 and \textit{iter} $\textit{even}'$~= 0; \\
  20.787 +\hbox{}\qquad \textit{card nat}~= 10 and \textit{iter} $\textit{even}'$~= 1; \\
  20.788 +\hbox{}\qquad \textit{card nat}~= 10 and \textit{iter} $\textit{even}'$~= 2; \\
  20.789 +\hbox{}\qquad \textit{card nat}~= 10 and \textit{iter} $\textit{even}'$~= 4; \\
  20.790 +\hbox{}\qquad \textit{card nat}~= 10 and \textit{iter} $\textit{even}'$~= 8; \\
  20.791 +\hbox{}\qquad \textit{card nat}~= 10 and \textit{iter} $\textit{even}'$~= 9. \\[2\smallskipamount]
  20.792 +Nitpick found a counterexample for \textit{card nat}~= 10 and \textit{iter} $\textit{even}'$~= 2: \\[2\smallskipamount]
  20.793 +\hbox{}\qquad Constant: \nopagebreak \\
  20.794 +\hbox{}\qquad\qquad $\lambda i.\; \textit{even}'$ = $\undef(\!\begin{aligned}[t]
  20.795 +& 2 := \{0, 2, 4, 6, 8, 1^\Q, 3^\Q, 5^\Q, 7^\Q, 9^\Q\}, \\[-2pt]
  20.796 +& 1 := \{0, 2, 4, 1^\Q, 3^\Q, 5^\Q, 6^\Q, 7^\Q, 8^\Q, 9^\Q\}, \\[-2pt]
  20.797 +& 0 := \{0, 2, 1^\Q, 3^\Q, 4^\Q, 5^\Q, 6^\Q, 7^\Q, 8^\Q, 9^\Q\})\end{aligned}$ \\[2\smallskipamount]
  20.798 +Total time: 1140 ms.
  20.799 +\postw
  20.800 +
  20.801 +Nitpick's output is very instructive. First, it tells us that the predicate is
  20.802 +unrolled, meaning that it is computed iteratively from the empty set. Then it
  20.803 +lists six scopes specifying different bounds on the numbers of iterations:\ 0,
  20.804 +1, 2, 4, 8, and~9.
  20.805 +
  20.806 +The output also shows how each iteration contributes to $\textit{even}'$. The
  20.807 +notation $\lambda i.\; \textit{even}'$ indicates that the value of the
  20.808 +predicate depends on an iteration counter. Iteration 0 provides the basis
  20.809 +elements, $0$ and $2$. Iteration 1 contributes $4$ ($= 2 + 2$). Iteration 2
  20.810 +throws $6$ ($= 2 + 4 = 4 + 2$) and $8$ ($= 4 + 4$) into the mix. Further
  20.811 +iterations would not contribute any new elements.
  20.812 +
  20.813 +Some values are marked with superscripted question
  20.814 +marks~(`\lower.2ex\hbox{$^\Q$}'). These are the elements for which the
  20.815 +predicate evaluates to $\unk$. Thus, $\textit{even}'$ evaluates to either
  20.816 +\textit{True} or $\unk$, never \textit{False}.
  20.817 +
  20.818 +When unrolling a predicate, Nitpick tries 0, 1, 2, 4, 8, 12, 16, and 24
  20.819 +iterations. However, these numbers are bounded by the cardinality of the
  20.820 +predicate's domain. With \textit{card~nat}~= 10, no more than 9 iterations are
  20.821 +ever needed to compute the value of a \textit{nat} predicate. You can specify
  20.822 +the number of iterations using the \textit{iter} option, as explained in
  20.823 +\S\ref{scope-of-search}.
  20.824 +
  20.825 +In the next formula, $\textit{even}'$ occurs both positively and negatively:
  20.826 +
  20.827 +\prew
  20.828 +\textbf{lemma} ``$\textit{even}'~(n - 2) \,\Longrightarrow\, \textit{even}'~n$'' \\
  20.829 +\textbf{nitpick} [\textit{card nat} = 10,\, \textit{show\_consts}] \\[2\smallskipamount]
  20.830 +\slshape Nitpick found a counterexample: \\[2\smallskipamount]
  20.831 +\hbox{}\qquad Free variable: \nopagebreak \\
  20.832 +\hbox{}\qquad\qquad $n = 1$ \\
  20.833 +\hbox{}\qquad Constants: \nopagebreak \\
  20.834 +\hbox{}\qquad\qquad $\lambda i.\; \textit{even}'$ = $\undef(\!\begin{aligned}[t]
  20.835 +& 0 := \{0, 2, 1^\Q, 3^\Q, 4^\Q, 5^\Q, 6^\Q, 7^\Q, 8^\Q, 9^\Q\})\end{aligned}$  \\
  20.836 +\hbox{}\qquad\qquad $\textit{even}' \subseteq \{0, 2, 4, 6, 8, \unr\}$
  20.837 +\postw
  20.838 +
  20.839 +Notice the special constraint $\textit{even}' \subseteq \{0,\, 2,\, 4,\, 6,\,
  20.840 +8,\, \unr\}$ in the output, whose right-hand side represents an arbitrary
  20.841 +fixed point (not necessarily the least one). It is used to falsify
  20.842 +$\textit{even}'~n$. In contrast, the unrolled predicate is used to satisfy
  20.843 +$\textit{even}'~(n - 2)$.
  20.844 +
  20.845 +Coinductive predicates are handled dually. For example:
  20.846 +
  20.847 +\prew
  20.848 +\textbf{coinductive} \textit{nats} \textbf{where} \\
  20.849 +``$\textit{nats}~(x\Colon\textit{nat}) \,\Longrightarrow\, \textit{nats}~x$'' \\[2\smallskipamount]
  20.850 +\textbf{lemma} ``$\textit{nats} = \{0, 1, 2, 3, 4\}$'' \\
  20.851 +\textbf{nitpick}~[\textit{card nat} = 10,\, \textit{show\_consts}] \\[2\smallskipamount]
  20.852 +\slshape Nitpick found a counterexample:
  20.853 +\\[2\smallskipamount]
  20.854 +\hbox{}\qquad Constants: \nopagebreak \\
  20.855 +\hbox{}\qquad\qquad $\lambda i.\; \textit{nats} = \undef(0 := \{\!\begin{aligned}[t]
  20.856 +& 0^\Q, 1^\Q, 2^\Q, 3^\Q, 4^\Q, 5^\Q, 6^\Q, 7^\Q, 8^\Q, 9^\Q, \\[-2pt]
  20.857 +& \unr\})\end{aligned}$ \\
  20.858 +\hbox{}\qquad\qquad $nats \supseteq \{9, 5^\Q, 6^\Q, 7^\Q, 8^\Q, \unr\}$
  20.859 +\postw
  20.860 +
  20.861 +As a special case, Nitpick uses Kodkod's transitive closure operator to encode
  20.862 +negative occurrences of non-well-founded ``linear inductive predicates,'' i.e.,
  20.863 +inductive predicates for which each the predicate occurs in at most one
  20.864 +assumption of each introduction rule. For example:
  20.865 +
  20.866 +\prew
  20.867 +\textbf{inductive} \textit{odd} \textbf{where} \\
  20.868 +``$\textit{odd}~1$'' $\,\mid$ \\
  20.869 +``$\lbrakk \textit{odd}~m;\>\, \textit{even}~n\rbrakk \,\Longrightarrow\, \textit{odd}~(m + n)$'' \\[2\smallskipamount]
  20.870 +\textbf{lemma}~``$\textit{odd}~n \,\Longrightarrow\, \textit{odd}~(n - 2)$'' \\
  20.871 +\textbf{nitpick}~[\textit{card nat} = 10,\, \textit{show\_consts}] \\[2\smallskipamount]
  20.872 +\slshape Nitpick found a counterexample:
  20.873 +\\[2\smallskipamount]
  20.874 +\hbox{}\qquad Free variable: \nopagebreak \\
  20.875 +\hbox{}\qquad\qquad $n = 1$ \\
  20.876 +\hbox{}\qquad Constants: \nopagebreak \\
  20.877 +\hbox{}\qquad\qquad $\textit{even} = \{0, 2, 4, 6, 8, \unr\}$ \\
  20.878 +\hbox{}\qquad\qquad $\textit{odd}_{\textsl{base}} = \{1, \unr\}$ \\
  20.879 +\hbox{}\qquad\qquad $\textit{odd}_{\textsl{step}} = \!
  20.880 +\!\begin{aligned}[t]
  20.881 +  & \{(0, 0), (0, 2), (0, 4), (0, 6), (0, 8), (1, 1), (1, 3), (1, 5), \\[-2pt]
  20.882 +  & \phantom{\{} (1, 7), (1, 9), (2, 2), (2, 4), (2, 6), (2, 8), (3, 3),
  20.883 +       (3, 5), \\[-2pt]
  20.884 +  & \phantom{\{} (3, 7), (3, 9), (4, 4), (4, 6), (4, 8), (5, 5), (5, 7), (5, 9), \\[-2pt]
  20.885 +  & \phantom{\{} (6, 6), (6, 8), (7, 7), (7, 9), (8, 8), (9, 9), \unr\}\end{aligned}$ \\
  20.886 +\hbox{}\qquad\qquad $\textit{odd} \subseteq \{1, 3, 5, 7, 9, 8^\Q, \unr\}$
  20.887 +\postw
  20.888 +
  20.889 +\noindent
  20.890 +In the output, $\textit{odd}_{\textrm{base}}$ represents the base elements and
  20.891 +$\textit{odd}_{\textrm{step}}$ is a transition relation that computes new
  20.892 +elements from known ones. The set $\textit{odd}$ consists of all the values
  20.893 +reachable through the reflexive transitive closure of
  20.894 +$\textit{odd}_{\textrm{step}}$ starting with any element from
  20.895 +$\textit{odd}_{\textrm{base}}$, namely 1, 3, 5, 7, and 9. Using Kodkod's
  20.896 +transitive closure to encode linear predicates is normally either more thorough
  20.897 +or more efficient than unrolling (depending on the value of \textit{iter}), but
  20.898 +for those cases where it isn't you can disable it by passing the
  20.899 +\textit{dont\_star\_linear\_preds} option.
  20.900 +
  20.901 +\subsection{Coinductive Datatypes}
  20.902 +\label{coinductive-datatypes}
  20.903 +
  20.904 +While Isabelle regrettably lacks a high-level mechanism for defining coinductive
  20.905 +datatypes, the \textit{Coinductive\_List} theory provides a coinductive ``lazy
  20.906 +list'' datatype, $'a~\textit{llist}$, defined the hard way. Nitpick supports
  20.907 +these lazy lists seamlessly and provides a hook, described in
  20.908 +\S\ref{registration-of-coinductive-datatypes}, to register custom coinductive
  20.909 +datatypes.
  20.910 +
  20.911 +(Co)intuitively, a coinductive datatype is similar to an inductive datatype but
  20.912 +allows infinite objects. Thus, the infinite lists $\textit{ps}$ $=$ $[a, a, a,
  20.913 +\ldots]$, $\textit{qs}$ $=$ $[a, b, a, b, \ldots]$, and $\textit{rs}$ $=$ $[0,
  20.914 +1, 2, 3, \ldots]$ can be defined as lazy lists using the
  20.915 +$\textit{LNil}\mathbin{\Colon}{'}a~\textit{llist}$ and
  20.916 +$\textit{LCons}\mathbin{\Colon}{'}a \mathbin{\Rightarrow} {'}a~\textit{llist}
  20.917 +\mathbin{\Rightarrow} {'}a~\textit{llist}$ constructors.
  20.918 +
  20.919 +Although it is otherwise no friend of infinity, Nitpick can find counterexamples
  20.920 +involving cyclic lists such as \textit{ps} and \textit{qs} above as well as
  20.921 +finite lists:
  20.922 +
  20.923 +\prew
  20.924 +\textbf{lemma} ``$\textit{xs} \not= \textit{LCons}~a~\textit{xs}$'' \\
  20.925 +\textbf{nitpick} \\[2\smallskipamount]
  20.926 +\slshape Nitpick found a counterexample for {\itshape card}~$'a$ = 1: \\[2\smallskipamount]
  20.927 +\hbox{}\qquad Free variables: \nopagebreak \\
  20.928 +\hbox{}\qquad\qquad $\textit{a} = a_1$ \\
  20.929 +\hbox{}\qquad\qquad $\textit{xs} = \textsl{THE}~\omega.\; \omega = \textit{LCons}~a_1~\omega$
  20.930 +\postw
  20.931 +
  20.932 +The notation $\textrm{THE}~\omega.\; \omega = t(\omega)$ stands
  20.933 +for the infinite term $t(t(t(\ldots)))$. Hence, \textit{xs} is simply the
  20.934 +infinite list $[a_1, a_1, a_1, \ldots]$.
  20.935 +
  20.936 +The next example is more interesting:
  20.937 +
  20.938 +\prew
  20.939 +\textbf{lemma}~``$\lbrakk\textit{xs} = \textit{LCons}~a~\textit{xs};\>\,
  20.940 +\textit{ys} = \textit{iterates}~(\lambda b.\> a)~b\rbrakk \,\Longrightarrow\, \textit{xs} = \textit{ys}$'' \\
  20.941 +\textbf{nitpick} [\textit{verbose}] \\[2\smallskipamount]
  20.942 +\slshape The type ``\kern1pt$'a$'' passed the monotonicity test. Nitpick might be able to skip
  20.943 +some scopes. \\[2\smallskipamount]
  20.944 +Trying 8 scopes: \\
  20.945 +\hbox{}\qquad \textit{card} $'a$~= 1, \textit{card} ``\kern1pt$'a~\textit{list}$''~= 1,
  20.946 +and \textit{bisim\_depth}~= 0. \\
  20.947 +\hbox{}\qquad $\qquad\vdots$ \\[.5\smallskipamount]
  20.948 +\hbox{}\qquad \textit{card} $'a$~= 8, \textit{card} ``\kern1pt$'a~\textit{list}$''~= 8,
  20.949 +and \textit{bisim\_depth}~= 7. \\[2\smallskipamount]
  20.950 +Nitpick found a counterexample for {\itshape card}~$'a$ = 2,
  20.951 +\textit{card}~``\kern1pt$'a~\textit{list}$''~= 2, and \textit{bisim\_\allowbreak
  20.952 +depth}~= 1:
  20.953 +\\[2\smallskipamount]
  20.954 +\hbox{}\qquad Free variables: \nopagebreak \\
  20.955 +\hbox{}\qquad\qquad $\textit{a} = a_2$ \\
  20.956 +\hbox{}\qquad\qquad $\textit{b} = a_1$ \\
  20.957 +\hbox{}\qquad\qquad $\textit{xs} = \textsl{THE}~\omega.\; \omega = \textit{LCons}~a_2~\omega$ \\
  20.958 +\hbox{}\qquad\qquad $\textit{ys} = \textit{LCons}~a_1~(\textsl{THE}~\omega.\; \omega = \textit{LCons}~a_2~\omega)$ \\[2\smallskipamount]
  20.959 +Total time: 726 ms.
  20.960 +\postw
  20.961 +
  20.962 +The lazy list $\textit{xs}$ is simply $[a_2, a_2, a_2, \ldots]$, whereas
  20.963 +$\textit{ys}$ is $[a_1, a_2, a_2, a_2, \ldots]$, i.e., a lasso-shaped list with
  20.964 +$[a_1]$ as its stem and $[a_2]$ as its cycle. In general, the list segment
  20.965 +within the scope of the {THE} binder corresponds to the lasso's cycle, whereas
  20.966 +the segment leading to the binder is the stem.
  20.967 +
  20.968 +A salient property of coinductive datatypes is that two objects are considered
  20.969 +equal if and only if they lead to the same observations. For example, the lazy
  20.970 +lists $\textrm{THE}~\omega.\; \omega =
  20.971 +\textit{LCons}~a~(\textit{LCons}~b~\omega)$ and
  20.972 +$\textit{LCons}~a~(\textrm{THE}~\omega.\; \omega =
  20.973 +\textit{LCons}~b~(\textit{LCons}~a~\omega))$ are identical, because both lead
  20.974 +to the sequence of observations $a$, $b$, $a$, $b$, \hbox{\ldots} (or,
  20.975 +equivalently, both encode the infinite list $[a, b, a, b, \ldots]$). This
  20.976 +concept of equality for coinductive datatypes is called bisimulation and is
  20.977 +defined coinductively.
  20.978 +
  20.979 +Internally, Nitpick encodes the coinductive bisimilarity predicate as part of
  20.980 +the Kodkod problem to ensure that distinct objects lead to different
  20.981 +observations. This precaution is somewhat expensive and often unnecessary, so it
  20.982 +can be disabled by setting the \textit{bisim\_depth} option to $-1$. The
  20.983 +bisimilarity check is then performed \textsl{after} the counterexample has been
  20.984 +found to ensure correctness. If this after-the-fact check fails, the
  20.985 +counterexample is tagged as ``likely genuine'' and Nitpick recommends to try
  20.986 +again with \textit{bisim\_depth} set to a nonnegative integer. Disabling the
  20.987 +check for the previous example saves approximately 150~milli\-seconds; the speed
  20.988 +gains can be more significant for larger scopes.
  20.989 +
  20.990 +The next formula illustrates the need for bisimilarity (either as a Kodkod
  20.991 +predicate or as an after-the-fact check) to prevent spurious counterexamples:
  20.992 +
  20.993 +\prew
  20.994 +\textbf{lemma} ``$\lbrakk xs = \textit{LCons}~a~\textit{xs};\>\, \textit{ys} = \textit{LCons}~a~\textit{ys}\rbrakk
  20.995 +\,\Longrightarrow\, \textit{xs} = \textit{ys}$'' \\
  20.996 +\textbf{nitpick} [\textit{bisim\_depth} = $-1$,\, \textit{show\_datatypes}] \\[2\smallskipamount]
  20.997 +\slshape Nitpick found a likely genuine counterexample for $\textit{card}~'a$ = 2: \\[2\smallskipamount]
  20.998 +\hbox{}\qquad Free variables: \nopagebreak \\
  20.999 +\hbox{}\qquad\qquad $a = a_2$ \\
 20.1000 +\hbox{}\qquad\qquad $\textit{xs} = \textsl{THE}~\omega.\; \omega =
 20.1001 +\textit{LCons}~a_2~\omega$ \\
 20.1002 +\hbox{}\qquad\qquad $\textit{ys} = \textsl{THE}~\omega.\; \omega = \textit{LCons}~a_2~\omega$ \\
 20.1003 +\hbox{}\qquad Codatatype:\strut \nopagebreak \\
 20.1004 +\hbox{}\qquad\qquad $'a~\textit{llist} =
 20.1005 +\{\!\begin{aligned}[t]
 20.1006 +  & \textsl{THE}~\omega.\; \omega = \textit{LCons}~a_2~\omega, \\[-2pt]
 20.1007 +  & \textsl{THE}~\omega.\; \omega = \textit{LCons}~a_2~\omega,\> \unr\}\end{aligned}$
 20.1008 +\\[2\smallskipamount]
 20.1009 +Try again with ``\textit{bisim\_depth}'' set to a nonnegative value to confirm
 20.1010 +that the counterexample is genuine. \\[2\smallskipamount]
 20.1011 +{\upshape\textbf{nitpick}} \\[2\smallskipamount]
 20.1012 +\slshape Nitpick found no counterexample.
 20.1013 +\postw
 20.1014 +
 20.1015 +In the first \textbf{nitpick} invocation, the after-the-fact check discovered 
 20.1016 +that the two known elements of type $'a~\textit{llist}$ are bisimilar.
 20.1017 +
 20.1018 +A compromise between leaving out the bisimilarity predicate from the Kodkod
 20.1019 +problem and performing the after-the-fact check is to specify a lower
 20.1020 +nonnegative \textit{bisim\_depth} value than the default one provided by
 20.1021 +Nitpick. In general, a value of $K$ means that Nitpick will require all lists to
 20.1022 +be distinguished from each other by their prefixes of length $K$. Be aware that
 20.1023 +setting $K$ to a too low value can overconstrain Nitpick, preventing it from
 20.1024 +finding any counterexamples.
 20.1025 +
 20.1026 +\subsection{Boxing}
 20.1027 +\label{boxing}
 20.1028 +
 20.1029 +Nitpick normally maps function and product types directly to the corresponding
 20.1030 +Kodkod concepts. As a consequence, if $'a$ has cardinality 3 and $'b$ has
 20.1031 +cardinality 4, then $'a \times {'}b$ has cardinality 12 ($= 4 \times 3$) and $'a
 20.1032 +\Rightarrow {'}b$ has cardinality 64 ($= 4^3$). In some circumstances, it pays
 20.1033 +off to treat these types in the same way as plain datatypes, by approximating
 20.1034 +them by a subset of a given cardinality. This technique is called ``boxing'' and
 20.1035 +is particularly useful for functions passed as arguments to other functions, for
 20.1036 +high-arity functions, and for large tuples. Under the hood, boxing involves
 20.1037 +wrapping occurrences of the types $'a \times {'}b$ and $'a \Rightarrow {'}b$ in
 20.1038 +isomorphic datatypes, as can be seen by enabling the \textit{debug} option.
 20.1039 +
 20.1040 +To illustrate boxing, we consider a formalization of $\lambda$-terms represented
 20.1041 +using de Bruijn's notation:
 20.1042 +
 20.1043 +\prew
 20.1044 +\textbf{datatype} \textit{tm} = \textit{Var}~\textit{nat}~$\mid$~\textit{Lam}~\textit{tm} $\mid$ \textit{App~tm~tm}
 20.1045 +\postw
 20.1046 +
 20.1047 +The $\textit{lift}~t~k$ function increments all variables with indices greater
 20.1048 +than or equal to $k$ by one:
 20.1049 +
 20.1050 +\prew
 20.1051 +\textbf{primrec} \textit{lift} \textbf{where} \\
 20.1052 +``$\textit{lift}~(\textit{Var}~j)~k = \textit{Var}~(\textrm{if}~j < k~\textrm{then}~j~\textrm{else}~j + 1)$'' $\mid$ \\
 20.1053 +``$\textit{lift}~(\textit{Lam}~t)~k = \textit{Lam}~(\textit{lift}~t~(k + 1))$'' $\mid$ \\
 20.1054 +``$\textit{lift}~(\textit{App}~t~u)~k = \textit{App}~(\textit{lift}~t~k)~(\textit{lift}~u~k)$''
 20.1055 +\postw
 20.1056 +
 20.1057 +The $\textit{loose}~t~k$ predicate returns \textit{True} if and only if
 20.1058 +term $t$ has a loose variable with index $k$ or more:
 20.1059 +
 20.1060 +\prew
 20.1061 +\textbf{primrec}~\textit{loose} \textbf{where} \\
 20.1062 +``$\textit{loose}~(\textit{Var}~j)~k = (j \ge k)$'' $\mid$ \\
 20.1063 +``$\textit{loose}~(\textit{Lam}~t)~k = \textit{loose}~t~(\textit{Suc}~k)$'' $\mid$ \\
 20.1064 +``$\textit{loose}~(\textit{App}~t~u)~k = (\textit{loose}~t~k \mathrel{\lor} \textit{loose}~u~k)$''
 20.1065 +\postw
 20.1066 +
 20.1067 +Next, the $\textit{subst}~\sigma~t$ function applies the substitution $\sigma$
 20.1068 +on $t$:
 20.1069 +
 20.1070 +\prew
 20.1071 +\textbf{primrec}~\textit{subst} \textbf{where} \\
 20.1072 +``$\textit{subst}~\sigma~(\textit{Var}~j) = \sigma~j$'' $\mid$ \\
 20.1073 +``$\textit{subst}~\sigma~(\textit{Lam}~t) = {}$\phantom{''} \\
 20.1074 +\phantom{``}$\textit{Lam}~(\textit{subst}~(\lambda n.\> \textrm{case}~n~\textrm{of}~0 \Rightarrow \textit{Var}~0 \mid \textit{Suc}~m \Rightarrow \textit{lift}~(\sigma~m)~1)~t)$'' $\mid$ \\
 20.1075 +``$\textit{subst}~\sigma~(\textit{App}~t~u) = \textit{App}~(\textit{subst}~\sigma~t)~(\textit{subst}~\sigma~u)$''
 20.1076 +\postw
 20.1077 +
 20.1078 +A substitution is a function that maps variable indices to terms. Observe that
 20.1079 +$\sigma$ is a function passed as argument and that Nitpick can't optimize it
 20.1080 +away, because the recursive call for the \textit{Lam} case involves an altered
 20.1081 +version. Also notice the \textit{lift} call, which increments the variable
 20.1082 +indices when moving under a \textit{Lam}.
 20.1083 +
 20.1084 +A reasonable property to expect of substitution is that it should leave closed
 20.1085 +terms unchanged. Alas, even this simple property does not hold:
 20.1086 +
 20.1087 +\pre
 20.1088 +\textbf{lemma}~``$\lnot\,\textit{loose}~t~0 \,\Longrightarrow\, \textit{subst}~\sigma~t = t$'' \\
 20.1089 +\textbf{nitpick} [\textit{verbose}] \\[2\smallskipamount]
 20.1090 +\slshape
 20.1091 +Trying 8 scopes: \nopagebreak \\
 20.1092 +\hbox{}\qquad \textit{card~nat}~= 1, \textit{card tm}~= 1, and \textit{card} ``$\textit{nat} \Rightarrow \textit{tm}$'' = 1; \\
 20.1093 +\hbox{}\qquad \textit{card~nat}~= 2, \textit{card tm}~= 2, and \textit{card} ``$\textit{nat} \Rightarrow \textit{tm}$'' = 2; \\
 20.1094 +\hbox{}\qquad $\qquad\vdots$ \\[.5\smallskipamount]
 20.1095 +\hbox{}\qquad \textit{card~nat}~= 8, \textit{card tm}~= 8, and \textit{card} ``$\textit{nat} \Rightarrow \textit{tm}$'' = 8. \\[2\smallskipamount]
 20.1096 +Nitpick found a counterexample for \textit{card~nat}~= 6, \textit{card~tm}~= 6,
 20.1097 +and \textit{card}~``$\textit{nat} \Rightarrow \textit{tm}$''~= 6: \\[2\smallskipamount]
 20.1098 +\hbox{}\qquad Free variables: \nopagebreak \\
 20.1099 +\hbox{}\qquad\qquad $\sigma = \undef(\!\begin{aligned}[t]
 20.1100 +& 0 := \textit{Var}~0,\>
 20.1101 +  1 := \textit{Var}~0,\>
 20.1102 +  2 := \textit{Var}~0, \\[-2pt]
 20.1103 +& 3 := \textit{Var}~0,\>
 20.1104 +  4 := \textit{Var}~0,\>
 20.1105 +  5 := \textit{Var}~0)\end{aligned}$ \\
 20.1106 +\hbox{}\qquad\qquad $t = \textit{Lam}~(\textit{Lam}~(\textit{Var}~1))$ \\[2\smallskipamount]
 20.1107 +Total time: $4679$ ms.
 20.1108 +\postw
 20.1109 +
 20.1110 +Using \textit{eval}, we find out that $\textit{subst}~\sigma~t =
 20.1111 +\textit{Lam}~(\textit{Lam}~(\textit{Var}~0))$. Using the traditional
 20.1112 +$\lambda$-term notation, $t$~is
 20.1113 +$\lambda x\, y.\> x$ whereas $\textit{subst}~\sigma~t$ is $\lambda x\, y.\> y$.
 20.1114 +The bug is in \textit{subst}: The $\textit{lift}~(\sigma~m)~1$ call should be
 20.1115 +replaced with $\textit{lift}~(\sigma~m)~0$.
 20.1116 +
 20.1117 +An interesting aspect of Nitpick's verbose output is that it assigned inceasing
 20.1118 +cardinalities from 1 to 8 to the type $\textit{nat} \Rightarrow \textit{tm}$.
 20.1119 +For the formula of interest, knowing 6 values of that type was enough to find
 20.1120 +the counterexample. Without boxing, $46\,656$ ($= 6^6$) values must be
 20.1121 +considered, a hopeless undertaking:
 20.1122 +
 20.1123 +\prew
 20.1124 +\textbf{nitpick} [\textit{dont\_box}] \\[2\smallskipamount]
 20.1125 +{\slshape Nitpick ran out of time after checking 4 of 8 scopes.}
 20.1126 +\postw
 20.1127 +
 20.1128 +{\looseness=-1
 20.1129 +Boxing can be enabled or disabled globally or on a per-type basis using the
 20.1130 +\textit{box} option. Moreover, setting the cardinality of a function or
 20.1131 +product type implicitly enables boxing for that type. Nitpick usually performs
 20.1132 +reasonable choices about which types should be boxed, but option tweaking
 20.1133 +sometimes helps.
 20.1134 +
 20.1135 +}
 20.1136 +
 20.1137 +\subsection{Scope Monotonicity}
 20.1138 +\label{scope-monotonicity}
 20.1139 +
 20.1140 +The \textit{card} option (together with \textit{iter}, \textit{bisim\_depth},
 20.1141 +and \textit{max}) controls which scopes are actually tested. In general, to
 20.1142 +exhaust all models below a certain cardinality bound, the number of scopes that
 20.1143 +Nitpick must consider increases exponentially with the number of type variables
 20.1144 +(and \textbf{typedecl}'d types) occurring in the formula. Given the default
 20.1145 +cardinality specification of 1--8, no fewer than $8^4 = 4096$ scopes must be
 20.1146 +considered for a formula involving $'a$, $'b$, $'c$, and $'d$.
 20.1147 +
 20.1148 +Fortunately, many formulas exhibit a property called \textsl{scope
 20.1149 +monotonicity}, meaning that if the formula is falsifiable for a given scope,
 20.1150 +it is also falsifiable for all larger scopes \cite[p.~165]{jackson-2006}.
 20.1151 +
 20.1152 +Consider the formula
 20.1153 +
 20.1154 +\prew
 20.1155 +\textbf{lemma}~``$\textit{length~xs} = \textit{length~ys} \,\Longrightarrow\, \textit{rev}~(\textit{zip~xs~ys}) = \textit{zip~xs}~(\textit{rev~ys})$''
 20.1156 +\postw
 20.1157 +
 20.1158 +where \textit{xs} is of type $'a~\textit{list}$ and \textit{ys} is of type
 20.1159 +$'b~\textit{list}$. A priori, Nitpick would need to consider 512 scopes to
 20.1160 +exhaust the specification \textit{card}~= 1--8. However, our intuition tells us
 20.1161 +that any counterexample found with a small scope would still be a counterexample
 20.1162 +in a larger scope---by simply ignoring the fresh $'a$ and $'b$ values provided
 20.1163 +by the larger scope. Nitpick comes to the same conclusion after a careful
 20.1164 +inspection of the formula and the relevant definitions:
 20.1165 +
 20.1166 +\prew
 20.1167 +\textbf{nitpick}~[\textit{verbose}] \\[2\smallskipamount]
 20.1168 +\slshape
 20.1169 +The types ``\kern1pt$'a$'' and ``\kern1pt$'b$'' passed the monotonicity test.
 20.1170 +Nitpick might be able to skip some scopes.
 20.1171 + \\[2\smallskipamount]
 20.1172 +Trying 8 scopes: \\
 20.1173 +\hbox{}\qquad \textit{card} $'a$~= 1, \textit{card} $'b$~= 1,
 20.1174 +\textit{card} \textit{nat}~= 1, \textit{card} ``$('a \times {'}b)$
 20.1175 +\textit{list}''~= 1, \\
 20.1176 +\hbox{}\qquad\quad \textit{card} ``\kern1pt$'a$ \textit{list}''~= 1, and
 20.1177 +\textit{card} ``\kern1pt$'b$ \textit{list}''~= 1. \\
 20.1178 +\hbox{}\qquad \textit{card} $'a$~= 2, \textit{card} $'b$~= 2,
 20.1179 +\textit{card} \textit{nat}~= 2, \textit{card} ``$('a \times {'}b)$
 20.1180 +\textit{list}''~= 2, \\
 20.1181 +\hbox{}\qquad\quad \textit{card} ``\kern1pt$'a$ \textit{list}''~= 2, and
 20.1182 +\textit{card} ``\kern1pt$'b$ \textit{list}''~= 2. \\
 20.1183 +\hbox{}\qquad $\qquad\vdots$ \\[.5\smallskipamount]
 20.1184 +\hbox{}\qquad \textit{card} $'a$~= 8, \textit{card} $'b$~= 8,
 20.1185 +\textit{card} \textit{nat}~= 8, \textit{card} ``$('a \times {'}b)$
 20.1186 +\textit{list}''~= 8, \\
 20.1187 +\hbox{}\qquad\quad \textit{card} ``\kern1pt$'a$ \textit{list}''~= 8, and
 20.1188 +\textit{card} ``\kern1pt$'b$ \textit{list}''~= 8.
 20.1189 +\\[2\smallskipamount]
 20.1190 +Nitpick found a counterexample for
 20.1191 +\textit{card} $'a$~= 5, \textit{card} $'b$~= 5,
 20.1192 +\textit{card} \textit{nat}~= 5, \textit{card} ``$('a \times {'}b)$
 20.1193 +\textit{list}''~= 5, \textit{card} ``\kern1pt$'a$ \textit{list}''~= 5, and
 20.1194 +\textit{card} ``\kern1pt$'b$ \textit{list}''~= 5:
 20.1195 +\\[2\smallskipamount]
 20.1196 +\hbox{}\qquad Free variables: \nopagebreak \\
 20.1197 +\hbox{}\qquad\qquad $\textit{xs} = [a_4, a_5]$ \\
 20.1198 +\hbox{}\qquad\qquad $\textit{ys} = [b_3, b_3]$ \\[2\smallskipamount]
 20.1199 +Total time: 1636 ms.
 20.1200 +\postw
 20.1201 +
 20.1202 +In theory, it should be sufficient to test a single scope:
 20.1203 +
 20.1204 +\prew
 20.1205 +\textbf{nitpick}~[\textit{card}~= 8]
 20.1206 +\postw
 20.1207 +
 20.1208 +However, this is often less efficient in practice and may lead to overly complex
 20.1209 +counterexamples.
 20.1210 +
 20.1211 +If the monotonicity check fails but we believe that the formula is monotonic (or
 20.1212 +we don't mind missing some counterexamples), we can pass the
 20.1213 +\textit{mono} option. To convince yourself that this option is risky,
 20.1214 +simply consider this example from \S\ref{skolemization}:
 20.1215 +
 20.1216 +\prew
 20.1217 +\textbf{lemma} ``$\exists g.\; \forall x\Colon 'b.~g~(f~x) = x
 20.1218 + \,\Longrightarrow\, \forall y\Colon {'}a.\; \exists x.~y = f~x$'' \\
 20.1219 +\textbf{nitpick} [\textit{mono}] \\[2\smallskipamount]
 20.1220 +{\slshape Nitpick found no counterexample.} \\[2\smallskipamount]
 20.1221 +\textbf{nitpick} \\[2\smallskipamount]
 20.1222 +\slshape
 20.1223 +Nitpick found a counterexample for \textit{card} $'a$~= 2 and \textit{card} $'b$~=~1: \\
 20.1224 +\hbox{}\qquad $\vdots$
 20.1225 +\postw
 20.1226 +
 20.1227 +(It turns out the formula holds if and only if $\textit{card}~'a \le
 20.1228 +\textit{card}~'b$.) Although this is rarely advisable, the automatic
 20.1229 +monotonicity checks can be disabled by passing \textit{non\_mono}
 20.1230 +(\S\ref{optimizations}).
 20.1231 +
 20.1232 +As insinuated in \S\ref{natural-numbers-and-integers} and
 20.1233 +\S\ref{inductive-datatypes}, \textit{nat}, \textit{int}, and inductive datatypes
 20.1234 +are normally monotonic and treated as such. The same is true for record types,
 20.1235 +\textit{rat}, \textit{real}, and some \textbf{typedef}'d types. Thus, given the
 20.1236 +cardinality specification 1--8, a formula involving \textit{nat}, \textit{int},
 20.1237 +\textit{int~list}, \textit{rat}, and \textit{rat~list} will lead Nitpick to
 20.1238 +consider only 8~scopes instead of $32\,768$.
 20.1239 +
 20.1240 +\section{Case Studies}
 20.1241 +\label{case-studies}
 20.1242 +
 20.1243 +As a didactic device, the previous section focused mostly on toy formulas whose
 20.1244 +validity can easily be assessed just by looking at the formula. We will now
 20.1245 +review two somewhat more realistic case studies that are within Nitpick's
 20.1246 +reach:\ a context-free grammar modeled by mutually inductive sets and a
 20.1247 +functional implementation of AA trees. The results presented in this
 20.1248 +section were produced with the following settings:
 20.1249 +
 20.1250 +\prew
 20.1251 +\textbf{nitpick\_params} [\textit{max\_potential}~= 0,\, \textit{max\_threads} = 2]
 20.1252 +\postw
 20.1253 +
 20.1254 +\subsection{A Context-Free Grammar}
 20.1255 +\label{a-context-free-grammar}
 20.1256 +
 20.1257 +Our first case study is taken from section 7.4 in the Isabelle tutorial
 20.1258 +\cite{isa-tutorial}. The following grammar, originally due to Hopcroft and
 20.1259 +Ullman, produces all strings with an equal number of $a$'s and $b$'s:
 20.1260 +
 20.1261 +\prew
 20.1262 +\begin{tabular}{@{}r@{$\;\,$}c@{$\;\,$}l@{}}
 20.1263 +$S$ & $::=$ & $\epsilon \mid bA \mid aB$ \\
 20.1264 +$A$ & $::=$ & $aS \mid bAA$ \\
 20.1265 +$B$ & $::=$ & $bS \mid aBB$
 20.1266 +\end{tabular}
 20.1267 +\postw
 20.1268 +
 20.1269 +The intuition behind the grammar is that $A$ generates all string with one more
 20.1270 +$a$ than $b$'s and $B$ generates all strings with one more $b$ than $a$'s.
 20.1271 +
 20.1272 +The alphabet consists exclusively of $a$'s and $b$'s:
 20.1273 +
 20.1274 +\prew
 20.1275 +\textbf{datatype} \textit{alphabet}~= $a$ $\mid$ $b$
 20.1276 +\postw
 20.1277 +
 20.1278 +Strings over the alphabet are represented by \textit{alphabet list}s.
 20.1279 +Nonterminals in the grammar become sets of strings. The production rules
 20.1280 +presented above can be expressed as a mutually inductive definition:
 20.1281 +
 20.1282 +\prew
 20.1283 +\textbf{inductive\_set} $S$ \textbf{and} $A$ \textbf{and} $B$ \textbf{where} \\
 20.1284 +\textit{R1}:\kern.4em ``$[] \in S$'' $\,\mid$ \\
 20.1285 +\textit{R2}:\kern.4em ``$w \in A\,\Longrightarrow\, b \mathbin{\#} w \in S$'' $\,\mid$ \\
 20.1286 +\textit{R3}:\kern.4em ``$w \in B\,\Longrightarrow\, a \mathbin{\#} w \in S$'' $\,\mid$ \\
 20.1287 +\textit{R4}:\kern.4em ``$w \in S\,\Longrightarrow\, a \mathbin{\#} w \in A$'' $\,\mid$ \\
 20.1288 +\textit{R5}:\kern.4em ``$w \in S\,\Longrightarrow\, b \mathbin{\#} w \in S$'' $\,\mid$ \\
 20.1289 +\textit{R6}:\kern.4em ``$\lbrakk v \in B;\> v \in B\rbrakk \,\Longrightarrow\, a \mathbin{\#} v \mathbin{@} w \in B$''
 20.1290 +\postw
 20.1291 +
 20.1292 +The conversion of the grammar into the inductive definition was done manually by
 20.1293 +Joe Blow, an underpaid undergraduate student. As a result, some errors might
 20.1294 +have sneaked in.
 20.1295 +
 20.1296 +Debugging faulty specifications is at the heart of Nitpick's \textsl{raison
 20.1297 +d'\^etre}. A good approach is to state desirable properties of the specification
 20.1298 +(here, that $S$ is exactly the set of strings over $\{a, b\}$ with as many $a$'s
 20.1299 +as $b$'s) and check them with Nitpick. If the properties are correctly stated,
 20.1300 +counterexamples will point to bugs in the specification. For our grammar
 20.1301 +example, we will proceed in two steps, separating the soundness and the
 20.1302 +completeness of the set $S$. First, soundness:
 20.1303 +
 20.1304 +\prew
 20.1305 +\textbf{theorem}~\textit{S\_sound}: \\
 20.1306 +``$w \in S \longrightarrow \textit{length}~[x\mathbin{\leftarrow} w.\; x = a] =
 20.1307 +  \textit{length}~[x\mathbin{\leftarrow} w.\; x = b]$'' \\
 20.1308 +\textbf{nitpick} \\[2\smallskipamount]
 20.1309 +\slshape Nitpick found a counterexample: \\[2\smallskipamount]
 20.1310 +\hbox{}\qquad Free variable: \nopagebreak \\
 20.1311 +\hbox{}\qquad\qquad $w = [b]$
 20.1312 +\postw
 20.1313 +
 20.1314 +It would seem that $[b] \in S$. How could this be? An inspection of the
 20.1315 +introduction rules reveals that the only rule with a right-hand side of the form
 20.1316 +$b \mathbin{\#} {\ldots} \in S$ that could have introduced $[b]$ into $S$ is
 20.1317 +\textit{R5}:
 20.1318 +
 20.1319 +\prew
 20.1320 +``$w \in S\,\Longrightarrow\, b \mathbin{\#} w \in S$''
 20.1321 +\postw
 20.1322 +
 20.1323 +On closer inspection, we can see that this rule is wrong. To match the
 20.1324 +production $B ::= bS$, the second $S$ should be a $B$. We fix the typo and try
 20.1325 +again:
 20.1326 +
 20.1327 +\prew
 20.1328 +\textbf{nitpick} \\[2\smallskipamount]
 20.1329 +\slshape Nitpick found a counterexample: \\[2\smallskipamount]
 20.1330 +\hbox{}\qquad Free variable: \nopagebreak \\
 20.1331 +\hbox{}\qquad\qquad $w = [a, a, b]$
 20.1332 +\postw
 20.1333 +
 20.1334 +Some detective work is necessary to find out what went wrong here. To get $[a,
 20.1335 +a, b] \in S$, we need $[a, b] \in B$ by \textit{R3}, which in turn can only come
 20.1336 +from \textit{R6}:
 20.1337 +
 20.1338 +\prew
 20.1339 +``$\lbrakk v \in B;\> v \in B\rbrakk \,\Longrightarrow\, a \mathbin{\#} v \mathbin{@} w \in B$''
 20.1340 +\postw
 20.1341 +
 20.1342 +Now, this formula must be wrong: The same assumption occurs twice, and the
 20.1343 +variable $w$ is unconstrained. Clearly, one of the two occurrences of $v$ in
 20.1344 +the assumptions should have been a $w$.
 20.1345 +
 20.1346 +With the correction made, we don't get any counterexample from Nitpick. Let's
 20.1347 +move on and check completeness:
 20.1348 +
 20.1349 +\prew
 20.1350 +\textbf{theorem}~\textit{S\_complete}: \\
 20.1351 +``$\textit{length}~[x\mathbin{\leftarrow} w.\; x = a] =
 20.1352 +   \textit{length}~[x\mathbin{\leftarrow} w.\; x = b]
 20.1353 +  \longrightarrow w \in S$'' \\
 20.1354 +\textbf{nitpick} \\[2\smallskipamount]
 20.1355 +\slshape Nitpick found a counterexample: \\[2\smallskipamount]
 20.1356 +\hbox{}\qquad Free variable: \nopagebreak \\
 20.1357 +\hbox{}\qquad\qquad $w = [b, b, a, a]$
 20.1358 +\postw
 20.1359 +
 20.1360 +Apparently, $[b, b, a, a] \notin S$, even though it has the same numbers of
 20.1361 +$a$'s and $b$'s. But since our inductive definition passed the soundness check,
 20.1362 +the introduction rules we have are probably correct. Perhaps we simply lack an
 20.1363 +introduction rule. Comparing the grammar with the inductive definition, our
 20.1364 +suspicion is confirmed: Joe Blow simply forgot the production $A ::= bAA$,
 20.1365 +without which the grammar cannot generate two or more $b$'s in a row. So we add
 20.1366 +the rule
 20.1367 +
 20.1368 +\prew
 20.1369 +``$\lbrakk v \in A;\> w \in A\rbrakk \,\Longrightarrow\, b \mathbin{\#} v \mathbin{@} w \in A$''
 20.1370 +\postw
 20.1371 +
 20.1372 +With this last change, we don't get any counterexamples from Nitpick for either
 20.1373 +soundness or completeness. We can even generalize our result to cover $A$ and
 20.1374 +$B$ as well:
 20.1375 +
 20.1376 +\prew
 20.1377 +\textbf{theorem} \textit{S\_A\_B\_sound\_and\_complete}: \\
 20.1378 +``$w \in S \longleftrightarrow \textit{length}~[x \mathbin{\leftarrow} w.\; x = a] = \textit{length}~[x \mathbin{\leftarrow} w.\; x = b]$'' \\
 20.1379 +``$w \in A \longleftrightarrow \textit{length}~[x \mathbin{\leftarrow} w.\; x = a] = \textit{length}~[x \mathbin{\leftarrow} w.\; x = b] + 1$'' \\
 20.1380 +``$w \in B \longleftrightarrow \textit{length}~[x \mathbin{\leftarrow} w.\; x = b] = \textit{length}~[x \mathbin{\leftarrow} w.\; x = a] + 1$'' \\
 20.1381 +\textbf{nitpick} \\[2\smallskipamount]
 20.1382 +\slshape Nitpick found no counterexample.
 20.1383 +\postw
 20.1384 +
 20.1385 +\subsection{AA Trees}
 20.1386 +\label{aa-trees}
 20.1387 +
 20.1388 +AA trees are a kind of balanced trees discovered by Arne Andersson that provide
 20.1389 +similar performance to red-black trees, but with a simpler implementation
 20.1390 +\cite{andersson-1993}. They can be used to store sets of elements equipped with
 20.1391 +a total order $<$. We start by defining the datatype and some basic extractor
 20.1392 +functions:
 20.1393 +
 20.1394 +\prew
 20.1395 +\textbf{datatype} $'a$~\textit{tree} = $\Lambda$ $\mid$ $N$ ``\kern1pt$'a\Colon \textit{linorder}$'' \textit{nat} ``\kern1pt$'a$ \textit{tree}'' ``\kern1pt$'a$ \textit{tree}''  \\[2\smallskipamount]
 20.1396 +\textbf{primrec} \textit{data} \textbf{where} \\
 20.1397 +``$\textit{data}~\Lambda = \undef$'' $\,\mid$ \\
 20.1398 +``$\textit{data}~(N~x~\_~\_~\_) = x$'' \\[2\smallskipamount]
 20.1399 +\textbf{primrec} \textit{dataset} \textbf{where} \\
 20.1400 +``$\textit{dataset}~\Lambda = \{\}$'' $\,\mid$ \\
 20.1401 +``$\textit{dataset}~(N~x~\_~t~u) = \{x\} \cup \textit{dataset}~t \mathrel{\cup} \textit{dataset}~u$'' \\[2\smallskipamount]
 20.1402 +\textbf{primrec} \textit{level} \textbf{where} \\
 20.1403 +``$\textit{level}~\Lambda = 0$'' $\,\mid$ \\
 20.1404 +``$\textit{level}~(N~\_~k~\_~\_) = k$'' \\[2\smallskipamount]
 20.1405 +\textbf{primrec} \textit{left} \textbf{where} \\
 20.1406 +``$\textit{left}~\Lambda = \Lambda$'' $\,\mid$ \\
 20.1407 +``$\textit{left}~(N~\_~\_~t~\_) = t$'' \\[2\smallskipamount]
 20.1408 +\textbf{primrec} \textit{right} \textbf{where} \\
 20.1409 +``$\textit{right}~\Lambda = \Lambda$'' $\,\mid$ \\
 20.1410 +``$\textit{right}~(N~\_~\_~\_~u) = u$''
 20.1411 +\postw
 20.1412 +
 20.1413 +The wellformedness criterion for AA trees is fairly complex. Wikipedia states it
 20.1414 +as follows \cite{wikipedia-2009-aa-trees}:
 20.1415 +
 20.1416 +\kern.2\parskip %% TYPESETTING
 20.1417 +
 20.1418 +\pre
 20.1419 +Each node has a level field, and the following invariants must remain true for
 20.1420 +the tree to be valid:
 20.1421 +
 20.1422 +\raggedright
 20.1423 +
 20.1424 +\kern-.4\parskip %% TYPESETTING
 20.1425 +
 20.1426 +\begin{enum}
 20.1427 +\item[]
 20.1428 +\begin{enum}
 20.1429 +\item[1.] The level of a leaf node is one.
 20.1430 +\item[2.] The level of a left child is strictly less than that of its parent.
 20.1431 +\item[3.] The level of a right child is less than or equal to that of its parent.
 20.1432 +\item[4.] The level of a right grandchild is strictly less than that of its grandparent.
 20.1433 +\item[5.] Every node of level greater than one must have two children.
 20.1434 +\end{enum}
 20.1435 +\end{enum}
 20.1436 +\post
 20.1437 +
 20.1438 +\kern.4\parskip %% TYPESETTING
 20.1439 +
 20.1440 +The \textit{wf} predicate formalizes this description:
 20.1441 +
 20.1442 +\prew
 20.1443 +\textbf{primrec} \textit{wf} \textbf{where} \\
 20.1444 +``$\textit{wf}~\Lambda = \textit{True}$'' $\,\mid$ \\
 20.1445 +``$\textit{wf}~(N~\_~k~t~u) =$ \\
 20.1446 +\phantom{``}$(\textrm{if}~t = \Lambda~\textrm{then}$ \\
 20.1447 +\phantom{``$(\quad$}$k = 1 \mathrel{\land} (u = \Lambda \mathrel{\lor} (\textit{level}~u = 1 \mathrel{\land} \textit{left}~u = \Lambda \mathrel{\land} \textit{right}~u = \Lambda))$ \\
 20.1448 +\phantom{``$($}$\textrm{else}$ \\
 20.1449 +\hbox{}\phantom{``$(\quad$}$\textit{wf}~t \mathrel{\land} \textit{wf}~u
 20.1450 +\mathrel{\land} u \not= \Lambda \mathrel{\land} \textit{level}~t < k
 20.1451 +\mathrel{\land} \textit{level}~u \le k$ \\
 20.1452 +\hbox{}\phantom{``$(\quad$}${\land}\; \textit{level}~(\textit{right}~u) < k)$''
 20.1453 +\postw
 20.1454 +
 20.1455 +Rebalancing the tree upon insertion and removal of elements is performed by two
 20.1456 +auxiliary functions called \textit{skew} and \textit{split}, defined below:
 20.1457 +
 20.1458 +\prew
 20.1459 +\textbf{primrec} \textit{skew} \textbf{where} \\
 20.1460 +``$\textit{skew}~\Lambda = \Lambda$'' $\,\mid$ \\
 20.1461 +``$\textit{skew}~(N~x~k~t~u) = {}$ \\
 20.1462 +\phantom{``}$(\textrm{if}~t \not= \Lambda \mathrel{\land} k =
 20.1463 +\textit{level}~t~\textrm{then}$ \\
 20.1464 +\phantom{``(\quad}$N~(\textit{data}~t)~k~(\textit{left}~t)~(N~x~k~
 20.1465 +(\textit{right}~t)~u)$ \\
 20.1466 +\phantom{``(}$\textrm{else}$ \\
 20.1467 +\phantom{``(\quad}$N~x~k~t~u)$''
 20.1468 +\postw
 20.1469 +
 20.1470 +\prew
 20.1471 +\textbf{primrec} \textit{split} \textbf{where} \\
 20.1472 +``$\textit{split}~\Lambda = \Lambda$'' $\,\mid$ \\
 20.1473 +``$\textit{split}~(N~x~k~t~u) = {}$ \\
 20.1474 +\phantom{``}$(\textrm{if}~u \not= \Lambda \mathrel{\land} k =
 20.1475 +\textit{level}~(\textit{right}~u)~\textrm{then}$ \\
 20.1476 +\phantom{``(\quad}$N~(\textit{data}~u)~(\textit{Suc}~k)~
 20.1477 +(N~x~k~t~(\textit{left}~u))~(\textit{right}~u)$ \\
 20.1478 +\phantom{``(}$\textrm{else}$ \\
 20.1479 +\phantom{``(\quad}$N~x~k~t~u)$''
 20.1480 +\postw
 20.1481 +
 20.1482 +Performing a \textit{skew} or a \textit{split} should have no impact on the set
 20.1483 +of elements stored in the tree:
 20.1484 +
 20.1485 +\prew
 20.1486 +\textbf{theorem}~\textit{dataset\_skew\_split}:\\
 20.1487 +``$\textit{dataset}~(\textit{skew}~t) = \textit{dataset}~t$'' \\
 20.1488 +``$\textit{dataset}~(\textit{split}~t) = \textit{dataset}~t$'' \\
 20.1489 +\textbf{nitpick} \\[2\smallskipamount]
 20.1490 +{\slshape Nitpick ran out of time after checking 7 of 8 scopes.}
 20.1491 +\postw
 20.1492 +
 20.1493 +Furthermore, applying \textit{skew} or \textit{split} to a well-formed tree
 20.1494 +should not alter the tree:
 20.1495 +
 20.1496 +\prew
 20.1497 +\textbf{theorem}~\textit{wf\_skew\_split}:\\
 20.1498 +``$\textit{wf}~t\,\Longrightarrow\, \textit{skew}~t = t$'' \\
 20.1499 +``$\textit{wf}~t\,\Longrightarrow\, \textit{split}~t = t$'' \\
 20.1500 +\textbf{nitpick} \\[2\smallskipamount]
 20.1501 +{\slshape Nitpick found no counterexample.}
 20.1502 +\postw
 20.1503 +
 20.1504 +Insertion is implemented recursively. It preserves the sort order:
 20.1505 +
 20.1506 +\prew
 20.1507 +\textbf{primrec}~\textit{insort} \textbf{where} \\
 20.1508 +``$\textit{insort}~\Lambda~x = N~x~1~\Lambda~\Lambda$'' $\,\mid$ \\
 20.1509 +``$\textit{insort}~(N~y~k~t~u)~x =$ \\
 20.1510 +\phantom{``}$({*}~(\textit{split} \circ \textit{skew})~{*})~(N~y~k~(\textrm{if}~x < y~\textrm{then}~\textit{insort}~t~x~\textrm{else}~t)$ \\
 20.1511 +\phantom{``$({*}~(\textit{split} \circ \textit{skew})~{*})~(N~y~k~$}$(\textrm{if}~x > y~\textrm{then}~\textit{insort}~u~x~\textrm{else}~u))$''
 20.1512 +\postw
 20.1513 +
 20.1514 +Notice that we deliberately commented out the application of \textit{skew} and
 20.1515 +\textit{split}. Let's see if this causes any problems:
 20.1516 +
 20.1517 +\prew
 20.1518 +\textbf{theorem}~\textit{wf\_insort}:\kern.4em ``$\textit{wf}~t\,\Longrightarrow\, \textit{wf}~(\textit{insort}~t~x)$'' \\
 20.1519 +\textbf{nitpick} \\[2\smallskipamount]
 20.1520 +\slshape Nitpick found a counterexample for \textit{card} $'a$ = 4: \\[2\smallskipamount]
 20.1521 +\hbox{}\qquad Free variables: \nopagebreak \\
 20.1522 +\hbox{}\qquad\qquad $t = N~a_3~1~\Lambda~\Lambda$ \\
 20.1523 +\hbox{}\qquad\qquad $x = a_4$ \\[2\smallskipamount]
 20.1524 +Hint: Maybe you forgot a type constraint?
 20.1525 +\postw
 20.1526 +
 20.1527 +It's hard to see why this is a counterexample. The hint is of no help here. To
 20.1528 +improve readability, we will restrict the theorem to \textit{nat}, so that we
 20.1529 +don't need to look up the value of the $\textit{op}~{<}$ constant to find out
 20.1530 +which element is smaller than the other. In addition, we will tell Nitpick to
 20.1531 +display the value of $\textit{insort}~t~x$ using the \textit{eval} option. This
 20.1532 +gives
 20.1533 +
 20.1534 +\prew
 20.1535 +\textbf{theorem} \textit{wf\_insort\_nat}:\kern.4em ``$\textit{wf}~t\,\Longrightarrow\, \textit{wf}~(\textit{insort}~t~(x\Colon\textit{nat}))$'' \\
 20.1536 +\textbf{nitpick} [\textit{eval} = ``$\textit{insort}~t~x$''] \\[2\smallskipamount]
 20.1537 +\slshape Nitpick found a counterexample: \\[2\smallskipamount]
 20.1538 +\hbox{}\qquad Free variables: \nopagebreak \\
 20.1539 +\hbox{}\qquad\qquad $t = N~1~1~\Lambda~\Lambda$ \\
 20.1540 +\hbox{}\qquad\qquad $x = 0$ \\
 20.1541 +\hbox{}\qquad Evaluated term: \\
 20.1542 +\hbox{}\qquad\qquad $\textit{insort}~t~x = N~1~1~(N~0~1~\Lambda~\Lambda)~\Lambda$
 20.1543 +\postw
 20.1544 +
 20.1545 +Nitpick's output reveals that the element $0$ was added as a left child of $1$,
 20.1546 +where both have a level of 1. This violates the second AA tree invariant, which
 20.1547 +states that a left child's level must be less than its parent's. This shouldn't
 20.1548 +come as a surprise, considering that we commented out the tree rebalancing code.
 20.1549 +Reintroducing the code seems to solve the problem:
 20.1550 +
 20.1551 +\prew
 20.1552 +\textbf{theorem}~\textit{wf\_insort}:\kern.4em ``$\textit{wf}~t\,\Longrightarrow\, \textit{wf}~(\textit{insort}~t~x)$'' \\
 20.1553 +\textbf{nitpick} \\[2\smallskipamount]
 20.1554 +{\slshape Nitpick ran out of time after checking 6 of 8 scopes.}
 20.1555 +\postw
 20.1556 +
 20.1557 +Insertion should transform the set of elements represented by the tree in the
 20.1558 +obvious way:
 20.1559 +
 20.1560 +\prew
 20.1561 +\textbf{theorem} \textit{dataset\_insort}:\kern.4em
 20.1562 +``$\textit{dataset}~(\textit{insort}~t~x) = \{x\} \cup \textit{dataset}~t$'' \\
 20.1563 +\textbf{nitpick} \\[2\smallskipamount]
 20.1564 +{\slshape Nitpick ran out of time after checking 5 of 8 scopes.}
 20.1565 +\postw
 20.1566 +
 20.1567 +We could continue like this and sketch a complete theory of AA trees without
 20.1568 +performing a single proof. Once the definitions and main theorems are in place
 20.1569 +and have been thoroughly tested using Nitpick, we could start working on the
 20.1570 +proofs. Developing theories this way usually saves time, because faulty theorems
 20.1571 +and definitions are discovered much earlier in the process.
 20.1572 +
 20.1573 +\section{Option Reference}
 20.1574 +\label{option-reference}
 20.1575 +
 20.1576 +\def\flushitem#1{\item[]\noindent\kern-\leftmargin \textbf{#1}}
 20.1577 +\def\qty#1{$\left<\textit{#1}\right>$}
 20.1578 +\def\qtybf#1{$\mathbf{\left<\textbf{\textit{#1}}\right>}$}
 20.1579 +\def\optrue#1#2{\flushitem{\textit{#1} $\bigl[$= \qtybf{bool}$\bigr]$\quad [\textit{true}]\hfill (neg.: \textit{#2})}\nopagebreak\\[\parskip]}
 20.1580 +\def\opfalse#1#2{\flushitem{\textit{#1} $\bigl[$= \qtybf{bool}$\bigr]$\quad [\textit{false}]\hfill (neg.: \textit{#2})}\nopagebreak\\[\parskip]}
 20.1581 +\def\opsmart#1#2{\flushitem{\textit{#1} $\bigl[$= \qtybf{bool\_or\_smart}$\bigr]$\quad [\textit{smart}]\hfill (neg.: \textit{#2})}\nopagebreak\\[\parskip]}
 20.1582 +\def\ops#1#2{\flushitem{\textit{#1} = \qtybf{#2}} \nopagebreak\\[\parskip]}
 20.1583 +\def\opt#1#2#3{\flushitem{\textit{#1} = \qtybf{#2}\quad [\textit{#3}]} \nopagebreak\\[\parskip]}
 20.1584 +\def\opu#1#2#3{\flushitem{\textit{#1} \qtybf{#2} = \qtybf{#3}} \nopagebreak\\[\parskip]}
 20.1585 +\def\opusmart#1#2#3{\flushitem{\textit{#1} \qtybf{#2} $\bigl[$= \qtybf{bool\_or\_smart}$\bigr]$\hfill (neg.: \textit{#3})}\nopagebreak\\[\parskip]}
 20.1586 +
 20.1587 +Nitpick's behavior can be influenced by various options, which can be specified
 20.1588 +in brackets after the \textbf{nitpick} command. Default values can be set
 20.1589 +using \textbf{nitpick\_\allowbreak params}. For example:
 20.1590 +
 20.1591 +\prew
 20.1592 +\textbf{nitpick\_params} [\textit{verbose}, \,\textit{timeout} = 60$\,s$]
 20.1593 +\postw
 20.1594 +
 20.1595 +The options are categorized as follows:\ mode of operation
 20.1596 +(\S\ref{mode-of-operation}), scope of search (\S\ref{scope-of-search}), output
 20.1597 +format (\S\ref{output-format}), automatic counterexample checks
 20.1598 +(\S\ref{authentication}), optimizations
 20.1599 +(\S\ref{optimizations}), and timeouts (\S\ref{timeouts}).
 20.1600 +
 20.1601 +The number of options can be overwhelming at first glance. Do not let that worry
 20.1602 +you: Nitpick's defaults have been chosen so that it almost always does the right
 20.1603 +thing, and the most important options have been covered in context in
 20.1604 +\S\ref{first-steps}.
 20.1605 +
 20.1606 +The descriptions below refer to the following syntactic quantities:
 20.1607 +
 20.1608 +\begin{enum}
 20.1609 +\item[$\bullet$] \qtybf{string}: A string.
 20.1610 +\item[$\bullet$] \qtybf{bool}: \textit{true} or \textit{false}.
 20.1611 +\item[$\bullet$] \qtybf{bool\_or\_smart}: \textit{true}, \textit{false}, or \textit{smart}.
 20.1612 +\item[$\bullet$] \qtybf{int}: An integer. Negative integers are prefixed with a hyphen.
 20.1613 +\item[$\bullet$] \qtybf{int\_or\_smart}: An integer or \textit{smart}.
 20.1614 +\item[$\bullet$] \qtybf{int\_range}: An integer (e.g., 3) or a range
 20.1615 +of nonnegative integers (e.g., $1$--$4$). The range symbol `--' can be entered as \texttt{-} (hyphen) or \texttt{\char`\\\char`\<midarrow\char`\>}.
 20.1616 +
 20.1617 +\item[$\bullet$] \qtybf{int\_seq}: A comma-separated sequence of ranges of integers (e.g.,~1{,}3{,}\allowbreak6--8).
 20.1618 +\item[$\bullet$] \qtybf{time}: An integer followed by $\textit{min}$ (minutes), $s$ (seconds), or \textit{ms}
 20.1619 +(milliseconds), or the keyword \textit{none} ($\infty$ years).
 20.1620 +\item[$\bullet$] \qtybf{const}: The name of a HOL constant.
 20.1621 +\item[$\bullet$] \qtybf{term}: A HOL term (e.g., ``$f~x$'').
 20.1622 +\item[$\bullet$] \qtybf{term\_list}: A space-separated list of HOL terms (e.g.,
 20.1623 +``$f~x$''~``$g~y$'').
 20.1624 +\item[$\bullet$] \qtybf{type}: A HOL type.
 20.1625 +\end{enum}
 20.1626 +
 20.1627 +Default values are indicated in square brackets. Boolean options have a negated
 20.1628 +counterpart (e.g., \textit{auto} vs.\ \textit{no\_auto}). When setting Boolean
 20.1629 +options, ``= \textit{true}'' may be omitted.
 20.1630 +
 20.1631 +\subsection{Mode of Operation}
 20.1632 +\label{mode-of-operation}
 20.1633 +
 20.1634 +\begin{enum}
 20.1635 +\opfalse{auto}{no\_auto}
 20.1636 +Specifies whether Nitpick should be run automatically on newly entered theorems.
 20.1637 +For automatic runs, \textit{user\_axioms} (\S\ref{mode-of-operation}) and
 20.1638 +\textit{assms} (\S\ref{mode-of-operation}) are implicitly enabled,
 20.1639 +\textit{blocking} (\S\ref{mode-of-operation}), \textit{verbose}
 20.1640 +(\S\ref{output-format}), and \textit{debug} (\S\ref{output-format}) are
 20.1641 +disabled, \textit{max\_potential} (\S\ref{output-format}) is taken to be 0, and
 20.1642 +\textit{auto\_timeout} (\S\ref{timeouts}) is used as the time limit instead of
 20.1643 +\textit{timeout} (\S\ref{timeouts}). The output is also more concise.
 20.1644 +
 20.1645 +\nopagebreak
 20.1646 +{\small See also \textit{auto\_timeout} (\S\ref{timeouts}).}
 20.1647 +
 20.1648 +\optrue{blocking}{non\_blocking}
 20.1649 +Specifies whether the \textbf{nitpick} command should operate synchronously.
 20.1650 +The asynchronous (non-blocking) mode lets the user start proving the putative
 20.1651 +theorem while Nitpick looks for a counterexample, but it can also be more
 20.1652 +confusing. For technical reasons, automatic runs currently always block.
 20.1653 +
 20.1654 +\nopagebreak
 20.1655 +{\small See also \textit{auto} (\S\ref{mode-of-operation}).}
 20.1656 +
 20.1657 +\optrue{falsify}{satisfy}
 20.1658 +Specifies whether Nitpick should look for falsifying examples (countermodels) or
 20.1659 +satisfying examples (models). This manual assumes throughout that
 20.1660 +\textit{falsify} is enabled.
 20.1661 +
 20.1662 +\opsmart{user\_axioms}{no\_user\_axioms}
 20.1663 +Specifies whether the user-defined axioms (specified using 
 20.1664 +\textbf{axiomatization} and \textbf{axioms}) should be considered. If the option
 20.1665 +is set to \textit{smart}, Nitpick performs an ad hoc axiom selection based on
 20.1666 +the constants that occur in the formula to falsify. The option is implicitly set
 20.1667 +to \textit{true} for automatic runs.
 20.1668 +
 20.1669 +\textbf{Warning:} If the option is set to \textit{true}, Nitpick might
 20.1670 +nonetheless ignore some polymorphic axioms. Counterexamples generated under
 20.1671 +these conditions are tagged as ``likely genuine.'' The \textit{debug}
 20.1672 +(\S\ref{output-format}) option can be used to find out which axioms were
 20.1673 +considered.
 20.1674 +
 20.1675 +\nopagebreak
 20.1676 +{\small See also \textit{auto} (\S\ref{mode-of-operation}), \textit{assms}
 20.1677 +(\S\ref{mode-of-operation}), and \textit{debug} (\S\ref{output-format}).}
 20.1678 +
 20.1679 +\optrue{assms}{no\_assms}
 20.1680 +Specifies whether the relevant assumptions in structured proof should be
 20.1681 +considered. The option is implicitly enabled for automatic runs.
 20.1682 +
 20.1683 +\nopagebreak
 20.1684 +{\small See also \textit{auto} (\S\ref{mode-of-operation})
 20.1685 +and \textit{user\_axioms} (\S\ref{mode-of-operation}).}
 20.1686 +
 20.1687 +\opfalse{overlord}{no\_overlord}
 20.1688 +Specifies whether Nitpick should put its temporary files in
 20.1689 +\texttt{\$ISABELLE\_\allowbreak HOME\_\allowbreak USER}, which is useful for
 20.1690 +debugging Nitpick but also unsafe if several instances of the tool are run
 20.1691 +simultaneously.
 20.1692 +
 20.1693 +\nopagebreak
 20.1694 +{\small See also \textit{debug} (\S\ref{output-format}).}
 20.1695 +\end{enum}
 20.1696 +
 20.1697 +\subsection{Scope of Search}
 20.1698 +\label{scope-of-search}
 20.1699 +
 20.1700 +\begin{enum}
 20.1701 +\opu{card}{type}{int\_seq}
 20.1702 +Specifies the sequence of cardinalities to use for a given type. For
 20.1703 +\textit{nat} and \textit{int}, the cardinality fully specifies the subset used
 20.1704 +to approximate the type. For example:
 20.1705 +%
 20.1706 +$$\hbox{\begin{tabular}{@{}rll@{}}%
 20.1707 +\textit{card nat} = 4 & induces & $\{0,\, 1,\, 2,\, 3\}$ \\
 20.1708 +\textit{card int} = 4 & induces & $\{-1,\, 0,\, +1,\, +2\}$ \\
 20.1709 +\textit{card int} = 5 & induces & $\{-2,\, -1,\, 0,\, +1,\, +2\}.$%
 20.1710 +\end{tabular}}$$
 20.1711 +%
 20.1712 +In general:
 20.1713 +%
 20.1714 +$$\hbox{\begin{tabular}{@{}rll@{}}%
 20.1715 +\textit{card nat} = $K$ & induces & $\{0,\, \ldots,\, K - 1\}$ \\
 20.1716 +\textit{card int} = $K$ & induces & $\{-\lceil K/2 \rceil + 1,\, \ldots,\, +\lfloor K/2 \rfloor\}.$%
 20.1717 +\end{tabular}}$$
 20.1718 +%
 20.1719 +For free types, and often also for \textbf{typedecl}'d types, it usually makes
 20.1720 +sense to specify cardinalities as a range of the form \textit{$1$--$n$}.
 20.1721 +Although function and product types are normally mapped directly to the
 20.1722 +corresponding Kodkod concepts, setting
 20.1723 +the cardinality of such types is also allowed and implicitly enables ``boxing''
 20.1724 +for them, as explained in the description of the \textit{box}~\qty{type}
 20.1725 +and \textit{box} (\S\ref{scope-of-search}) options.
 20.1726 +
 20.1727 +\nopagebreak
 20.1728 +{\small See also \textit{mono} (\S\ref{scope-of-search}).}
 20.1729 +
 20.1730 +\opt{card}{int\_seq}{$\mathbf{1}$--$\mathbf{8}$}
 20.1731 +Specifies the default sequence of cardinalities to use. This can be overridden
 20.1732 +on a per-type basis using the \textit{card}~\qty{type} option described above.
 20.1733 +
 20.1734 +\opu{max}{const}{int\_seq}
 20.1735 +Specifies the sequence of maximum multiplicities to use for a given
 20.1736 +(co)in\-duc\-tive datatype constructor. A constructor's multiplicity is the
 20.1737 +number of distinct values that it can construct. Nonsensical values (e.g.,
 20.1738 +\textit{max}~[]~$=$~2) are silently repaired. This option is only available for
 20.1739 +datatypes equipped with several constructors.
 20.1740 +
 20.1741 +\ops{max}{int\_seq}
 20.1742 +Specifies the default sequence of maximum multiplicities to use for
 20.1743 +(co)in\-duc\-tive datatype constructors. This can be overridden on a per-constructor
 20.1744 +basis using the \textit{max}~\qty{const} option described above.
 20.1745 +
 20.1746 +\opusmart{wf}{const}{non\_wf}
 20.1747 +Specifies whether the specified (co)in\-duc\-tively defined predicate is
 20.1748 +well-founded. The option can take the following values:
 20.1749 +
 20.1750 +\begin{enum}
 20.1751 +\item[$\bullet$] \textbf{\textit{true}}: Tentatively treat the (co)in\-duc\-tive
 20.1752 +predicate as if it were well-founded. Since this is generally not sound when the
 20.1753 +predicate is not well-founded, the counterexamples are tagged as ``likely
 20.1754 +genuine.''
 20.1755 +
 20.1756 +\item[$\bullet$] \textbf{\textit{false}}: Treat the (co)in\-duc\-tive predicate
 20.1757 +as if it were not well-founded. The predicate is then unrolled as prescribed by
 20.1758 +the \textit{star\_linear\_preds}, \textit{iter}~\qty{const}, and \textit{iter}
 20.1759 +options.
 20.1760 +
 20.1761 +\item[$\bullet$] \textbf{\textit{smart}}: Try to prove that the inductive
 20.1762 +predicate is well-founded using Isabelle's \textit{lexicographic\_order} and
 20.1763 +\textit{sizechange} tactics. If this succeeds (or the predicate occurs with an
 20.1764 +appropriate polarity in the formula to falsify), use an efficient fixed point
 20.1765 +equation as specification of the predicate; otherwise, unroll the predicates
 20.1766 +according to the \textit{iter}~\qty{const} and \textit{iter} options.
 20.1767 +\end{enum}
 20.1768 +
 20.1769 +\nopagebreak
 20.1770 +{\small See also \textit{iter} (\S\ref{scope-of-search}),
 20.1771 +\textit{star\_linear\_preds} (\S\ref{optimizations}), and \textit{tac\_timeout}
 20.1772 +(\S\ref{timeouts}).}
 20.1773 +
 20.1774 +\opsmart{wf}{non\_wf}
 20.1775 +Specifies the default wellfoundedness setting to use. This can be overridden on
 20.1776 +a per-predicate basis using the \textit{wf}~\qty{const} option above.
 20.1777 +
 20.1778 +\opu{iter}{const}{int\_seq}
 20.1779 +Specifies the sequence of iteration counts to use when unrolling a given
 20.1780 +(co)in\-duc\-tive predicate. By default, unrolling is applied for inductive
 20.1781 +predicates that occur negatively and coinductive predicates that occur
 20.1782 +positively in the formula to falsify and that cannot be proved to be
 20.1783 +well-founded, but this behavior is influenced by the \textit{wf} option. The
 20.1784 +iteration counts are automatically bounded by the cardinality of the predicate's
 20.1785 +domain.
 20.1786 +
 20.1787 +{\small See also \textit{wf} (\S\ref{scope-of-search}) and
 20.1788 +\textit{star\_linear\_preds} (\S\ref{optimizations}).}
 20.1789 +
 20.1790 +\opt{iter}{int\_seq}{$\mathbf{1{,}2{,}4{,}8{,}12{,}16{,}24{,}32}$}
 20.1791 +Specifies the sequence of iteration counts to use when unrolling (co)in\-duc\-tive
 20.1792 +predicates. This can be overridden on a per-predicate basis using the
 20.1793 +\textit{iter} \qty{const} option above.
 20.1794 +
 20.1795 +\opt{bisim\_depth}{int\_seq}{$\mathbf{7}$}
 20.1796 +Specifies the sequence of iteration counts to use when unrolling the
 20.1797 +bisimilarity predicate generated by Nitpick for coinductive datatypes. A value
 20.1798 +of $-1$ means that no predicate is generated, in which case Nitpick performs an
 20.1799 +after-the-fact check to see if the known coinductive datatype values are
 20.1800 +bidissimilar. If two values are found to be bisimilar, the counterexample is
 20.1801 +tagged as ``likely genuine.'' The iteration counts are automatically bounded by
 20.1802 +the sum of the cardinalities of the coinductive datatypes occurring in the
 20.1803 +formula to falsify.
 20.1804 +
 20.1805 +\opusmart{box}{type}{dont\_box}
 20.1806 +Specifies whether Nitpick should attempt to wrap (``box'') a given function or
 20.1807 +product type in an isomorphic datatype internally. Boxing is an effective mean
 20.1808 +to reduce the search space and speed up Nitpick, because the isomorphic datatype
 20.1809 +is approximated by a subset of the possible function or pair values;
 20.1810 +like other drastic optimizations, it can also prevent the discovery of
 20.1811 +counterexamples. The option can take the following values:
 20.1812 +
 20.1813 +\begin{enum}
 20.1814 +\item[$\bullet$] \textbf{\textit{true}}: Box the specified type whenever
 20.1815 +practicable.
 20.1816 +\item[$\bullet$] \textbf{\textit{false}}: Never box the type.
 20.1817 +\item[$\bullet$] \textbf{\textit{smart}}: Box the type only in contexts where it
 20.1818 +is likely to help. For example, $n$-tuples where $n > 2$ and arguments to
 20.1819 +higher-order functions are good candidates for boxing.
 20.1820 +\end{enum}
 20.1821 +
 20.1822 +Setting the \textit{card}~\qty{type} option for a function or product type
 20.1823 +implicitly enables boxing for that type.
 20.1824 +
 20.1825 +\nopagebreak
 20.1826 +{\small See also \textit{verbose} (\S\ref{output-format})
 20.1827 +and \textit{debug} (\S\ref{output-format}).}
 20.1828 +
 20.1829 +\opsmart{box}{dont\_box}
 20.1830 +Specifies the default boxing setting to use. This can be overridden on a
 20.1831 +per-type basis using the \textit{box}~\qty{type} option described above.
 20.1832 +
 20.1833 +\opusmart{mono}{type}{non\_mono}
 20.1834 +Specifies whether the specified type should be considered monotonic when
 20.1835 +enumerating scopes. If the option is set to \textit{smart}, Nitpick performs a
 20.1836 +monotonicity check on the type. Setting this option to \textit{true} can reduce
 20.1837 +the number of scopes tried, but it also diminishes the theoretical chance of
 20.1838 +finding a counterexample, as demonstrated in \S\ref{scope-monotonicity}.
 20.1839 +
 20.1840 +\nopagebreak
 20.1841 +{\small See also \textit{card} (\S\ref{scope-of-search}),
 20.1842 +\textit{coalesce\_type\_vars} (\S\ref{scope-of-search}), and \textit{verbose}
 20.1843 +(\S\ref{output-format}).}
 20.1844 +
 20.1845 +\opsmart{mono}{non\_box}
 20.1846 +Specifies the default monotonicity setting to use. This can be overridden on a
 20.1847 +per-type basis using the \textit{mono}~\qty{type} option described above.
 20.1848 +
 20.1849 +\opfalse{coalesce\_type\_vars}{dont\_coalesce\_type\_vars}
 20.1850 +Specifies whether type variables with the same sort constraints should be
 20.1851 +merged. Setting this option to \textit{true} can reduce the number of scopes
 20.1852 +tried and the size of the generated Kodkod formulas, but it also diminishes the
 20.1853 +theoretical chance of finding a counterexample.
 20.1854 +
 20.1855 +{\small See also \textit{mono} (\S\ref{scope-of-search}).}
 20.1856 +\end{enum}
 20.1857 +
 20.1858 +\subsection{Output Format}
 20.1859 +\label{output-format}
 20.1860 +
 20.1861 +\begin{enum}
 20.1862 +\opfalse{verbose}{quiet}
 20.1863 +Specifies whether the \textbf{nitpick} command should explain what it does. This
 20.1864 +option is useful to determine which scopes are tried or which SAT solver is
 20.1865 +used. This option is implicitly disabled for automatic runs.
 20.1866 +
 20.1867 +\nopagebreak
 20.1868 +{\small See also \textit{auto} (\S\ref{mode-of-operation}).}
 20.1869 +
 20.1870 +\opfalse{debug}{no\_debug}
 20.1871 +Specifies whether Nitpick should display additional debugging information beyond
 20.1872 +what \textit{verbose} already displays. Enabling \textit{debug} also enables
 20.1873 +\textit{verbose} and \textit{show\_all} behind the scenes. The \textit{debug}
 20.1874 +option is implicitly disabled for automatic runs.
 20.1875 +
 20.1876 +\nopagebreak
 20.1877 +{\small See also \textit{auto} (\S\ref{mode-of-operation}), \textit{overlord}
 20.1878 +(\S\ref{mode-of-operation}), and \textit{batch\_size} (\S\ref{optimizations}).}
 20.1879 +
 20.1880 +\optrue{show\_skolems}{hide\_skolem}
 20.1881 +Specifies whether the values of Skolem constants should be displayed as part of
 20.1882 +counterexamples. Skolem constants correspond to bound variables in the original
 20.1883 +formula and usually help us to understand why the counterexample falsifies the
 20.1884 +formula.
 20.1885 +
 20.1886 +\nopagebreak
 20.1887 +{\small See also \textit{skolemize} (\S\ref{optimizations}).}
 20.1888 +
 20.1889 +\opfalse{show\_datatypes}{hide\_datatypes}
 20.1890 +Specifies whether the subsets used to approximate (co)in\-duc\-tive datatypes should
 20.1891 +be displayed as part of counterexamples. Such subsets are sometimes helpful when
 20.1892 +investigating whether a potential counterexample is genuine or spurious, but
 20.1893 +their potential for clutter is real.
 20.1894 +
 20.1895 +\opfalse{show\_consts}{hide\_consts}
 20.1896 +Specifies whether the values of constants occurring in the formula (including
 20.1897 +its axioms) should be displayed along with any counterexample. These values are
 20.1898 +sometimes helpful when investigating why a counterexample is
 20.1899 +genuine, but they can clutter the output.
 20.1900 +
 20.1901 +\opfalse{show\_all}{dont\_show\_all}
 20.1902 +Enabling this option effectively enables \textit{show\_skolems},
 20.1903 +\textit{show\_datatypes}, and \textit{show\_consts}.
 20.1904 +
 20.1905 +\opt{max\_potential}{int}{$\mathbf{1}$}
 20.1906 +Specifies the maximum number of potential counterexamples to display. Setting
 20.1907 +this option to 0 speeds up the search for a genuine counterexample. This option
 20.1908 +is implicitly set to 0 for automatic runs. If you set this option to a value
 20.1909 +greater than 1, you will need an incremental SAT solver: For efficiency, it is
 20.1910 +recommended to install the JNI version of MiniSat and set \textit{sat\_solver} =
 20.1911 +\textit{MiniSatJNI}. Also be aware that many of the counterexamples may look
 20.1912 +identical, unless the \textit{show\_all} (\S\ref{output-format}) option is
 20.1913 +enabled.
 20.1914 +
 20.1915 +\nopagebreak
 20.1916 +{\small See also \textit{auto} (\S\ref{mode-of-operation}),
 20.1917 +\textit{check\_potential} (\S\ref{authentication}), and
 20.1918 +\textit{sat\_solver} (\S\ref{optimizations}).}
 20.1919 +
 20.1920 +\opt{max\_genuine}{int}{$\mathbf{1}$}
 20.1921 +Specifies the maximum number of genuine counterexamples to display. If you set
 20.1922 +this option to a value greater than 1, you will need an incremental SAT solver:
 20.1923 +For efficiency, it is recommended to install the JNI version of MiniSat and set
 20.1924 +\textit{sat\_solver} = \textit{MiniSatJNI}. Also be aware that many of the
 20.1925 +counterexamples may look identical, unless the \textit{show\_all}
 20.1926 +(\S\ref{output-format}) option is enabled.
 20.1927 +
 20.1928 +\nopagebreak
 20.1929 +{\small See also \textit{check\_genuine} (\S\ref{authentication}) and
 20.1930 +\textit{sat\_solver} (\S\ref{optimizations}).}
 20.1931 +
 20.1932 +\ops{eval}{term\_list}
 20.1933 +Specifies the list of terms whose values should be displayed along with
 20.1934 +counterexamples. This option suffers from an ``observer effect'': Nitpick might
 20.1935 +find different counterexamples for different values of this option.
 20.1936 +
 20.1937 +\opu{format}{term}{int\_seq}
 20.1938 +Specifies how to uncurry the value displayed for a variable or constant.
 20.1939 +Uncurrying sometimes increases the readability of the output for high-arity
 20.1940 +functions. For example, given the variable $y \mathbin{\Colon} {'a}\Rightarrow
 20.1941 +{'b}\Rightarrow {'c}\Rightarrow {'d}\Rightarrow {'e}\Rightarrow {'f}\Rightarrow
 20.1942 +{'g}$, setting \textit{format}~$y$ = 3 tells Nitpick to group the last three
 20.1943 +arguments, as if the type had been ${'a}\Rightarrow {'b}\Rightarrow
 20.1944 +{'c}\Rightarrow {'d}\times {'e}\times {'f}\Rightarrow {'g}$. In general, a list
 20.1945 +of values $n_1,\ldots,n_k$ tells Nitpick to show the last $n_k$ arguments as an
 20.1946 +$n_k$-tuple, the previous $n_{k-1}$ arguments as an $n_{k-1}$-tuple, and so on;
 20.1947 +arguments that are not accounted for are left alone, as if the specification had
 20.1948 +been $1,\ldots,1,n_1,\ldots,n_k$.
 20.1949 +
 20.1950 +\nopagebreak
 20.1951 +{\small See also \textit{uncurry} (\S\ref{optimizations}).}
 20.1952 +
 20.1953 +\opt{format}{int\_seq}{$\mathbf{1}$}
 20.1954 +Specifies the default format to use. Irrespective of the default format, the
 20.1955 +extra arguments to a Skolem constant corresponding to the outer bound variables
 20.1956 +are kept separated from the remaining arguments, the \textbf{for} arguments of
 20.1957 +an inductive definitions are kept separated from the remaining arguments, and
 20.1958 +the iteration counter of an unrolled inductive definition is shown alone. The
 20.1959 +default format can be overridden on a per-variable or per-constant basis using
 20.1960 +the \textit{format}~\qty{term} option described above.
 20.1961 +\end{enum}
 20.1962 +
 20.1963 +%% MARK: Authentication
 20.1964 +\subsection{Authentication}
 20.1965 +\label{authentication}
 20.1966 +
 20.1967 +\begin{enum}
 20.1968 +\opfalse{check\_potential}{trust\_potential}
 20.1969 +Specifies whether potential counterexamples should be given to Isabelle's
 20.1970 +\textit{auto} tactic to assess their validity. If a potential counterexample is
 20.1971 +shown to be genuine, Nitpick displays a message to this effect and terminates.
 20.1972 +
 20.1973 +\nopagebreak
 20.1974 +{\small See also \textit{max\_potential} (\S\ref{output-format}) and
 20.1975 +\textit{auto\_timeout} (\S\ref{timeouts}).}
 20.1976 +
 20.1977 +\opfalse{check\_genuine}{trust\_genuine}
 20.1978 +Specifies whether genuine and likely genuine counterexamples should be given to
 20.1979 +Isabelle's \textit{auto} tactic to assess their validity. If a ``genuine''
 20.1980 +counterexample is shown to be spurious, the user is kindly asked to send a bug
 20.1981 +report to the author at
 20.1982 +\texttt{blan{\color{white}nospam}\kern-\wd\boxA{}chette@in.tum.de}.
 20.1983 +
 20.1984 +\nopagebreak
 20.1985 +{\small See also \textit{max\_genuine} (\S\ref{output-format}) and
 20.1986 +\textit{auto\_timeout} (\S\ref{timeouts}).}
 20.1987 +
 20.1988 +\ops{expect}{string}
 20.1989 +Specifies the expected outcome, which must be one of the following:
 20.1990 +
 20.1991 +\begin{enum}
 20.1992 +\item[$\bullet$] \textbf{\textit{genuine}}: Nitpick found a genuine counterexample.
 20.1993 +\item[$\bullet$] \textbf{\textit{likely\_genuine}}: Nitpick found a ``likely
 20.1994 +genuine'' counterexample (i.e., a counterexample that is genuine unless
 20.1995 +it contradicts a missing axiom or a dangerous option was used inappropriately).
 20.1996 +\item[$\bullet$] \textbf{\textit{potential}}: Nitpick found a potential counterexample.
 20.1997 +\item[$\bullet$] \textbf{\textit{none}}: Nitpick found no counterexample.
 20.1998 +\item[$\bullet$] \textbf{\textit{unknown}}: Nitpick encountered some problem (e.g.,
 20.1999 +Kodkod ran out of memory).
 20.2000 +\end{enum}
 20.2001 +
 20.2002 +Nitpick emits an error if the actual outcome differs from the expected outcome.
 20.2003 +This option is useful for regression testing.
 20.2004 +\end{enum}
 20.2005 +
 20.2006 +\subsection{Optimizations}
 20.2007 +\label{optimizations}
 20.2008 +
 20.2009 +\def\cpp{C\nobreak\raisebox{.1ex}{+}\nobreak\raisebox{.1ex}{+}}
 20.2010 +
 20.2011 +\sloppy
 20.2012 +
 20.2013 +\begin{enum}
 20.2014 +\opt{sat\_solver}{string}{smart}
 20.2015 +Specifies which SAT solver to use. SAT solvers implemented in C or \cpp{} tend
 20.2016 +to be faster than their Java counterparts, but they can be more difficult to
 20.2017 +install. Also, if you set the \textit{max\_potential} (\S\ref{output-format}) or
 20.2018 +\textit{max\_genuine} (\S\ref{output-format}) option to a value greater than 1,
 20.2019 +you will need an incremental SAT solver, such as \textit{MiniSatJNI}
 20.2020 +(recommended) or \textit{SAT4J}.
 20.2021 +
 20.2022 +The supported solvers are listed below:
 20.2023 +
 20.2024 +\begin{enum}
 20.2025 +
 20.2026 +\item[$\bullet$] \textbf{\textit{MiniSat}}: MiniSat is an efficient solver
 20.2027 +written in \cpp{}. To use MiniSat, set the environment variable
 20.2028 +\texttt{MINISAT\_HOME} to the directory that contains the \texttt{minisat}
 20.2029 +executable. The \cpp{} sources and executables for MiniSat are available at
 20.2030 +\url{http://minisat.se/MiniSat.html}. Nitpick has been tested with versions 1.14
 20.2031 +and 2.0 beta (2007-07-21).
 20.2032 +
 20.2033 +\item[$\bullet$] \textbf{\textit{MiniSatJNI}}: The JNI (Java Native Interface)
 20.2034 +version of MiniSat is bundled in \texttt{nativesolver.\allowbreak tgz}, which
 20.2035 +you will find on Kodkod's web site \cite{kodkod-2009}. Unlike the standard
 20.2036 +version of MiniSat, the JNI version can be used incrementally.
 20.2037 +
 20.2038 +\item[$\bullet$] \textbf{\textit{PicoSAT}}: PicoSAT is an efficient solver
 20.2039 +written in C. It is bundled with Kodkodi and requires no further installation or
 20.2040 +configuration steps. Alternatively, you can install a standard version of
 20.2041 +PicoSAT and set the environment variable \texttt{PICOSAT\_HOME} to the directory
 20.2042 +that contains the \texttt{picosat} executable. The C sources for PicoSAT are
 20.2043 +available at \url{http://fmv.jku.at/picosat/} and are also bundled with Kodkodi.
 20.2044 +Nitpick has been tested with version 913.
 20.2045 +
 20.2046 +\item[$\bullet$] \textbf{\textit{zChaff}}: zChaff is an efficient solver written
 20.2047 +in \cpp{}. To use zChaff, set the environment variable \texttt{ZCHAFF\_HOME} to
 20.2048 +the directory that contains the \texttt{zchaff} executable. The \cpp{} sources
 20.2049 +and executables for zChaff are available at
 20.2050 +\url{http://www.princeton.edu/~chaff/zchaff.html}. Nitpick has been tested with
 20.2051 +versions 2004-05-13, 2004-11-15, and 2007-03-12.
 20.2052 +
 20.2053 +\item[$\bullet$] \textbf{\textit{zChaffJNI}}: The JNI version of zChaff is
 20.2054 +bundled in \texttt{native\-solver.\allowbreak tgz}, which you will find on
 20.2055 +Kodkod's web site \cite{kodkod-2009}.
 20.2056 +
 20.2057 +\item[$\bullet$] \textbf{\textit{RSat}}: RSat is an efficient solver written in
 20.2058 +\cpp{}. To use RSat, set the environment variable \texttt{RSAT\_HOME} to the
 20.2059 +directory that contains the \texttt{rsat} executable. The \cpp{} sources for
 20.2060 +RSat are available at \url{http://reasoning.cs.ucla.edu/rsat/}. Nitpick has been
 20.2061 +tested with version 2.01.
 20.2062 +
 20.2063 +\item[$\bullet$] \textbf{\textit{BerkMin}}: BerkMin561 is an efficient solver
 20.2064 +written in C. To use BerkMin, set the environment variable
 20.2065 +\texttt{BERKMIN\_HOME} to the directory that contains the \texttt{BerkMin561}
 20.2066 +executable. The BerkMin executables are available at
 20.2067 +\url{http://eigold.tripod.com/BerkMin.html}.
 20.2068 +
 20.2069 +\item[$\bullet$] \textbf{\textit{BerkMinAlloy}}: Variant of BerkMin that is
 20.2070 +included with Alloy 4 and calls itself ``sat56'' in its banner text. To use this
 20.2071 +version of BerkMin, set the environment variable
 20.2072 +\texttt{BERKMINALLOY\_HOME} to the directory that contains the \texttt{berkmin}
 20.2073 +executable.
 20.2074 +
 20.2075 +\item[$\bullet$] \textbf{\textit{Jerusat}}: Jerusat 1.3 is an efficient solver
 20.2076 +written in C. To use Jerusat, set the environment variable
 20.2077 +\texttt{JERUSAT\_HOME} to the directory that contains the \texttt{Jerusat1.3}
 20.2078 +executable. The C sources for Jerusat are available at
 20.2079 +\url{http://www.cs.tau.ac.il/~ale1/Jerusat1.3.tgz}.
 20.2080 +
 20.2081 +\item[$\bullet$] \textbf{\textit{SAT4J}}: SAT4J is a reasonably efficient solver
 20.2082 +written in Java that can be used incrementally. It is bundled with Kodkodi and
 20.2083 +requires no further installation or configuration steps. Do not attempt to
 20.2084 +install the official SAT4J packages, because their API is incompatible with
 20.2085 +Kodkod.
 20.2086 +
 20.2087 +\item[$\bullet$] \textbf{\textit{SAT4JLight}}: Variant of SAT4J that is
 20.2088 +optimized for small problems. It can also be used incrementally.
 20.2089 +
 20.2090 +\item[$\bullet$] \textbf{\textit{HaifaSat}}: HaifaSat 1.0 beta is an
 20.2091 +experimental solver written in \cpp. To use HaifaSat, set the environment
 20.2092 +variable \texttt{HAIFASAT\_\allowbreak HOME} to the directory that contains the
 20.2093 +\texttt{HaifaSat} executable. The \cpp{} sources for HaifaSat are available at
 20.2094 +\url{http://cs.technion.ac.il/~gershman/HaifaSat.htm}.
 20.2095 +
 20.2096 +\item[$\bullet$] \textbf{\textit{smart}}: If \textit{sat\_solver} is set to
 20.2097 +\textit{smart}, Nitpick selects the first solver among MiniSat, PicoSAT, zChaff,
 20.2098 +RSat, BerkMin, BerkMinAlloy, and Jerusat that is recognized by Isabelle. If none
 20.2099 +is found, it falls back on SAT4J, which should always be available. If
 20.2100 +\textit{verbose} is enabled, Nitpick displays which SAT solver was chosen.
 20.2101 +
 20.2102 +\end{enum}
 20.2103 +\fussy
 20.2104 +
 20.2105 +\opt{batch\_size}{int\_or\_smart}{smart}
 20.2106 +Specifies the maximum number of Kodkod problems that should be lumped together
 20.2107 +when invoking Kodkodi. Each problem corresponds to one scope. Lumping problems
 20.2108 +together ensures that Kodkodi is launched less often, but it makes the verbose
 20.2109 +output less readable and is sometimes detrimental to performance. If
 20.2110 +\textit{batch\_size} is set to \textit{smart}, the actual value used is 1 if
 20.2111 +\textit{debug} (\S\ref{output-format}) is set and 64 otherwise.
 20.2112 +
 20.2113 +\optrue{destroy\_constrs}{dont\_destroy\_constrs}
 20.2114 +Specifies whether formulas involving (co)in\-duc\-tive datatype constructors should
 20.2115 +be rewritten to use (automatically generated) discriminators and destructors.
 20.2116 +This optimization can drastically reduce the size of the Boolean formulas given
 20.2117 +to the SAT solver.
 20.2118 +
 20.2119 +\nopagebreak
 20.2120 +{\small See also \textit{debug} (\S\ref{output-format}).}
 20.2121 +
 20.2122 +\optrue{specialize}{dont\_specialize}
 20.2123 +Specifies whether functions invoked with static arguments should be specialized.
 20.2124 +This optimization can drastically reduce the search space, especially for
 20.2125 +higher-order functions.
 20.2126 +
 20.2127 +\nopagebreak
 20.2128 +{\small See also \textit{debug} (\S\ref{output-format}) and
 20.2129 +\textit{show\_consts} (\S\ref{output-format}).}
 20.2130 +
 20.2131 +\optrue{skolemize}{dont\_skolemize}
 20.2132 +Specifies whether the formula should be skolemized. For performance reasons,
 20.2133 +(positive) $\forall$-quanti\-fiers that occur in the scope of a higher-order
 20.2134 +(positive) $\exists$-quanti\-fier are left unchanged.
 20.2135 +
 20.2136 +\nopagebreak
 20.2137 +{\small See also \textit{debug} (\S\ref{output-format}) and
 20.2138 +\textit{show\_skolems} (\S\ref{output-format}).}
 20.2139 +
 20.2140 +\optrue{star\_linear\_preds}{dont\_star\_linear\_preds}
 20.2141 +Specifies whether Nitpick should use Kodkod's transitive closure operator to
 20.2142 +encode non-well-founded ``linear inductive predicates,'' i.e., inductive
 20.2143 +predicates for which each the predicate occurs in at most one assumption of each
 20.2144 +introduction rule. Using the reflexive transitive closure is in principle
 20.2145 +equivalent to setting \textit{iter} to the cardinality of the predicate's
 20.2146 +domain, but it is usually more efficient.
 20.2147 +
 20.2148 +{\small See also \textit{wf} (\S\ref{scope-of-search}), \textit{debug}
 20.2149 +(\S\ref{output-format}), and \textit{iter} (\S\ref{scope-of-search}).}
 20.2150 +
 20.2151 +\optrue{uncurry}{dont\_uncurry}
 20.2152 +Specifies whether Nitpick should uncurry functions. Uncurrying has on its own no
 20.2153 +tangible effect on efficiency, but it creates opportunities for the boxing 
 20.2154 +optimization.
 20.2155 +
 20.2156 +\nopagebreak
 20.2157 +{\small See also \textit{box} (\S\ref{scope-of-search}), \textit{debug}
 20.2158 +(\S\ref{output-format}), and \textit{format} (\S\ref{output-format}).}
 20.2159 +
 20.2160 +\optrue{fast\_descrs}{full\_descrs}
 20.2161 +Specifies whether Nitpick should optimize the definite and indefinite
 20.2162 +description operators (THE and SOME). The optimized versions usually help
 20.2163 +Nitpick generate more counterexamples or at least find them faster, but only the
 20.2164 +unoptimized versions are complete when all types occurring in the formula are
 20.2165 +finite.
 20.2166 +
 20.2167 +{\small See also \textit{debug} (\S\ref{output-format}).}
 20.2168 +
 20.2169 +\optrue{peephole\_optim}{no\_peephole\_optim}
 20.2170 +Specifies whether Nitpick should simplify the generated Kodkod formulas using a
 20.2171 +peephole optimizer. These optimizations can make a significant difference.
 20.2172 +Unless you are tracking down a bug in Nitpick or distrust the peephole
 20.2173 +optimizer, you should leave this option enabled.
 20.2174 +
 20.2175 +\opt{sym\_break}{int}{20}
 20.2176 +Specifies an upper bound on the number of relations for which Kodkod generates
 20.2177 +symmetry breaking predicates. According to the Kodkod documentation
 20.2178 +\cite{kodkod-2009-options}, ``in general, the higher this value, the more
 20.2179 +symmetries will be broken, and the faster the formula will be solved. But,
 20.2180 +setting the value too high may have the opposite effect and slow down the
 20.2181 +solving.''
 20.2182 +
 20.2183 +\opt{sharing\_depth}{int}{3}
 20.2184 +Specifies the depth to which Kodkod should check circuits for equivalence during
 20.2185 +the translation to SAT. The default of 3 is the same as in Alloy. The minimum
 20.2186 +allowed depth is 1. Increasing the sharing may result in a smaller SAT problem,
 20.2187 +but can also slow down Kodkod.
 20.2188 +
 20.2189 +\opfalse{flatten\_props}{dont\_flatten\_props}
 20.2190 +Specifies whether Kodkod should try to eliminate intermediate Boolean variables.
 20.2191 +Although this might sound like a good idea, in practice it can drastically slow
 20.2192 +down Kodkod.
 20.2193 +
 20.2194 +\opt{max\_threads}{int}{0}
 20.2195 +Specifies the maximum number of threads to use in Kodkod. If this option is set
 20.2196 +to 0, Kodkod will compute an appropriate value based on the number of processor
 20.2197 +cores available.
 20.2198 +
 20.2199 +\nopagebreak
 20.2200 +{\small See also \textit{batch\_size} (\S\ref{optimizations}) and
 20.2201 +\textit{timeout} (\S\ref{timeouts}).}
 20.2202 +\end{enum}
 20.2203 +
 20.2204 +\subsection{Timeouts}
 20.2205 +\label{timeouts}
 20.2206 +
 20.2207 +\begin{enum}
 20.2208 +\opt{timeout}{time}{$\mathbf{30}$ s}
 20.2209 +Specifies the maximum amount of time that the \textbf{nitpick} command should
 20.2210 +spend looking for a counterexample. Nitpick tries to honor this constraint as
 20.2211 +well as it can but offers no guarantees. For automatic runs,
 20.2212 +\textit{auto\_timeout} is used instead.
 20.2213 +
 20.2214 +\nopagebreak
 20.2215 +{\small See also \textit{auto} (\S\ref{mode-of-operation})
 20.2216 +and \textit{max\_threads} (\S\ref{optimizations}).}
 20.2217 +
 20.2218 +\opt{auto\_timeout}{time}{$\mathbf{5}$ s}
 20.2219 +Specifies the maximum amount of time that Nitpick should use to find a
 20.2220 +counterexample when running automatically. Nitpick tries to honor this
 20.2221 +constraint as well as it can but offers no guarantees.
 20.2222 +
 20.2223 +\nopagebreak
 20.2224 +{\small See also \textit{auto} (\S\ref{mode-of-operation}).}
 20.2225 +
 20.2226 +\opt{tac\_timeout}{time}{$\mathbf{500}$ ms}
 20.2227 +Specifies the maximum amount of time that the \textit{auto} tactic should use
 20.2228 +when checking a counterexample, and similarly that \textit{lexicographic\_order}
 20.2229 +and \textit{sizechange} should use when checking whether a (co)in\-duc\-tive
 20.2230 +predicate is well-founded. Nitpick tries to honor this constraint as well as it
 20.2231 +can but offers no guarantees.
 20.2232 +
 20.2233 +\nopagebreak
 20.2234 +{\small See also \textit{wf} (\S\ref{scope-of-search}),
 20.2235 +\textit{check\_potential} (\S\ref{authentication}),
 20.2236 +and \textit{check\_genuine} (\S\ref{authentication}).}
 20.2237 +\end{enum}
 20.2238 +
 20.2239 +\section{Attribute Reference}
 20.2240 +\label{attribute-reference}
 20.2241 +
 20.2242 +Nitpick needs to consider the definitions of all constants occurring in a
 20.2243 +formula in order to falsify it. For constants introduced using the
 20.2244 +\textbf{definition} command, the definition is simply the associated
 20.2245 +\textit{\_def} axiom. In contrast, instead of using the internal representation
 20.2246 +of functions synthesized by Isabelle's \textbf{primrec}, \textbf{function}, and
 20.2247 +\textbf{nominal\_primrec} packages, Nitpick relies on the more natural
 20.2248 +equational specification entered by the user.
 20.2249 +
 20.2250 +Behind the scenes, Isabelle's built-in packages and theories rely on the
 20.2251 +following attributes to affect Nitpick's behavior:
 20.2252 +
 20.2253 +\begin{itemize}
 20.2254 +\flushitem{\textit{nitpick\_def}}
 20.2255 +
 20.2256 +\nopagebreak
 20.2257 +This attribute specifies an alternative definition of a constant. The
 20.2258 +alternative definition should be logically equivalent to the constant's actual
 20.2259 +axiomatic definition and should be of the form
 20.2260 +
 20.2261 +\qquad $c~{?}x_1~\ldots~{?}x_n \,\equiv\, t$,
 20.2262 +
 20.2263 +where ${?}x_1, \ldots, {?}x_n$ are distinct variables and $c$ does not occur in
 20.2264 +$t$.
 20.2265 +
 20.2266 +\flushitem{\textit{nitpick\_simp}}
 20.2267 +
 20.2268 +\nopagebreak
 20.2269 +This attribute specifies the equations that constitute the specification of a
 20.2270 +constant. For functions defined using the \textbf{primrec}, \textbf{function},
 20.2271 +and \textbf{nominal\_\allowbreak primrec} packages, this corresponds to the
 20.2272 +\textit{simps} rules. The equations must be of the form
 20.2273 +
 20.2274 +\qquad $c~t_1~\ldots\ t_n \,=\, u.$
 20.2275 +
 20.2276 +\flushitem{\textit{nitpick\_psimp}}
 20.2277 +
 20.2278 +\nopagebreak
 20.2279 +This attribute specifies the equations that constitute the partial specification
 20.2280 +of a constant. For functions defined using the \textbf{function} package, this
 20.2281 +corresponds to the \textit{psimps} rules. The conditional equations must be of
 20.2282 +the form
 20.2283 +
 20.2284 +\qquad $\lbrakk P_1;\> \ldots;\> P_m\rbrakk \,\Longrightarrow\, c\ t_1\ \ldots\ t_n \,=\, u$.
 20.2285 +
 20.2286 +\flushitem{\textit{nitpick\_intro}}
 20.2287 +
 20.2288 +\nopagebreak
 20.2289 +This attribute specifies the introduction rules of a (co)in\-duc\-tive predicate.
 20.2290 +For predicates defined using the \textbf{inductive} or \textbf{coinductive}
 20.2291 +command, this corresponds to the \textit{intros} rules. The introduction rules
 20.2292 +must be of the form
 20.2293 +
 20.2294 +\qquad $\lbrakk P_1;\> \ldots;\> P_m;\> M~(c\ t_{11}\ \ldots\ t_{1n});\>
 20.2295 +\ldots;\> M~(c\ t_{k1}\ \ldots\ t_{kn})\rbrakk \,\Longrightarrow\, c\ u_1\
 20.2296 +\ldots\ u_n$,
 20.2297 +
 20.2298 +where the $P_i$'s are side conditions that do not involve $c$ and $M$ is an
 20.2299 +optional monotonic operator. The order of the assumptions is irrelevant.
 20.2300 +
 20.2301 +\end{itemize}
 20.2302 +
 20.2303 +When faced with a constant, Nitpick proceeds as follows:
 20.2304 +
 20.2305 +\begin{enum}
 20.2306 +\item[1.] If the \textit{nitpick\_simp} set associated with the constant
 20.2307 +is not empty, Nitpick uses these rules as the specification of the constant.
 20.2308 +
 20.2309 +\item[2.] Otherwise, if the \textit{nitpick\_psimp} set associated with
 20.2310 +the constant is not empty, it uses these rules as the specification of the
 20.2311 +constant.
 20.2312 +
 20.2313 +\item[3.] Otherwise, it looks up the definition of the constant:
 20.2314 +
 20.2315 +\begin{enum}
 20.2316 +\item[1.] If the \textit{nitpick\_def} set associated with the constant
 20.2317 +is not empty, it uses the latest rule added to the set as the definition of the
 20.2318 +constant; otherwise it uses the actual definition axiom.
 20.2319 +\item[2.] If the definition is of the form
 20.2320 +
 20.2321 +\qquad $c~{?}x_1~\ldots~{?}x_m \,\equiv\, \lambda y_1~\ldots~y_n.\; \textit{lfp}~(\lambda f.\; t)$,
 20.2322 +
 20.2323 +then Nitpick assumes that the definition was made using an inductive package and
 20.2324 +based on the introduction rules marked with \textit{nitpick\_\allowbreak
 20.2325 +ind\_\allowbreak intros} tries to determine whether the definition is
 20.2326 +well-founded.
 20.2327 +\end{enum}
 20.2328 +\end{enum}
 20.2329 +
 20.2330 +As an illustration, consider the inductive definition
 20.2331 +
 20.2332 +\prew
 20.2333 +\textbf{inductive}~\textit{odd}~\textbf{where} \\
 20.2334 +``\textit{odd}~1'' $\,\mid$ \\
 20.2335 +``\textit{odd}~$n\,\Longrightarrow\, \textit{odd}~(\textit{Suc}~(\textit{Suc}~n))$''
 20.2336 +\postw
 20.2337 +
 20.2338 +Isabelle automatically attaches the \textit{nitpick\_intro} attribute to
 20.2339 +the above rules. Nitpick then uses the \textit{lfp}-based definition in
 20.2340 +conjunction with these rules. To override this, we can specify an alternative
 20.2341 +definition as follows:
 20.2342 +
 20.2343 +\prew
 20.2344 +\textbf{lemma} $\mathit{odd\_def}'$ [\textit{nitpick\_def}]: ``$\textit{odd}~n \,\equiv\, n~\textrm{mod}~2 = 1$''
 20.2345 +\postw
 20.2346 +
 20.2347 +Nitpick then expands all occurrences of $\mathit{odd}~n$ to $n~\textrm{mod}~2
 20.2348 += 1$. Alternatively, we can specify an equational specification of the constant:
 20.2349 +
 20.2350 +\prew
 20.2351 +\textbf{lemma} $\mathit{odd\_simp}'$ [\textit{nitpick\_simp}]: ``$\textit{odd}~n = (n~\textrm{mod}~2 = 1)$''
 20.2352 +\postw
 20.2353 +
 20.2354 +Such tweaks should be done with great care, because Nitpick will assume that the
 20.2355 +constant is completely defined by its equational specification. For example, if
 20.2356 +you make ``$\textit{odd}~(2 * k + 1)$'' a \textit{nitpick\_simp} rule and neglect to provide rules to handle the $2 * k$ case, Nitpick will define
 20.2357 +$\textit{odd}~n$ arbitrarily for even values of $n$. The \textit{debug}
 20.2358 +(\S\ref{output-format}) option is extremely useful to understand what is going
 20.2359 +on when experimenting with \textit{nitpick\_} attributes.
 20.2360 +
 20.2361 +\section{Standard ML Interface}
 20.2362 +\label{standard-ml-interface}
 20.2363 +
 20.2364 +Nitpick provides a rich Standard ML interface used mainly for internal purposes
 20.2365 +and debugging. Among the most interesting functions exported by Nitpick are
 20.2366 +those that let you invoke the tool programmatically and those that let you
 20.2367 +register and unregister custom coinductive datatypes.
 20.2368 +
 20.2369 +\subsection{Invocation of Nitpick}
 20.2370 +\label{invocation-of-nitpick}
 20.2371 +
 20.2372 +The \textit{Nitpick} structure offers the following functions for invoking your
 20.2373 +favorite counterexample generator:
 20.2374 +
 20.2375 +\prew
 20.2376 +$\textbf{val}\,~\textit{pick\_nits\_in\_term} : \\
 20.2377 +\hbox{}\quad\textit{Proof.state} \rightarrow \textit{params} \rightarrow \textit{bool} \rightarrow \textit{term~list} \rightarrow \textit{term} \\
 20.2378 +\hbox{}\quad{\rightarrow}\; \textit{string} * \textit{Proof.state}$ \\
 20.2379 +$\textbf{val}\,~\textit{pick\_nits\_in\_subgoal} : \\
 20.2380 +\hbox{}\quad\textit{Proof.state} \rightarrow \textit{params} \rightarrow \textit{bool} \rightarrow \textit{int} \rightarrow \textit{string} * \textit{Proof.state}$
 20.2381 +\postw
 20.2382 +
 20.2383 +The return value is a new proof state paired with an outcome string
 20.2384 +(``genuine'', ``likely\_genuine'', ``potential'', ``none'', or ``unknown''). The
 20.2385 +\textit{params} type is a large record that lets you set Nitpick's options. The
 20.2386 +current default options can be retrieved by calling the following function
 20.2387 +defined in the \textit{NitpickIsar} structure:
 20.2388 +
 20.2389 +\prew
 20.2390 +$\textbf{val}\,~\textit{default\_params} :\,
 20.2391 +\textit{theory} \rightarrow (\textit{string} * \textit{string})~\textit{list} \rightarrow \textit{params}$
 20.2392 +\postw
 20.2393 +
 20.2394 +The second argument lets you override option values before they are parsed and
 20.2395 +put into a \textit{params} record. Here is an example:
 20.2396 +
 20.2397 +\prew
 20.2398 +$\textbf{val}\,~\textit{params} = \textit{NitpickIsar.default\_params}~\textit{thy}~[(\textrm{``}\textrm{timeout}\textrm{''},\, \textrm{``}\textrm{none}\textrm{''})]$ \\
 20.2399 +$\textbf{val}\,~(\textit{outcome},\, \textit{state}') = \textit{Nitpick.pick\_nits\_in\_subgoal}~\begin{aligned}[t]
 20.2400 +& \textit{state}~\textit{params}~\textit{false} \\[-2pt]
 20.2401 +& \textit{subgoal}\end{aligned}$
 20.2402 +\postw
 20.2403 +
 20.2404 +\subsection{Registration of Coinductive Datatypes}
 20.2405 +\label{registration-of-coinductive-datatypes}
 20.2406 +
 20.2407 +\let\antiq=\textrm
 20.2408 +
 20.2409 +If you have defined a custom coinductive datatype, you can tell Nitpick about
 20.2410 +it, so that it can use an efficient Kodkod axiomatization similar to the one it
 20.2411 +uses for lazy lists. The interface for registering and unregistering coinductive
 20.2412 +datatypes consists of the following pair of functions defined in the
 20.2413 +\textit{Nitpick} structure:
 20.2414 +
 20.2415 +\prew
 20.2416 +$\textbf{val}\,~\textit{register\_codatatype} :\,
 20.2417 +\textit{typ} \rightarrow \textit{string} \rightarrow \textit{styp~list} \rightarrow \textit{theory} \rightarrow \textit{theory}$ \\
 20.2418 +$\textbf{val}\,~\textit{unregister\_codatatype} :\,
 20.2419 +\textit{typ} \rightarrow \textit{theory} \rightarrow \textit{theory}$
 20.2420 +\postw
 20.2421 +
 20.2422 +The type $'a~\textit{llist}$ of lazy lists is already registered; had it
 20.2423 +not been, you could have told Nitpick about it by adding the following line
 20.2424 +to your theory file:
 20.2425 +
 20.2426 +\prew
 20.2427 +$\textbf{setup}~\,\{{*}\,~\!\begin{aligned}[t]
 20.2428 +& \textit{Nitpick.register\_codatatype} \\[-2pt]
 20.2429 +& \qquad @\{\antiq{typ}~``\kern1pt'a~\textit{llist}\textrm{''}\}~@\{\antiq{const\_name}~ \textit{llist\_case}\} \\[-2pt] %% TYPESETTING
 20.2430 +& \qquad (\textit{map}~\textit{dest\_Const}~[@\{\antiq{term}~\textit{LNil}\},\, @\{\antiq{term}~\textit{LCons}\}])\,\ {*}\}\end{aligned}$
 20.2431 +\postw
 20.2432 +
 20.2433 +The \textit{register\_codatatype} function takes a coinductive type, its case
 20.2434 +function, and the list of its constructors. The case function must take its
 20.2435 +arguments in the order that the constructors are listed. If no case function
 20.2436 +with the correct signature is available, simply pass the empty string.
 20.2437 +
 20.2438 +On the other hand, if your goal is to cripple Nitpick, add the following line to
 20.2439 +your theory file and try to check a few conjectures about lazy lists:
 20.2440 +
 20.2441 +\prew
 20.2442 +$\textbf{setup}~\,\{{*}\,~\textit{Nitpick.unregister\_codatatype}~@\{\antiq{typ}~``
 20.2443 +\kern1pt'a~\textit{list}\textrm{''}\}\ \,{*}\}$
 20.2444 +\postw
 20.2445 +
 20.2446 +\section{Known Bugs and Limitations}
 20.2447 +\label{known-bugs-and-limitations}
 20.2448 +
 20.2449 +Here are the known bugs and limitations in Nitpick at the time of writing:
 20.2450 +
 20.2451 +\begin{enum}
 20.2452 +\item[$\bullet$] Underspecified functions defined using the \textbf{primrec},
 20.2453 +\textbf{function}, or \textbf{nominal\_\allowbreak primrec} packages can lead
 20.2454 +Nitpick to generate spurious counterexamples for theorems that refer to values
 20.2455 +for which the function is not defined. For example:
 20.2456 +
 20.2457 +\prew
 20.2458 +\textbf{primrec} \textit{prec} \textbf{where} \\
 20.2459 +``$\textit{prec}~(\textit{Suc}~n) = n$'' \\[2\smallskipamount]
 20.2460 +\textbf{lemma} ``$\textit{prec}~0 = \undef$'' \\
 20.2461 +\textbf{nitpick} \\[2\smallskipamount]
 20.2462 +\quad{\slshape Nitpick found a counterexample for \textit{card nat}~= 2: 
 20.2463 +\nopagebreak
 20.2464 +\\[2\smallskipamount]
 20.2465 +\hbox{}\qquad Empty assignment} \nopagebreak\\[2\smallskipamount]
 20.2466 +\textbf{by}~(\textit{auto simp}: \textit{prec\_def})
 20.2467 +\postw
 20.2468 +
 20.2469 +Such theorems are considered bad style because they rely on the internal
 20.2470 +representation of functions synthesized by Isabelle, which is an implementation
 20.2471 +detail.
 20.2472 +
 20.2473 +\item[$\bullet$] Nitpick produces spurious counterexamples when invoked after a
 20.2474 +\textbf{guess} command in a structured proof.
 20.2475 +
 20.2476 +\item[$\bullet$] The \textit{nitpick\_} attributes and the
 20.2477 +\textit{Nitpick.register\_} functions can cause havoc if used improperly.
 20.2478 +
 20.2479 +\item[$\bullet$] Local definitions are not supported and result in an error.
 20.2480 +
 20.2481 +\item[$\bullet$] All constants and types whose names start with
 20.2482 +\textit{Nitpick}{.} are reserved for internal use.
 20.2483 +\end{enum}
 20.2484 +
 20.2485 +\let\em=\sl
 20.2486 +\bibliography{../manual}{}
 20.2487 +\bibliographystyle{abbrv}
 20.2488 +
 20.2489 +\end{document}
    21.1 --- a/doc-src/TutorialI/Misc/Itrev.thy	Tue Oct 27 12:59:57 2009 +0000
    21.2 +++ b/doc-src/TutorialI/Misc/Itrev.thy	Tue Oct 27 14:46:03 2009 +0000
    21.3 @@ -2,7 +2,7 @@
    21.4  theory Itrev
    21.5  imports Main
    21.6  begin
    21.7 -ML"Unsynchronized.reset NameSpace.unique_names"
    21.8 +ML"Unsynchronized.reset unique_names"
    21.9  (*>*)
   21.10  
   21.11  section{*Induction Heuristics*}
   21.12 @@ -141,6 +141,6 @@
   21.13  \index{induction heuristics|)}
   21.14  *}
   21.15  (*<*)
   21.16 -ML"Unsynchronized.set NameSpace.unique_names"
   21.17 +ML"Unsynchronized.set unique_names"
   21.18  end
   21.19  (*>*)
    22.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.2 +++ b/doc-src/gfx/isabelle_nitpick.eps	Tue Oct 27 14:46:03 2009 +0000
    22.3 @@ -0,0 +1,6488 @@
    22.4 +%!PS-Adobe-2.0 EPSF-1.2
    22.5 +%%Title: isabelle_any
    22.6 +%%Creator: FreeHand 5.5
    22.7 +%%CreationDate: 24.09.1998 21:04 Uhr
    22.8 +%%BoundingBox: 0 0 202 178
    22.9 +%%FHPathName:MacSystem:Home:Markus:TUM:Isabelle Logo:export:isabelle_any
   22.10 +%ALDOriginalFile:MacSystem:Home:Markus:TUM:Isabelle Logo:export:isabelle_any
   22.11 +%ALDBoundingBox: -153 -386 442 456
   22.12 +%%FHPageNum:1
   22.13 +%%DocumentSuppliedResources: procset Altsys_header 4 0
   22.14 +%%ColorUsage: Color
   22.15 +%%DocumentProcessColors: Cyan Magenta Yellow Black
   22.16 +%%DocumentNeededResources: font Symbol
   22.17 +%%+ font ZapfHumanist601BT-Bold
   22.18 +%%DocumentFonts: Symbol
   22.19 +%%+ ZapfHumanist601BT-Bold
   22.20 +%%DocumentNeededFonts: Symbol
   22.21 +%%+ ZapfHumanist601BT-Bold
   22.22 +%%EndComments
   22.23 +%!PS-AdobeFont-1.0: ZapfHumanist601BT-Bold 003.001
   22.24 +%%CreationDate: Mon Jun 22 16:09:28 1992
   22.25 +%%VMusage: 35200 38400   
   22.26 +% Bitstream Type 1 Font Program
   22.27 +% Copyright 1990-1992 as an unpublished work by Bitstream Inc., Cambridge, MA.
   22.28 +% All rights reserved.
   22.29 +% Confidential and proprietary to Bitstream Inc.
   22.30 +% U.S. GOVERNMENT RESTRICTED RIGHTS
   22.31 +% This software typeface product is provided with RESTRICTED RIGHTS. Use,
   22.32 +% duplication or disclosure by the Government is subject to restrictions
   22.33 +% as set forth in the license agreement and in FAR 52.227-19 (c) (2) (May, 1987),
   22.34 +% when applicable, or the applicable provisions of the DOD FAR supplement
   22.35 +% 252.227-7013 subdivision (a) (15) (April, 1988) or subdivision (a) (17)
   22.36 +% (April, 1988).  Contractor/manufacturer is Bitstream Inc.,
   22.37 +% 215 First Street, Cambridge, MA 02142.
   22.38 +% Bitstream is a registered trademark of Bitstream Inc.
   22.39 +11 dict begin
   22.40 +/FontInfo 9 dict dup begin
   22.41 +  /version (003.001) readonly def
   22.42 +  /Notice (Copyright 1990-1992 as an unpublished work by Bitstream Inc.  All rights reserved.  Confidential.) readonly def
   22.43 +  /FullName (Zapf Humanist 601 Bold) readonly def
   22.44 +  /FamilyName (Zapf Humanist 601) readonly def
   22.45 +  /Weight (Bold) readonly def
   22.46 +  /ItalicAngle 0 def
   22.47 +  /isFixedPitch false def
   22.48 +  /UnderlinePosition -136 def
   22.49 +  /UnderlineThickness 85 def
   22.50 +end readonly def
   22.51 +/FontName /ZapfHumanist601BT-Bold def
   22.52 +/PaintType 0 def
   22.53 +/FontType 1 def
   22.54 +/FontMatrix [0.001 0 0 0.001 0 0] readonly def
   22.55 +/Encoding StandardEncoding def
   22.56 +/FontBBox {-167 -275 1170 962} readonly def
   22.57 +/UniqueID 15530396 def
   22.58 +currentdict end
   22.59 +currentfile eexec
   22.60 +a2951840838a4133839ca9d22e2b99f2b61c767cd675080aacfcb24e19cd
   22.61 +1336739bb64994c56737090b4cec92c9945ff0745ef7ffc61bb0a9a3b849
   22.62 +e7e98740e56c0b5af787559cc6956ab31e33cf8553d55c0b0e818ef5ec6b
   22.63 +f48162eac42e7380ca921dae1c82b38fd6bcf2001abb5d001a56157094cf
   22.64 +e27d8f4eac9693e88372d20358b47e0c3876558ebf757a1fbc5c1cddf62b
   22.65 +3c57bf727ef1c4879422c142a084d1c7462ac293e097fabe3a3ecfcd8271
   22.66 +f259833bac7912707218ec9a3063bf7385e02d8c1058ac06df00b33b8c01
   22.67 +8768b278010eb4dd58c7ba59321899741cb7215d8a55bee8d3398c887f02
   22.68 +e1f4869387f89141de693fcb429c7884c22dcdeddcaa62b7f5060249dfab
   22.69 +cfc351201f7d188b6ed68a228abda4d33b3d269ac09cde172bc045e67449
   22.70 +c0f25d224efbe8c9f9d2968a01edbfb039123c365ed0db58ad38aabe015b
   22.71 +8881191dd23092f6d53d5c1cd68ebd038e098d32cb24b433b7d5d89c28ee
   22.72 +05ea0b6070bb785a2974b5a160ee4cf8b6d8c73445d36720af0530441cd9
   22.73 +61bc0c367f1af1ec1c5ab7255ddda153c1868aba58cd5b44835535d85326
   22.74 +5d7fed5ff7118adb5d5b76cc3b72e5ff27e21eb857261b3afb7688fca12d
   22.75 +1663b0d8bdc1dd47a84b65b47d3e76d3b8fa8b319f17e1bb22b45a7482fd
   22.76 +f9ad1b6129e09ae47f15cd2447484cd2d64f59ab0f2f876c81e7d87ccdf9
   22.77 +005aa8fc093d02db51a075d571e925f2d309a1c535a1e59d34215c6cd33e
   22.78 +3c38997b4956461f376399901a8d0943dca6a335baac93fc8482c0659f04
   22.79 +329c6f040b35828ea6dd1bd1858f2a9be4ef77731b5b75a1c536c6bc9479
   22.80 +0821e5d88f6e2981835dbfd65ec254ebcf2cf49c917d121cd3bbb476a12b
   22.81 +69c15f17d9c17bb15ad1e7d31d2afcf58c8f0ad526d68615a0f1ac3b1d1c
   22.82 +d3beafeea3cf56c8f8a66367c70df9159f0b1b3157ccfd010045c4718e0e
   22.83 +625c0891e85790c9b97b85517c74c9d55eaca31a01cddc64898bf0eeadf3
   22.84 +53391a185e507dcb0a6f52661a56357ac818dfc740a540aadf02f4e7a79d
   22.85 +8008a77cd30abde337025b01217d6a68c306abe145b7260c3478fa5f366f
   22.86 +b2d37259ead8a8ec2db2f09ae0eb3a682d27b0d73a60935f80254c24426a
   22.87 +003a87a29a4370cbf1b2ef1e19ad8466ec725fd5b463d06011a5e0da2258
   22.88 +ff6c1483c4532bc21f2ed9b99b929b2800ddefc1a98d12ba085adc210bac
   22.89 +e0274b69e24d16af015a51ca73edf779a7534a887aa780337ad966839881
   22.90 +edc22ba72038aa1a96a6deba24ad676795da711b92f8cf5f54cb4322ec04
   22.91 +40ef9e15b11e3005f3ff69376ecb29bb66e8fc1b685f2b05fb162fcb35aa
   22.92 +d7eb2a8ec39b97ab1ff05ef02f8dbbc12085a5cd252cc4010fab7f63dfd5
   22.93 +7fa1be86f724d37db5faef17ae8e8e537444e8e9db917b270344183473af
   22.94 +7f47d5703a160d8ef1e772438620d3336b2fbcf6433612e4b5e64fae0329
   22.95 +8a3c4010c17d93f13ba66d549c69dd58c7d26ddc90285fed831918563a16
   22.96 +2a7ac2511e2f18c9eb3df905a9dcba65a31cc1c39f07458abb11b4c60346
   22.97 +aea19070e126982f1dde336e79be0ecd69a8afbe2493d064d4d2ff38788b
   22.98 +b3038125961302db9761403c3b8019ec641e107425002205a77ae2ae0f4f
   22.99 +7550d623dd03f0ec0199f42a9a8b89514e2e21baca9b3c8c96ca48cbf9dc
  22.100 +ee6d6241d713e014b49e83ad85e62a6b2f70b58e4cc72d41ea6fcbdd3b5c
  22.101 +890c8af0d24200658773b1628c6cc9aaaabb08865ee4c7ff2c513ad7aa23
  22.102 +155a321213fa94731683a3e282a0e60aa3c87aade3da231465bdd9097f2c
  22.103 +89a1af8e5b9649143f2d9482546501ea97e8bea2f5d5eea97d4f19bb6835
  22.104 +3138d3babb2461c08d537491aaede1f23d734c6f099eb5bef6e2ffaaf138
  22.105 +e5ab71b8b41599091037e440127a4eaedf208c20c8a2fc62eadab191d1ab
  22.106 +4d5531f826aa6b9fff2797a7f54673e0a3fae09a93a0dfafb8b11d60dc69
  22.107 +5acf9b7e1a47c31d0b5a0b85b7b50cddff5ac831651d9c7469c2139c7a89
  22.108 +7d2f868f36c65156921803eccfdbdd1618595ab6d2a9230ef523a1b5ee51
  22.109 +f2a0d200fc0e94aff7f546593ff2a3eb865d129895af01b8ab6e4616fe20
  22.110 +9123b6e2b7e0817adc3cdb78ae8b0b1d75f2986ebd8fb24c4de92ac9e8c3
  22.111 +6afa520636bcad2e6a03d11c268d97fa578561f6e7523e042c4cc73a0eac
  22.112 +7a841907450e83d8e7a8de4db5085f6e8b25dc85b59e018380f4b9523a7f
  22.113 +02cbeec989f0221b7681ec427519062b429dcd8fc2e4f81173519f88e2e4
  22.114 +3798b90a84060920f6ae789afd6a9182e7fec87cd2d4235d37a65c3f3bcc
  22.115 +c742c89cbe5f3e2ba6c4f40ebba162e12569d20684cc167685285a087e7a
  22.116 +0a995fe1939bf25c09553512ba2cf77ef21d2ef8da1c73ba6e5826f4099e
  22.117 +27d8bc7b3545fc592b75228e70127c15a382774357457cd4586d80dc0bd6
  22.118 +065aee32acfd5c0523303cece85a3dbf46853b917618c0330146f527c15b
  22.119 +dbb9f6526964368b2b8593eed1551dad75659565d54c6a0a52da7a8e366f
  22.120 +dd009ef853491c0fb995e19933cba1dbdc8902721c3ea6017ffdd5851cb8
  22.121 +3c8bada46075ac121afe13a70e87529e40693157adcc999ed4657e017adf
  22.122 +f7dbac4bc0d204f204c6f47b769aaf714f9ec1d25226f24d0a1b53e28ac5
  22.123 +374ab99755852c1431b2486df5fd637e2005a25303345a1c95a15a1189ba
  22.124 +f6f6883de1ad46d48427b137c2003d210ab2b2f5680f2633939f289d7553
  22.125 +eb943adf8127f1c3ee7d6453b5566393700ad74ab86eb9a89f8b0380af55
  22.126 +6b62f51b7dbd0c5dcc9a9fb658944d7ad5845d58dedc2d38200d0ef7cb0f
  22.127 +76041dc104ef3ab89c1dc2f6a75635d48051c8a7dd9f5e60253a53957ec8
  22.128 +9d1266566d7ed20d79dfc2807b397d7cf056bdaccdb72528a88aa4987682
  22.129 +c909b2fe1e35a71c2f29e89a2bf32173967e79610367ce4574ba6a1cc031
  22.130 +cfb176fc0313f74f91a866ef9954b95b29caf917a6b919586f54d23cb7ce
  22.131 +23305886ae7760ebd6263df0d3c511ac7afc361df78bc2621f66d3268b99
  22.132 +078fa59124f0eb9476496c938eb4584e87455dc6f2faa999e938460b31c6
  22.133 +28021c652acfa12d4556aa4302bbcd043e60389480b796c3fc0b2e51b81e
  22.134 +c2afa4a34335318a1c5a842dcaa120df414acba2e79ab5cc61c99e98108c
  22.135 +5cb907a96b30d731131782f9df79aabfc16a20ace8852d047497982e11c8
  22.136 +26321addf679de8a96a2d18743f6f2c3b2bc397370b10ad273fcfb76b48b
  22.137 +9dad27cf89ca2c370149cd48ab956e9bbce01cbf8e1f0c661b99cf19b36e
  22.138 +87b6165dd85ae3f3674525e17d85971093e110520d17f2d6253611e35ec9
  22.139 +e17000e48e2926454c1e8eb4098e0115b49536f2c33505eb5e574f7a414b
  22.140 +e176398c5ddf6d846ea5ddf2a5e94c0422e0115c57a8c9e56bf8ba962c82
  22.141 +698c96bd6138baaca7347e44352cc62df4eeba364954ad921a5a43280980
  22.142 +264df4a7fb29d005423179f7bd1d98b4280d62ce23c927551f1ffc2b8f17
  22.143 +0a9c23656c0c91b640cdcfdbd88089ffb28d3ac68bad25dbbed82c083696
  22.144 +1f9f86a6183cc1061ffdb32279796569d05b31c946955402d0be1fb9f2bf
  22.145 +304d1ad8e1e357be49e6e2ee67f7f1e7bc699d46a5f7853fe659ba2e1930
  22.146 +0d3e3ea658b9862701dcab08fdd23bf1d751777f25efbe9e02d12b5612b3
  22.147 +c3fc2275190346b94ec4024e4ade08e54d75c0b4c48f4956b9182e8ce997
  22.148 +74b54da4a9318c099d89f1ce3b6803a95f48b9fb8b845372be25e54478e8
  22.149 +49e4707ea03a36e134efa661e4e6250d89649ae074cfd9d6b9e2071c1099
  22.150 +3b8a5a5ebc3e1cb228c97565aef7f254e3f90af8a3dd281c83792755719d
  22.151 +c6a5b3bab4aa6be5afe9624050eee8dfb13b018f4088c932cd48ace38dfe
  22.152 +b1b4218dba8f7fada6628076acf1b54db0c95d4fb12232f1fa9d1ba848f9
  22.153 +fe80c65b75d6946c00fe78839142c5302707d9269b24565dbcc551aca060
  22.154 +b4d0f99b961dd3cc795a982063ac42e9fc81fc98add42744a9f92e74b00d
  22.155 +637ee4606ea2099b6c763493c3159f8e52a90dafca682010c0e92bc9038a
  22.156 +10abb066c75c8d97f7ad6fb1a37136e52cf2093c4fa485fe12adad10e4d0
  22.157 +83b78b023628ddc5326cbf8392516027a9f3de4945f93488e4a1997efd2a
  22.158 +22c2c136dbac1bdb829e082beac48cdd06dcb17bacf09451c7b636bd49a8
  22.159 +fc60cb1d2292250bea78e1dd276725ab4c526b66ddabf4e1b2bf0a2571df
  22.160 +2490df70735f5da321fac74fe4fab54444e53dace9832cff38a70c58104a
  22.161 +4f0c0545dcf7a1a9ecb54e0e32d6d8195d30b2c98a567741fcf325a4ddeb
  22.162 +244a1a35676e246ddc835fac13b569f35f22ec93191eca3efbe17ff9a950
  22.163 +d08f863710b2bbecec969068c498eb2338b68f3fc3f5447449fe4de2b065
  22.164 +e068ecd9255d369b2bb6c4b0b7423774bed69294758aca2bdb1a8d5bf618
  22.165 +d3fa09462f7838e8a79b7a53bebe6dacb0a1561eaa074bc6f069f6a06fb2
  22.166 +c4a5cb13e2172bce9be659a82665da5cded73da84322bb16aa6e19ac1958
  22.167 +7515cb5d2b65e65e803f76700ce5efd3df7fe4ed431fae0e8e286b1d5056
  22.168 +a0d18df926b2be7a93c503ab903abd4788680a6201fdc299f2cb5d6a9b6e
  22.169 +2048109c8d1fb633a54128938594b2cce86a7e0185e7d59e6536584039ec
  22.170 +9e30ff7be6ddba9fdba82de7415fdc47de84d97afb1aa3ba495bd91dee9d
  22.171 +f3b21ee1164987dd8510925087cd0919f1085cba6e4dd3c7384d26667f94
  22.172 +ad7f736a60d8bd76dfaa4b53c23536fc309ff2317c48ee0107ff2ca4d1b3
  22.173 +f78c5a27b901c931128bdb636094ef0cd543a5b62b7dbe10ed83aed5780c
  22.174 +a16067a4a7e8b7c5bf8a8e822149bc1b5bcdabe13a7f6aa6eaeff24a42f4
  22.175 +a58a2b70f545103540169137fda9abb589f734b6776cb50402d6123ce802
  22.176 +10dce05e3697a98c9411cf60a02c278c91e03d540b936cd00c668960e357
  22.177 +1aeaf4d94cfb496b259ec0d8fdba9199fb46634ff177bc8d310ea1314eef
  22.178 +d46c927a981c58e88743ed4e07d80fe841edee812e3053412bf2e710146c
  22.179 +b25dec8ea70c38bb1f6e4db3c2e8ba521963c1584eeb60ea1e9555058f13
  22.180 +e98307c13cbd15c26b611f543149b1ddf88dd6296ae703f58daeb67f1b03
  22.181 +ab5b24c72d5770cb9d8ed242c4faaad1dd940ada00e98ff3a61799d13355
  22.182 +aba916910aa9a6e5ee8af438d0ba8235346fcd139b9d2cb7db7bd3f298a3
  22.183 +94ff0aff3b9042f32a004e042c346a5ea35917f229848a9c5a32909b0090
  22.184 +4aa715640277a6ada99f8b2927fda22899ff1347f42bac73e2bd4bbf3945
  22.185 +55fd7dd30d5c6dadf5c259fdb2455d8c607de1c5da588e20159f18e4e8da
  22.186 +b714e532d888a0386c52c2b85964251af003ac9d10c0c8b9b3465e1dde48
  22.187 +2e74a29e17a7cf6c9a43b5af1646f0b8508f98e9a1279ec3908073d89dcb
  22.188 +aa093e8dd1004c1ecccce0803095b0069d4be7a1eb14b02efc37d137dfe3
  22.189 +f0190bc9628069abc257f45d0e050e60c7f5281277937dd986fcd5b94a2b
  22.190 +845a1a75addd74a142800f18ef408c08a2c2ad16a93298f148c0ae7d2990
  22.191 +ded147f92f053809a60d4f992a227167aad5b5eb2bbe8a4a77dc77a08b72
  22.192 +6acb34422e2532eec7e274e4a42d71ee584f5f3df5a3a5b379974ede73ab
  22.193 +5f1b0a2dbfcc8cfac4747ca26eb6030dc2f85a104b754432977850c093b9
  22.194 +97ed90af711b544ff682e7b1eac82b2b7b44014b09c17ecf084c994a095d
  22.195 +9eeef5391305caf093b62ac9916f982a436d521fcf4d75c5b8e4d92266fd
  22.196 +e99a58aa39d7693ecd1796b8851761d64bbca39a6d5a0b4533ae47123327
  22.197 +f98d0ad0e8b36625cc3647b55459552906d8a1d5766845ffac101980efcf
  22.198 +79657e365510be5db557cefef21193ca3cf3dad175ee2e7ae91d174fdc06
  22.199 +2ff5c51ffe2f021122e96df042019d3a1883e662537ec1b69c11fbb6e750
  22.200 +0132eabf5803c816153ecbff60ca3b3b39708c26cb1751afb2e65d8e5f4a
  22.201 +c4397a88fb1f112672fcdd24e4ba545c5b2a7968c17b62f8e2530a8acbff
  22.202 +cfca82c64b7abcab84e2c4a0a7ced67b15669301fe9ff2c756e70ff7ce33
  22.203 +497be6acc4ac5617e1f043bd8a87416299a39bf17fc31c02d72d75fdc2a1
  22.204 +e60669fa4d5e4a49d9afea2f53f4626680e9c0dfca223529efa415c4343a
  22.205 +b6067aa800c484457ea050eaaa5d3fafeedd0eec72f327e02c6b3912b5a8
  22.206 +c404de4839c9c4a99da42681cde43316606a34c7d2f02269de1aab776857
  22.207 +e668f35946af4d618d36d444bdc02b1f63ea25b6260b4fb606ac8575b5c9
  22.208 +782a5de4037350d5753b1537537ccb008c454eeb264e6cd4727c999e240e
  22.209 +0ac89e95a896b67d54910a3531345f64198ad394b5ceb52881f1dd9e6beb
  22.210 +95862dc188d45b3e46aacb5fe40097947dab9bc3c1ee46bfc9b1b3ed6167
  22.211 +efd0d65ceb043d7b24c1456676e4baa47b1209a315f199bb3a91f4374cd9
  22.212 +cc0b40d3f09f19f8dd8a46915eee55eeeeb3c7b8f437106ee491ef0f4ff9
  22.213 +2c5c6f779e0fbe7bd5293964bb645ca362b106abeb773571d9ae83b786a3
  22.214 +d5a4ea3ea970daadc46cc5e6037f76fd20e0fffc47cf4e7af9522b91f96b
  22.215 +3297720fd45d9bc2200622ad2ca9445556c8a8202b1991bc63da360d021d
  22.216 +55be2528e043f803e08da99b91ab9cfc5e65b2655d78206b4aecd445a7b0
  22.217 +1caa0d06b0a55e8f04b70b60b04a860c8e1ab439f4910051e3f7441b47c7
  22.218 +8aa3ab8519f181a9e833f3242fa58d02ed76bf0031f71f9def8484ecced8
  22.219 +b6e41aca56176b6b32a2443d12492c8a0f5ba8a3e227219dfd1dd23fcb48
  22.220 +fcfd255dbbf3e198874e607399db8d8498e719f00e9ed8bdd96c88817606
  22.221 +357a0063c23854e64ad4e59ddd5060845b2c4cddd00c40081458f8ee02c7
  22.222 +303c11747bd104440046bf2d09794fca2c4beb23ed1b66d9ccb9a4dd57ad
  22.223 +a24943461ecc00704c916bdc621bfddb17913dfb0f3513b65f3ab015786a
  22.224 +caa51ee9546bc8ddf87e2e104137e35ddf8f8d23724e9a53824169bc7cfa
  22.225 +99562656e6f1c888d4dbff0b269c5d1e733e5f212d91297610201eb43249
  22.226 +35e336dd0052738db2d64f3e89429903bb5c1810009cf766e9a06223dd2f
  22.227 +219b706394a121dc029af55c6ada9052af59682ef7c51e121cf16f0319ac
  22.228 +0aa9512ef900c548d673fe361da19052808797e958209072e145d46ec8cc
  22.229 +a89fafd76630eff30ae979973bdf0f8c9e469d8edd3b1c93731c72f976b7
  22.230 +d81142bc15c376403f967affaa5f482efd57c6f91970729d16db851f0ed3
  22.231 +ea7d82f409307b5b436886c1beda94a1fa3ab1b60686f6574c844fb2c0b3
  22.232 +a07174dc4f27b4fed2f8bd4d5436be4b343e5efdf0400d235bd910255341
  22.233 +a20770804a26f8437e9bce6da8e9f8258a343c7aee291f1510be306ae67a
  22.234 +ab1d7696453530c02fd153bbe49dbf62baad6146029cbd1656cdb76c952c
  22.235 +b93edfee76fe33832930be59636bb947e8ad285f20f663cccf484fba97d6
  22.236 +7446c7b6c6f5857428bb1737d9ae801df75d9cb4d7bd59ef7a4cbadde928
  22.237 +38f15d232005585d2e40483d2d3e08cc8f398bb43afedb84343c3ba3835d
  22.238 +0ba82a86dce859cf655f85e63e41365e0dbefcf511b9a27a2b6e66b2ad3a
  22.239 +c657902842287a317e46ceaa93b5088f09d53a65815b44538af90ad3b06b
  22.240 +4e5e2dc509f02e30a01e05201c67d4d39582bbe64e20b669f5fd787909a3
  22.241 +30fc50a95b31426bbb57a4fbf9feacdc31f98bcf50da7e50c2bfc169c6fd
  22.242 +ccf213cdb878653bcea372968ea6e31fd30dd55434cc91c0af22179ce669
  22.243 +a05493f195e12432c6173ae2ac3c94fb83f38210014a9f969ea2b44e99f5
  22.244 +e5a7317e848d429ad62167a4fc5001149676c0c28cdf59b8d1c5a582f516
  22.245 +3eee855312777fee6dacbf993f5c058f355dbde6552dc960d336eee445dd
  22.246 +11d53fd21b745d1e5ec317efbbef25e070d0a36797a6081c356ac2328e64
  22.247 +e5c55fbc81dc75d9c1575548ece74b8307eef485aa8e28859a2e0435c831
  22.248 +23a600efb323c362fe9f02407a5411c41a69566cd50add324b63ab939980
  22.249 +b9d7a929ae4887163cfa7acbfc9fabaab8987a1f6906b9881491cd055b94
  22.250 +485c968479dbb05b34ed0cd6844729a692978c6928c3392e33e8324ded88
  22.251 +814cacdac8128e1425c0091a13558100d7cdbed5992795d94d39c32f32dc
  22.252 +621ab6f3b75187a66741f61d6a9c91d791b1cfc3d0e94d4a76302e0c3f2e
  22.253 +cbdc51f14f3251aa5c8bb989f0e13ee500b7b7f2f1e52ca970ad8a7b4b99
  22.254 +57e93126254297380d67179deb8ff1e99d5cdf7a35c5bb9fa7b402e63234
  22.255 +78640344e1f10c378ad23c5cd1aa18e1e0b308db70d3a624a455f8e291a2
  22.256 +ee102ad10776208c2d546cb76d89ca8103a8b95f8acc2d2bdc9791324915
  22.257 +6c9e05429091071f0c5b76d82c8d1c8a69d840fd460922cd2090624bc218
  22.258 +0c9391005926a25042a55e322060807363462e1cdeab309033124ba3a884
  22.259 +1db13f39edae04ec52cde9dbde64ddda1ad805141d4230ec76bd81fd98d7
  22.260 +0d90fa1aaa26ea551bf687ddd6cdcf3de5a446b266c68434f07d9c0b382d
  22.261 +5816c4e22f22cc03ff78064c6dffb12315c6bcbbf5dc510f5aaabf23471a
  22.262 +234efceeb4aa2f9af9ea787c014c5587ef162fc5b35e8f4c23b168c6e247
  22.263 +41d33dcc11d2a56d3ba9d8eed6e79aebf9f0faf1a3aeb89d792d69041f0b
  22.264 +b8fadfc0aa090effc6ae5e2f13cdbf54b5bed69b039eef2627769613b6f1
  22.265 +aefe9b66747fe8feaf7455796740f411a770d4a1764f0483719584880f45
  22.266 +430e38d3af184145892a08b2add234a3f3ee4ccfc9f6995c02392adafccd
  22.267 +722f366d748cfe9373fbf5f878ed47e9d221fd156bb28369df9e7d2b79da
  22.268 +76120d135ebaf36cff93beb7e313c2b2de7477176fc19609a1b906c995cd
  22.269 +defef08899265b6b8aefb44da1aadefd1c523dce5ca1b84c0c652b3009fd
  22.270 +057789892d4d31764f181754b2e0a62c465587585509989a219711a5e4e2
  22.271 +5b3b340ca8fdd3f04fef204b1b722b2f6c2ccb00c3cf1a94ba9bdfbfeda9
  22.272 +e2a062c6f1ced3b8aae5dae32ade1fca1001f98d0ad0e8b36625cc3647b5
  22.273 +5459552906d8a788eb8bc734ccb65fe9582c71df94fd95d22c5323de235c
  22.274 +28220fb9a2ccb37362174d8cd5922c9e5a87b51d0668555100a33e33750e
  22.275 +f1f795cbed962494a994be7ce8cf71fc58ff4204551b1615ed27cf088171
  22.276 +fd000b72462b67935961e7c6c3a05bfd67b9ba094ea2c16fdf486da912e1
  22.277 +e97bfd1c17934535e551cede20c001b5d2adb2be4cbad7d6ba0bdeae4b1a
  22.278 +a739f90293e67ecbdeea4d35825e092697fb05b215083e3f3d6be260790e
  22.279 +2a175fd44eb1c4c16759504827a6eb58a838c4d65fec6eef108495577019
  22.280 +15740cac164111892e8d1cc447cd208e243a89ab847d8ebf4fb98bff49e7
  22.281 +a3453facf3b0e8cb67590f390173ddba68324531d2e426aed152e12301d7
  22.282 +538c1f3c0048a9cc00c009a1a9138460082123209c1e007266fbf236eb72
  22.283 +21f87d4ca38a0b699e84ca230ffb5095f90a6528bf2a9118f95ac9ab8d2d
  22.284 +ed9eed9b8b27be894b717469758c8d94fa89acc64f530f432d0e5f16c922
  22.285 +36d6a63410f099c9e909450fd731d698ef658d8ffc1de14817b850814f68
  22.286 +1a4a9be5cc7a71c381974c249f0b209bfdc2e97f9540c96f57bb4d283622
  22.287 +00969b82011315289e6a025b137030a0af3b4b42b00fed7cec49df43c59e
  22.288 +3b2495a036dd1b17a8e6adae63bfbbd48807c44b5bbf71813355e1b0e58e
  22.289 +22b6fb88005fc55565be49c17244901b73ef02fc4eb7669be5af22d89c0d
  22.290 +dff0fc6821d810d13e5821d48d4a71d7e463d5b60bc279d0dcf5f8da3a95
  22.291 +905b56d6f2be95e6d4243b1048e3b662e62401ffaa3bc3f5f90b0854b8a3
  22.292 +8c38039f61fcb359b06bbb7d59e3b39a295dccd6db9a8b83a6f64ef8dc94
  22.293 +a77123dd164cfd1c46f1ee51aa19c3d6e7db92a298d10159f2b5eff2caf9
  22.294 +dc93a6d267fb65bd900d6adf0c6be598050b6d3a9b3a322ab3c9e880d774
  22.295 +1f58016ff97e5f606b5dbd72ba99252c669209bb556dd5be84fdd7c1ce92
  22.296 +8a3b3d3aab8d37e6b740227563bb4d60f6bb04052356e1a48d2079feca44
  22.297 +7ea17fd06f208426d045dee660d1d6460455f8d20dbc5ae64550bbdf60d7
  22.298 +27d96cc9afef842a8c8c78ea2257e6c6d0d207c80cfe399e8874c693274e
  22.299 +d2c2022d303ca50a70624b07434fb85040a76a823f446c7454dab4f9c05f
  22.300 +10274eb5ba164aa3649d1bc90694316ba5cb3e7df4442e777124cff7ebef
  22.301 +53df2320a0c441ab61666493cb43da46d5711c21699de85bc74359444da2
  22.302 +e3e397d4c16234f81531505b621aa242a6698886f82b447104b1f1062f60
  22.303 +b5c87cea9151bb3c627bfa4532b06fd147c556ed8d61ae30a8719dfb8705
  22.304 +f8a6c74368381403640cc57026d3790c49e2bbd1c0e48285ec6ba44de678
  22.305 +e3a1394d659c412f09644b83ee1a333a1f51ad8deb4e6d77b3b226ac2c4f
  22.306 +fe653411a7976ae7c4a3cb7df309788da6b483f8a7bab4a6990db74362f5
  22.307 +bc41d545a320389b2599fd726e426ed9fa2916ece67b058f6a269544e517
  22.308 +128bda38d117f402409d0d8f8c88ed509aa2ba882e0c579b45af4be80770
  22.309 +22d7269684eaf0f9afc3054316da6611e3fd260d67fb6fe52c9ade5dda24
  22.310 +a0050a819ed21342aac9d25194778beb3145f56a66980f620998923521ea
  22.311 +3f957b6ed0c5470734af9f416a16427dd03eff9a0e023452097d4ef936d5
  22.312 +49a90823cef6de340a1ee02a52851b310cbcf41ae274947a62f9d1d8702a
  22.313 +669023e3caf967204a340694b45fecbda4bf9552f6bdc62d43b3b2c3d571
  22.314 +9983c182453e22ee34241ab908e667115f7988174684cd70084aefc55caa
  22.315 +f5352a88e9dac45d1ea0e032af61fe9a9118a3931b2050fc6db66ab96a39
  22.316 +74353b597f34dfd9f72150de23285eda5e555a607d198c291965a7233715
  22.317 +3f4946a57af0b440ff8567b01a6f46c6d32fea5f8bf57d89dccbab7da882
  22.318 +ee6c9260e89443b1d7db099477492bd0468850df3db668d741123e7ebe3d
  22.319 +c21748ab4c5cbeb5de33b8963aecafe76bba0c4f6ed8e8263a116ed85e58
  22.320 +fb71ec4ab0071301be7c7d3afd5fa6ad46c0232807bb7fe129e44bfd16e9
  22.321 +fd0c8bb5e7cdd86a78b5fb0669093c22eda9151d85b6f58a9c8ead3727c0
  22.322 +09850bd31a8b4a873d0a506240bb2aeccb8dcb6369532f21d9b967aa8443
  22.323 +fd6d77cb2d65c4678a5fad188db85940f0a187aa1031dcf5b8e0d0cbfb6d
  22.324 +b3b96fedec5b249b7a69de9b42dfa605bd622de7a220cce9b66e9f3394d6
  22.325 +13487dc5e82c1e619079cd057b1e19ac05ebdfd7c8bf01c6c66fab49e0b6
  22.326 +613df9e42beae2f7b9407a2bff8896d8035cea0fd5c11bc5889cb3d90876
  22.327 +61766138d2625f42d0244adca65d1bc73989328c0eea0b97c7c766285ab3
  22.328 +351ce2b183f774488a8806c33178090a3808f0ce5e339b87cf7add933301
  22.329 +ca486742831ca751f0626864ce13172829a8419af5c78794a0eaa17b5bcd
  22.330 +fcb684f7d4bb7af15deb432e44dc7dedf56eb8bea08b46f1e8123a49a349
  22.331 +a7cbccf833a528f5e22d2d463040e09b91e543a2f33077b3e7b9ecc64f14
  22.332 +306186cdae1fc317a6ced7e9b4d51a10bbbcf2fadff876b4d9082e3f4aef
  22.333 +dfef230e4232572f4fa33a6e065f6895aa2ea96c5659cb579b023179f0fe
  22.334 +de7ba64bbd9362a7b2b8c4eaec254915629e81d01c839096339b99bc9e25
  22.335 +84536955feaa52fa20666f65bafd9b2e69c3e8c15d24fa407e7d881679b1
  22.336 +789a0e2a695d13553c92c0214c9b7562cd6a9a3d77c8b0c2196cef76dc51
  22.337 +d855c1dac37f96eae4cc7bf07e17dc7c08333d7af33c8b2965ea1f23446b
  22.338 +3c96c52b30ea628ad572694d145b58a606f90b278290297aa372cff56b6f
  22.339 +56f4aad6612eb7c7bd07db4f7d1a70d8044d16d0b5c1605ee02a852ffdb4
  22.340 +450147b3f9b87d72dc431b34fcdc899462dcc1b6bb6ab1758b6a589e91e5
  22.341 +8f5196251d00133b43749b7a11fb67a22664c5e38e336dbdeb5509c2d9d6
  22.342 +2642c07275949df0e2db59314ae0fb34641fc171d3fe1289f919136d853c
  22.343 +d9048ee9db50c699c49e27a8df199590bbc65b23b55bb387eed0c73f2db5
  22.344 +1cb091f8c22af83103f214199e371f7de1df23f757817200be30610004df
  22.345 +81fe8ed6eba79e856fca21a126ca326ad2f313c16e15754663ad6a065e08
  22.346 +4050ff005fc899d6e233691b918a093b5f1ffda8839ab23ae66b1bb7b953
  22.347 +0a7f896ec55de6fb9faf1b49656ff2e57488cd7f1c44114c75f9d571461f
  22.348 +767a6040ffa14e9fb43096f164d60ca530d7cca76d526d1999ac1b52a793
  22.349 +28651112a65db1f2564ecf90ea6bf2c9ecf515640719c3fb5e36cfc58591
  22.350 +e227793f39b9d3a9025cb10f324a95c29c488724aa74812366ff0b118fc7
  22.351 +19f9fd0f202a040be47ec99b46b4dfc3d2a17902a5779c8d52b27231a1bb
  22.352 +5cd794c838daddc3e6824ca8297ba669a818c239b389400faf17aa04b802
  22.353 +f763029edb9784dfdc42f223e6496a938e613463bf9bbbd59d63300a9ad7
  22.354 +4e71865cac4b4e81a5864388c3886e70799c8989188341f7d17cb514cd99
  22.355 +3b211883f171ec6402cc361885f4f4b110757bb3e52941a94bfaebb2faa0
  22.356 +3e32eb72e25e31abdde82c2a9015478afa0f434ae3f8b97a4bef598d6eda
  22.357 +44ffe1915c26ee0e8339d2d45a6a080550f538ded5542c8b96ca2f596979
  22.358 +8bb6223e460e857516ab5a3323136ee8fc4b0556a7c39d0cf7acb45e48be
  22.359 +4ae9db325e4750b73289e36a61b301795bdb2ca2a8b933be1c09fd0cd2cb
  22.360 +8677df171d36ef1519a2269b21e4103b2ee151c513df3e10b2a216d6fb22
  22.361 +18bf2005fa7e0f0563ad96661a7f55e1b5b991f8ca285651b2683c6a7c9d
  22.362 +2d1941374989b06f2e9b42a6af60193dc758dd8e9fcfc7c1aa06eab47e81
  22.363 +bd79660666defac0c6b9e484df9c17a61ce7a61ef73150e8cd406af6da17
  22.364 +4d9c2392cc420eddda40f975ffbeacad8ce1b4e14bee29ba8552ff03376f
  22.365 +c034784b38dc1d0ab7bc53943d2545b03d39797af8d58d6dffce56a353d9
  22.366 +bebc833f04db321ca8642bbb7fcc63ed2349ffa08a33a5d0d78f4fd2c5ea
  22.367 +4258e4671e362036f1f67fcef9d878ae2c203fd9c05200c59cc98633e65a
  22.368 +99d912ec51d6f74500d5358b70e799a6817f59adfc43365d7bba1fd6766c
  22.369 +5c8e76248daf3f01e7a8950fe875d657397797a45e7f99a92887300b6806
  22.370 +b86db61e03c4c09d6cf507800aeead874a94e6f665746752937214302045
  22.371 +0b19cfa8db69230517183a03a16e5503882ea1e419c333d3e3b73cef6762
  22.372 +873ac06bec34c3f736494483442619f5bbadd86f128a5a40b854051893ea
  22.373 +8d31dd6656777ad4ac2572d17c6fb21385b053495d1270e65d78334a4115
  22.374 +2787ea89b86f97e72718905a11e9c5664837701a3c1c65ccaf26aebe8dab
  22.375 +c1207d5da2079c37883d9235708f370203b3b2a8ec3a5bb35fab93dae115
  22.376 +aef626dc44b67ca56fac18caf1c22e6fbab93564829a75776630b9c42513
  22.377 +721ca0fbb0b402f4d1db8f701d2b29fa60162feaa8a167eb3113c6f57036
  22.378 +e8361357913eb24dd38dc6d3bf4c3176a07ffc75cecf8e5940a310f79a8e
  22.379 +f590844383d631796ade04a91144d073a9413cff34fb454f1fd75cfbe5e6
  22.380 +525c3bd36ddab80138f6c19aad7417d47df1f1e0fc958fb190a8205b5321
  22.381 +7c43a4dcb0599be404473d6faebe7240dc402a0e0caa21b56a601b154524
  22.382 +f44988e5074c71ae8e1948bb2a2ce72fc24cf3b1813cf7408a6b097aff22
  22.383 +f9d285134d09b7053464259531eb7b270cd5f39f81bbf41a36420f61e5f6
  22.384 +b429036bbf20e27af1a437becd74c5bbc25ee2519402454fc94d430636e1
  22.385 +736fe65a643d9b9d21c9a54eac5a8fed51ff60a47b85a0e9423e330e00cf
  22.386 +220c23e056d20aec2fca3e6bc7a61a8366eb940c9bc99fb90e8704e27655
  22.387 +20335a983eccc7e20b13745c4b4f30a842f1ba64745718c152697c688c73
  22.388 +6cffcf5cc8eb5756201560413117a45ad3d264291cd51404f98448d31474
  22.389 +d47d17d201def12867ba679f0e2605de8f3e8135ed0234890cffa68848f0
  22.390 +6de427741b34c2ea654251ae8450a152538eb806ace3ecfe86d8c4a137ec
  22.391 +c98c6d6cbdc191a5f8f5b5972c70b4896960037b6d4c7c63586a52d5eb59
  22.392 +47af8c192eb980d0801fa670bb1d08740819f9da1dd9e153010bf9580a1d
  22.393 +0925d8327ea1b88db8d934f40266ddf93e5ea137f267847d826cd7999b33
  22.394 +c795d0ac05abe2ec1770dd98eea67912f1939118defc9b379e237d6477bc
  22.395 +91ad08e0046b0836fafa1272b0213dce990c90815f5b30d0eb103ac9539c
  22.396 +2f7bd2280264cd95b4be84cbc5139a7628ed211905dcb92cbc3180ac9e6b
  22.397 +b9ecc3cb08608b2395827d5729781dea49d328ba0c1b4cf2cec9f6bbc822
  22.398 +1f2bbbb9d88f9e7682b9ecc06b9705faa8a90a51678183db1e24cc2c4307
  22.399 +e16b3c20f08f179ec69df7a8c4261427f5886f9179c493bf2d0ef36640d7
  22.400 +79925585724aba69df6d1b4f0bd2a356eedfd74a88bea667b102420c2300
  22.401 +ec420e99b9ce8be1472b617e1255a7f43a0b52f11657f1a4dbb624a24886
  22.402 +9604fe2062b98f5787d010723e520a4f42a0c3943e151ee627f3d5db90e0
  22.403 +7747e1a88a53c4784c8d2b042b9c23c9e436d7d88343171161a364cd8961
  22.404 +37a19582a00d774ef01c7c3fc9e9c7be5074c858d2bacd707a6a4f322027
  22.405 +137d6ca0421ed9f9c7e7229e867678e5272cfc7156a419e893404ad7dabf
  22.406 +a5d8b6fd0787cb4fe1a901c34dd931f1b64f0c470ff807005fb66350d0ea
  22.407 +eb84ebef2c2399cd14a4454ea5004bddd99988b39c4134b92121ec77faee
  22.408 +55cc716eecc58b594b39c41dcab308efa4458ed71943ec5805dcd0194ddc
  22.409 +1ba04a5d3d42d07ac62a907ea25cd2a7e77aba470324d41dc1a3fe088388
  22.410 +787b3312f472cb4f23a414fa5f7c7a0cc5d121d7642b5b3f0cf7ca2173af
  22.411 +3f878f374938251feb3ce5ddd2d7703fc79a130978ac516daf70ae903799
  22.412 +28bea3a4296f48725d578d2e8fb0f932e398404fa8a242024bc011c0ae81
  22.413 +7b92bb104712253a5d89c543a744332069e33ca08bd133211d233ef799f2
  22.414 +fed6a20a9073021e505def8b79e1279dacc062cfd4dddc2e8e0a7fda5dd6
  22.415 +bb5a745f99cccb7ec1df532308da3da0f236c74639c280ea649b2f7ec27d
  22.416 +24221470b642567f3b2e1cd0b3ffa65c5ac986b557aa9b444bf470380435
  22.417 +abae9b51c6da7ff753810ca7938d8a1c47d2b41fafd236cb5998f3ef365e
  22.418 +1f700bb257679ba3a82e235a3e97a667a6ad94412839c96dcd49dd86ccbb
  22.419 +6df8ad01756b311e9fd57ccd2eb2f19f035e214804e2b77769319a5389c2
  22.420 +35f3ca2a73c616c9ef0984abcba167d7d652b330c68f4f6378aba69628b4
  22.421 +2d59eaa2a7e4c782f6eb96f6758d17d35650b15cb5de9bf973b3b6f67c1d
  22.422 +f3285be8322fc2b44359640a3ba5d6d7b96142583a00a9a0ef84fbf14046
  22.423 +09ad55b2aefe8c5c8f58ed21623bf765f81dbb6cca6d2a51fb7730a14839
  22.424 +392cad6b47f5e03448350ab36a37d9ff2b9dab69be5196511072b10cc91f
  22.425 +2e6b5160b2b1bd112e6c02d14063a9bb46977b0d4bc79b921fd942f916c9
  22.426 +c5708e0d133c8309de2f6ee0b1afc996c889c36de20fbbbfd32878f477cd
  22.427 +7735c7c3fa59e9c46e654ea20b4381d9f6c6431082e6918d532bcd539284
  22.428 +af0333a783c9e7fd4fa1e4da5ce8fea2ea4037644a24532d65fa5c1ee982
  22.429 +89e4b9abaf71a35d308a9b8c337f70babc5fc8dbb0327143707ca5b675c5
  22.430 +2d3cf09f7a4f667fcda03d8c82d157e661517787ce6bfb35ea772de13c66
  22.431 +2bd24b74ff9ab0fbcf6635d8e06b54b5b3125d17ae13d175cb7922338ec8
  22.432 +9d1159fea2110995ce48f7d2b094f06d11d59b3a64a44a83d48c78855e47
  22.433 +21243e82d9858401b094a236fa0a90d61863931c30d13b9bf33a35ac0d11
  22.434 +a999f2b4dfba6fc187f8c235a5217d777a5a97112e7db6a8a4b06b07d9c9
  22.435 +f41820e233c8b58b9e47ac56ad1ddcc0b35dd03976bc776c6ac3692ec0ca
  22.436 +f8c75ea7825bc84156468ca7b269d890ec9d4a365b0b31d2f6530185d5e0
  22.437 +2acc3ce14eea55ebb5667067825a8682e135d23c78863d32065ddcf1a755
  22.438 +e0de6dea7220d1a28416b96db40b1e9f159aeb070c9a9515f301f162b0cf
  22.439 +e32c6c89287de6e2b40458e3393826189a10af8517ff5a10c41c9d05d999
  22.440 +aa9305a2ee8e7fe46076bc9c5722ee0a140a144ae383e84a8abe70af5d29
  22.441 +96a0a896cd499caa0ed7867e7c3aac563763216e7769d12218b584d853ec
  22.442 +01db93ca22d0c8d6b286b20b6b26d6ef19f2cebe7030ecaa68d069fac7a0
  22.443 +09d61770b5e8f83024a99142f59d88297cb8d093992c3c6c11b043b151e8
  22.444 +20df640407d8bc829bfc196bf2901e63c6f16102d03ffb7c54a7a560f5f9
  22.445 +5cf8379f4a2eccdcb604bd553e6157b4381940d1b3c768dbfbf2618812f5
  22.446 +7fbe744b3d8ad680dd9223d8bf2412ecbb614d05b485e3b4669d22b417f5
  22.447 +02cce2d705c208b15fa83b5be77ccfc1c840f385a58ae49fbe6ab4e53912
  22.448 +473630e0cfecefab95ebc632a2b10a2103bfe801ca0302542080cfb4cf4d
  22.449 +4c241b1a6c8d28114516e3f1bf39dc02db73e6d9a797279acfd79b02a71b
  22.450 +ae34860dd0e11b18954129f8dd57c039bb7063a4c92f0f6a1e25f4ae59d6
  22.451 +6c1cc6b73a79d6a56f7f2a8a64d571caa8a760f4f485d770d000ddf393ba
  22.452 +784bb27b781c47678dd78ae9b5d5e8b57d163c42c7a55e4aae22061686bf
  22.453 +aebcede728ff2f65e75955585208c176d100912836b5200a79062d4f09b1
  22.454 +ba9465b0e937e289160ec543a4cedbbe0cdb5ecfbb4838138ee9e1ac757d
  22.455 +3c5f04fb6b510b389e2f521759e403bfc8ec6bd79e2d40bdd81901c10dd7
  22.456 +4620acaac9108940daf03af23f09d3c8b785db562b05e597056406557857
  22.457 +e96fc8bea53c2c2ccd0ea6572abb0acacfe29e737173d665ab6dc2995f60
  22.458 +807aaa4073a183aed23c26c67eb137c937999fafc63b66a021125e4ee5c1
  22.459 +a745ad1fff2bd828dcef392052965ce0e9af7a2c88d730fef69da91083fd
  22.460 +83d9fe9f73d42a8dbdcaba85b0fa93b210dbf49cdcbf5d4b69e07375fab1
  22.461 +a39038cc51f66f0b10eebe0cc61f697f7025d9755830b2d65f1ad0db91ef
  22.462 +ebbfb578053de329935bb28d6ed6c12f748a2f70458990f04d56c35557e3
  22.463 +8bc5d2e5de7f52bcf00c3bcce091aaa8852d53ac686f8f407baf3f7c8968
  22.464 +69f3b62f44a5e2291aff9d30d7b5c663658a41add74562dbb0f1062f564a
  22.465 +9b907846291700151de04c1a55cb945eaa2e7a709218ec56d1becce1c0b7
  22.466 +dc41d5f016ae8080c3b07311590a0def35337fc3c844c0ccd04926be9fec
  22.467 +509b1255ef12f368d20601b1ac8c68b0a935f987a21de0f8191604e921ea
  22.468 +0c04b00dc188fd73499852dbcccd4119ef799472b353be7f7dcc904ddfdb
  22.469 +920839f3d4a13bb1796f2dc886f31217845f8d7a543aabbc720311fd0e6d
  22.470 +a31ad3daa06d5e7e6270a34304f35ef170a7abe733428e96b0522fddbb5d
  22.471 +eb35aacec147067fe066c9ef145246fa3d444d176c274b91fddb8a7bd7ff
  22.472 +7cc7693c25895bf931eb321dc9d79f662a17691f9bd1662fecbcecf6d1f9
  22.473 +cd8ddcda56d19811f05fa48bcb492feb355b0ec7c04d6046549c56f7799c
  22.474 +2cd0d9dade8809de7d510702e525ad9cc82c41b4fb36218e3d72e905c507
  22.475 +159076a9c0e4a008ccca17bd594c69f5eee656426f865fc1988d677b72ce
  22.476 +b710b29a0aa8f8337552ae30e93bf7c6e5d013555872dba4737dc5f08c0f
  22.477 +efd428c66fc8da675373f13f89102688977e18e14dedd7f3b676256b0263
  22.478 +b66b013617d9a026794b0d6040c23c5506a98530249633a6beec46117c96
  22.479 +ec036eaf6439e25b8e57754af5ebaaf9b57880ad4fc93f002fb03e9fda21
  22.480 +df4acb78296b0c49a5a852c134c3b10755177a0dbd6c54ea7a2b9bdac62b
  22.481 +5d7f3da649df856478e4baf97899e0f891a96536c283f5c81200c51c6ab6
  22.482 +77285450c7f7e96836b6da5660f6cb76782ddfc64b6fc348ebc3ba4a46f7
  22.483 +19176296d8c5a31132b3fa7d935a5d777c1dc84d669d564cb4fd689a38ce
  22.484 +680d0b3b130caea0be43864826d0d154019fd0d865f1c389cd367cb5248e
  22.485 +24640eb6f66603e50581f6fb5aca6cfec1d6dbf4196da10a5e1ebb14e4ca
  22.486 +0251c4c8412cc1673d6e7a9666b04b090567efa0b830d2362fd384cb0303
  22.487 +8a40290597bdaffe429bb89fb66b9dfcfa92f39d92a8baba7266d144ac04
  22.488 +f069093ebb3fcea961ba4497d3628ad207e0c8c4fac0e5f3f2a663a8d05d
  22.489 +b6dc33b890ae13d84dce64b495d24cc749b121659373ca31cee09bff2e9e
  22.490 +e5b62e89d5faa4482a75f341dd172500a54b98fc108a69a3ea94db696513
  22.491 +d4c7691e0095ed3900cd4489ab008b5460b34ae8dedf3721c60de7086605
  22.492 +6c391137cf23255c565bf11403bdeecf8bf39ad5e4317a4bb37003b2e7c1
  22.493 +400c3b8ed7f63719bddf07908dc2decdb0f68e8ef722851c4420303f6de1
  22.494 +b5efc9b2598732fd1f2cbe45a504bd7fbfdafeade3add7274a1e875aba3c
  22.495 +4e0abfc6444944b79f95b5009560818f7a0599e5bab4405378fadfe084f1
  22.496 +653e5a0166714047e8bd4e4cb116596d8089bae9147ec1d62cd94491af75
  22.497 +a1743d58bafa11b63b447c954a8d7fe11d39d969feac8fa93c614f97807d
  22.498 +ac62cb7a84a974a0fa555a2e3f0ef662706efcb828ef72e2ea83b29e212d
  22.499 +f89ffecabcb08dbb7119203c4c5db823bf4e8b698b763fbd4d21e57940d9
  22.500 +1754959d21f3f649d856ac6615eac692ebcbac555f772eb6ba3cece5ebfb
  22.501 +cfcc2f3d8dcad7edc697df93aef762cd47cc3ba9e2cdd10940be676efe7a
  22.502 +a3749170edb47b7562805e3f8bd978b18057c9110ff8d19b466ea238af32
  22.503 +993e2d3021745b238021f824d887d2e01a7ff12fc6f084b35292f4864579
  22.504 +406c0f61d0ac7cdf7e4770b424e2ccc22353e6c82bf8ff172973df267ded
  22.505 +bdaabc2a742beea02e35b9b253f98de9ca131f802deee2905ca1a6dc4608
  22.506 +19a59b4a4265c723007d0215fc8ac2a91ec5f86cd6aac1e370a297103c3a
  22.507 +3cff58c7ae201cbaaa8a12c93e95e73974f9abcd678451b1db02ebb2e10c
  22.508 +c5abfa573a2ea4219fd1851765649318bb556b728d432ec05a86e9894aad
  22.509 +9cdca63d08642655801bb37f28b6e11b958e8e800c8d521ca4aa045fe9ab
  22.510 +ac02dc015d18b1901d519181ef60227170a07f3328a6d5fe4c5aedb35fc1
  22.511 +3dbe86564a9b1dd4c7ec648880360cdd1742ed4ac409450f1d9681cb5e46
  22.512 +5edd1de2a2c7f8ed63436f98e849504ae71bb872683ae107ad5df3ca0b47
  22.513 +a5b79513e02d7c540257d465ae4521cb3449d79c931e2ce8c5b0a0a4ac88
  22.514 +cef7b9e5f92bf721ad51682d6b6f6c14747f78eaac1891fe29aed4eaf177
  22.515 +e3d2fc655ae889c0c30a3575a76c52e95db2f6a4d8ffee9518391954b92d
  22.516 +39dae4e97c4022031f8ab390b66ada6dc9ab2de4d1dddf26ac4032981a69
  22.517 +08f73d34b4849ae28832cddc0dcd116a47d9262b0f93c24fbfdf8a78e6ae
  22.518 +ae3357f3fb89530854257a9db773a1acf5271fc4ca04a06b46dbe661ca11
  22.519 +9f45e0080cd129e1a7c23a33f1c48af960761b117d9d91fa5a0ed3e47865
  22.520 +b774a322f7dddfda2960b91fa7ba20c8f9eb213251299ae328b28ef54b0f
  22.521 +55fd54f8047c555e4045cbd70964e1c953e471408e4f25fe8ca7009bfe44
  22.522 +0244b1e30dff518ea7ce5078027baba4e07ecf0ebecb497b4bd88f1ff72e
  22.523 +b261f6dffec0ed895e237b5608d31ef479e8c9ae9003039a5fe67252ee39
  22.524 +774e1501100c0fcf154f5c5c81c70539e03118ab91f4ce247f6132d46346
  22.525 +bbbb126c09d7459c1977e6e367a0c83d14edf7dea081e5f795a7c831fd1b
  22.526 +325b33674ec9c2b68029a0e600746329ea2e1b9bdd5cb2b140468e53c108
  22.527 +8e8f2567425443f8146ec37101fa4dfccb0e032fff6cdfd76382463551b1
  22.528 +ae8ca6cbff0e34a3f75ad400a9573217f8cbb00a6d59ff46e48421e97091
  22.529 +cb17f53f20ebeb89609ea55ed6ba4101f2f3ceccbc7ade21202439ef91d8
  22.530 +a9a783c22de7e6601b50c4342e094d0eff223494489fa92150425da1b432
  22.531 +908423fb3f41e0b115ec1ba592a4f920d15610b9fb33f9912aba67912d05
  22.532 +1ee00a13282c1909a3a56c4ed06f2f4d1739dc296b7492aad0446f87a416
  22.533 +c6db4d42b504dec3a6756f3d0845ab2d2e151aa5fde12b31a9c3b5ae1cc9
  22.534 +d97192bc048f00dead66940004281c4d5a92c20b1f77795cb4f98b8eaa7c
  22.535 +be16f9b9d4a34a1a53e0a0deadb4fb4b20d9e8064d3412ea8d2ebd259b8f
  22.536 +2f04bf4bf11a5ab7883c99943d762549c3d5866bb6ed85a0e862eafbcfc7
  22.537 +03bf4b77cecc0d65bce4df33e0d65456397f231f8cbf66672457cf539817
  22.538 +6aa5292fae24695009e55904a04588659a3a23fa11989b925705ab45f954
  22.539 +6f862b0e176fddf75b70d9ef7389f750becbffae25d58a1252cc04a79e13
  22.540 +fbb6a666fd87cec5562c3e14fd78ad05be28ff3871d6fceff5aa8965bb65
  22.541 +67ec76d105a6348e915b27767f5010011e80e0e2f9c34742a4eeba369e66
  22.542 +8faf086a45ac9bcdd76c758db01a78602412a4244c759ece0b963d9ea58b
  22.543 +0efbf4376bf115288803a54cfcf78584c8af80da2a3324096463e3898285
  22.544 +57de6c6354444b12a74d5e66053f6907c48522cae9e93bccdb4632131add
  22.545 +52eb374213888125de71994c31dba481b70b2e4c1f10b865d58ef09fc9dd
  22.546 +2ca7f69bd2855895256caa5dd6bf7d4d8b341d677c56ca08fd7ba37485b1
  22.547 +444af8be0dcdb233a512088936ab4d7fc8c03139df396b7408747b142782
  22.548 +d9406db0dcd31368d2f23ddef61b0da3c0704e9049ccf7f904548c3ca963
  22.549 +76eadf1ccf77f94c157f5b84f74b0c43466134876a90c5fdc2c53af70c3f
  22.550 +f5c2d13cb665fed9016454bac1a629361c8ea62f4b2399233e8587db6e75
  22.551 +a9cde3530f20a68ec155d275a4aa6f63aa5cd115244643b54911c954feca
  22.552 +d57be2a6c40f1bac38e393969617b066f7d94e8b18dd80fccd0168d4a385
  22.553 +f2f1489d1dd41b68d47e5ec66ec568333d1f584e3dca90f1367a990630d0
  22.554 +14355be7dc45378aa111c319838edd441f15e125f928e044640f25ffdcc5
  22.555 +c116c3f6ce0d4d3195187b22200808366eca9b508ec45e664e562186efec
  22.556 +a97b22835d384758849605a01973cd9ffc1657b124950c9d9fa3e18b1a20
  22.557 +7156c4f96f08b87824373c2865845d17a0dda71b1d69f5331c5676d0648b
  22.558 +ca80a7958a2aa034d7e1e9fafead9248e6e64f9ec327c60ae4f724e1fb95
  22.559 +8a71e82ac3842768b27b506b5982311557432dc3f270ae6eab23a42fef70
  22.560 +dd0d407a02cbadeb7b8b74a2523cf46a5f61e52b053c2007f75ae053a96d
  22.561 +e00646662d027d93f950e516cddff40501c76cd0d7cf76c66b7bcd1998d2
  22.562 +7a19f52635c8e27511324aabbb641dd524d11d48a946937b7fa0d89a5dbc
  22.563 +4b582d921811b3fd84c2a432dacb67d684a77ac08845e078e2417c7d9e08
  22.564 +bd555c5265024aeb55fef4579b46f8c5e79770432c5349d5a65a47ce9338
  22.565 +e1b599328bb1dff2a838f732852f3debf4bb9b828f9274d03d7cf813b123
  22.566 +687c5e78a26310d87870bfcb0a76bf32aa20e46f6b2826912e562f503aed
  22.567 +11e427b7765cd2a68da2ec0609259ff14f57c07963d075e96f8bd2eab9a0
  22.568 +dc32714dd8905f2627c6d6f33563436bda2d7fa9a976f88947b84c72f454
  22.569 +bf0b66ca84470375d2ff252b4a2df52ab613d0c8ef0465ff1d809ca82025
  22.570 +c2122a8f44c56ebfa25690bf6a05675ebb8634ddfd24c3734fe8cb32d6d6
  22.571 +c69c72a4951cb959175770b4286d383e7a3f158450945c8a2ccf7e54fb19
  22.572 +aa8d2d98a07f0c55f834f2728d89f82a598269750115a02287c4d415cdaa
  22.573 +14e1d9e7032684002f90603c0108dd26b40fb569bb21cc63d0da7e9e1873
  22.574 +9df0a9c85bc340d2b0940860d95571dc244628c59bab449f057e409e58ca
  22.575 +cc3369f4baa8e53c6765a55620e78341dae06e5cdf2fa5e5ba58634b29ee
  22.576 +ddfee7f78672e55f18a7debbc30862f278f83f4cc123ab591371f548fbf9
  22.577 +bd24b3453b9b57051c2e67edff2104f3a05a9f0cb7efd81c1b1b0a2bbe95
  22.578 +21854902526e5d4fa1b3be270811b972e8726623410cec7911c07f871428
  22.579 +1caaead97c503714eaadb14ae5923f020093722df1b9d9c055d7d5f95af2
  22.580 +a9fbc5ab6f6c2bd655f685534d7dc5fbb5ebded6ccdcf369bd83c644dc62
  22.581 +84c2810495888e9d8f464a42228cdc231d5b561c6b210bc493fc1e7bfd66
  22.582 +5a6c4055a6a629f571f4f05c15cb2104b4f9d0bd1b1f0ab8252da384eeae
  22.583 +f5fd5c663ad7a2c29f65a48a30ed8de196f9eb8ea314c6e86989298146a5
  22.584 +589f76f12664c8d008228b33144679d16ff564453b5e4e9f813191b6c99e
  22.585 +2680e20a410949ac30691b1428a255b6185b7e3802e8511192e73c376f3d
  22.586 +eb807ad2727fbb4b27538b3213da0746231b1c1b595a958466155835c537
  22.587 +e0df4a0ef272d4c3f7f2ef011daed38bc58bb0fd7458e48060db98971bd4
  22.588 +b24bc7bd0de92573a1c7a80a5fa2b34fbe50271dabeb83aaa4235cb7f63d
  22.589 +6a6b399360df8b1235e4e9ab59698930044a98d5e083b5f5a5772309b390
  22.590 +9e1ff2a252734b32fee3940f0e1ba61f54dd1d3f6ff0d57c9ae75a302d14
  22.591 +b9dd9034279aaca80b6bd05c74bf3d968305a5046910871223a3ef8c77d8
  22.592 +25d7e6d3d2809e76064c473d1cd7c05666040b6eba647e34588f49fd70a0
  22.593 +3c937933a2272c938d2fd3aa8149f215bb48f3bb45090bcb9a6ace393a44
  22.594 +f1a9bda2ad09a5f566b2e8887880afa45a603a63ffe7c188e3eae926a903
  22.595 +4f1803368e773f42c7391dff1b9ce8599161515c549aca46aebae7db23ec
  22.596 +8f09db0e0f590aab75e8eb890df354b37cd886bdc230369783a4f22ab51e
  22.597 +0f623738681b0d3f0099c925b93bbb56411205d63f6c05647b3e460ab354
  22.598 +1bf98c59f7f6c2ea8f29d8fe08df254d8a16aab686baf6856c4fed3ec96b
  22.599 +0328738183dbc1eebb2a3d301b0390ed8bd128bd8e7801c89941485c3c86
  22.600 +22b5f223cb07dca74f0e8643240044e8c376abbd8c82ff98c6dba9b6d244
  22.601 +5b6cf4189d63c6acd6e45f07485a0fa55eff370da7e71c26469740a68627
  22.602 +a3c297d2bf215121fb67815b7b9403aecca10d21e59fabcbe38f5ca66e7b
  22.603 +551b22e28f2d1fd7303d15a42c45bf54b40ef7fc93060ae5164e54f91c55
  22.604 +20bd303a98d0667a02a900813b260c0343021ac01872fd62cb6abebc7ad3
  22.605 +a4456805159839ca4a3e35db586221169ded66f852e8974e3815d4d7659f
  22.606 +6a9bb93585aaf264f06cb6da6a26e51683945224158ea69719b8e4e36eb1
  22.607 +01333aac974db8f84b051724cf245fe7a4c86582b5dbb9a5d9318180e33b
  22.608 +8d92c22c44b0d18f8ca34dfa4ee9693c1a26fedece01635fc5eac1fefa81
  22.609 +32458254ad46dfdfd2be12a1e7f32f3728f286f1d5d4394424a073696b65
  22.610 +e3c459aee9310752231fa703faf35e11796c4eeef698f4109ca8c46ee322
  22.611 +5dc2e3e04fa787188e583321f8410b68b9624ff60679d3f25c13e5ea7506
  22.612 +a3ce8d0bebb99d9a959ad92d8cf909988d9250b310629903d6bfcad4581a
  22.613 +504b91b2c91889987f36d6fd0be1d0ee5aac00aa0cb48d78a1f7a64a777f
  22.614 +089573ba79452efcc31c8258fb317369feb0d7ccd48cf13da6d1ccb59a4a
  22.615 +48ea0b398e590c1169113fed81639e13e96aa268d99cfdb7aee977fbe85f
  22.616 +f784853a06642b5521ae0a7f610c9739af31ba7a5157ebbbad999e23794a
  22.617 +d2cf25af987dc85dfa29639957cf28e7f2b7671188045130a6e2785f8d8e
  22.618 +30e91f0f68c1cc9f2de902952730003e816e4f5703db7a97b4c566f80547
  22.619 +42fa77be563ef681a4513b9a68b2b0956551c74545cc9883428dfa72fd5c
  22.620 +4eee93256b26bc86ea34f7427cb0c0cc22c0cc343f739c6c0c46d0923675
  22.621 +5e04d70587426ef875f8c89ff8492ea23e4e4d763b84a6437a440e69eb70
  22.622 +65ab6d8cf5f8444a844e6ef3d158b451d121daea2d0e2b423eea24254226
  22.623 +7eff1b4224c4e80af2a7becac1649e4bbef09f39415e9b1e3750d7ac47a1
  22.624 +068a4f5ce30840b00574eb4e683e3ec25f6e690feeb0d354568efbc354ba
  22.625 +813ca1400734a67693af127b0f636d58b83e91548f98e3d87da7fd7cdebf
  22.626 +f3ecb4b9272d1c83d4980170378d32f1d98b87c440881af9ec052510982a
  22.627 +0c02ba6743bdc7691a44bae5e044c25304c1a2525cf2c0694494a2e9aa34
  22.628 +f36af43ab288807ffa4bd418ad51d98c75f2b2f01abfd834d3305682b6b8
  22.629 +62ef69d05962aac485bb4f560583a5dbb74e967eaf6d299160753ec32249
  22.630 +bb1d9851d5441cb0c624208e69dc876cd8841a66976b5d7f9c99be68363b
  22.631 +8112d33d971f2c4f2a1feca88ba1a794ddb725c5e2e2c248082231059aef
  22.632 +729bb5fee5006ab8809f63e162fc0743c047c7984a9e6333b433fa143d73
  22.633 +72d4a74fe37314508e04f54dc7a1445e2d6178ec9c041d0cd4fda5cae830
  22.634 +4b16feb21f3222261c293a8b058dc708405c1a97ff34eee4ca69ff4e1ee2
  22.635 +a03380d52297574e3aa50c8afb826fc94a14e8caa9ba89d6e92913be9e07
  22.636 +bf7ae011e6bd142d8952d9c2304735e875d1ddcf82fa9fc0c6449df2acf0
  22.637 +d5f6cff6d21ef6b2d29022ed79c4226c97f163284f2311cf34d5b0524a1a
  22.638 +a446645b9d05554f8b49075075f0734b3d1ea31410759c174fcc7305d2c1
  22.639 +d7128781043cba326251a3375784a506cf32d6a11a4876f85ffa2606fbdf
  22.640 +27dd16d64b2108d808e33c409dd33f6e0c6079e47e7196016f261e824fba
  22.641 +b0e4f91a189747053e648ad2d942ece8f582f052668b63a23a2fae4c75a5
  22.642 +180db7811aac654270ec6e341126e3561429f1d41fe7ba3f1de9f8bbb8d9
  22.643 +fc5cebdef869376a2e42dcaa578c0807835e58d75c39f91a83d5c1eb86a1
  22.644 +b0f7aab991f65eef030f212d38d10b1913bff71717c06c78d9a1be136f21
  22.645 +4be157ba11ba309326c55c23ae8512646751fb82ae200c06bd2e644bed38
  22.646 +c7cee826cb587ee8ff378b7fdc00ec316bd4a9c24e2c250cb3d64f8ecbb8
  22.647 +7f4d81626d7f1e4491908bf17c48c84bb1736693eb4d0fe634484cdd590f
  22.648 +a40ae94d44f348ba683a43004b487f047745fcdfdee2e913328a11a99530
  22.649 +9bd117e0e5be4fb25d176d59dc2b1842418141190ed9ae1f33e5354cacfd
  22.650 +a5e4bc186119e1461bcd98517e675276ddf0296d3b3cef617dfa36b4759c
  22.651 +944fd721e1bf63d45cea90b5817a40d153a2f779e03487cad3c1375425ac
  22.652 +8cbabf7f754d16cabe45c65f1be4441908e0969d5a5111c931e724537dea
  22.653 +7cd3fbfec9b2f7d3efa747bf586e9218c3106c49276b89fa28f770fa0644
  22.654 +fe1f3fe3adf07f59c755a5b39a2ac1d6f23c256a293bf3b31b6b9cf4c622
  22.655 +b188d6e7401c038657c78bfde9ba09f508f1bbe3ed79793772cfc928c4da
  22.656 +519f7dbf3ff7074284437d2de8d7b7c78829642d924abacf353119e9088d
  22.657 +14739935a23667c432806085c3af71ffb7c5fe6b4412b9b1044c1e62ee0a
  22.658 +a5ce7e0322bc65a8c7d874270d84136526e52d0c7f9f93199c6bb7301216
  22.659 +a19bebcef3c5633f21d012b448d367157ad928e21f8e471e46982bc46a7f
  22.660 +df1bf816a86dc62657c4ebf286134b327ce363ab6a66634eaa2a42e99034
  22.661 +069fe1302febf06959eab8e7304da4d94a83ac1650a02c38c1c4b7e65c43
  22.662 +e3a6fb0213e57ac49e58721a4f36996069caedefeb48f1a59303459d5873
  22.663 +f3bedcdb9d00c1cf31130c27b60928f210e1aa5e1c8e04b86d2049f31265
  22.664 +9198fa646c53afa9058eb8ceb41bda65f415c79ac92af5790b176de1d300
  22.665 +f1c06b782d584f458dbd07d32c427d894f84215a8e7819e295ee98d976d5
  22.666 +644f11920ff2f49cb1075c3bb42b9fe4b561362902f11a75669b7e7c4475
  22.667 +b65f1ae48834cd67816eb63b58cda2f50bc22eeb0cc965569b476bedded1
  22.668 +2701668f609393659b266bb0e37bb27afc90bca271366e34754383363592
  22.669 +0f9a3b508aabfe8deef585b07a992460c592a150b325b1e50e4214a2f483
  22.670 +e9dfc826c54b488493a96eaa37276f5a9666f0a5388fe388263d2c0cf614
  22.671 +c6cd01571da4389f01fcdbd0ade1c435d64c5921b5bf7dbebd5268100a03
  22.672 +1e1abb8cbd83873089a9e08cf80276c7e30d2bb40280278c29fa818eb079
  22.673 +87623b1cfe13e0b01e27be0a8320b69b5afee820f4705202158b7f3059b3
  22.674 +655bc28a754d088fde23d43d6a9389da8bc1cf3e8ea1a6f4328c196e655e
  22.675 +42184444d8c0614c7167c91a492c24c8357794c61f5e47cdaf4b38004a5c
  22.676 +8fceaa8151e929328bce1b8f67b22034f3f75e4d105283337c3d460e7d99
  22.677 +89920c43f5e1449c74ad6ab5ea029cc6e497ea60068451c4ef2132fb87ae
  22.678 +049077a156c868b768df4a4c475a532e2a22d999931c64f8bcc18f51d25f
  22.679 +0f94fbd3e9e6c094f78da062f80c4aa2b86fa572cc469e629deb4ba0c553
  22.680 +55e8422b562ed2f694d0e8e5540144e30841d7593b255edd4a61dd345d5a
  22.681 +00e411d2c50d64782a3ebedf945fc31c00d2fe4ca800f5aeeaf12ab399db
  22.682 +956362e979bd7ef0787188e43835e5389ac444d13204af6bf1875622f175
  22.683 +09f32015c28729cfa3b3cca90308eefaf260e3fd9df10f3e76786b8bc0eb
  22.684 +a30e8cd33689aabc55e3ce387cdb89a30573495852a48009cb58a0fd34bd
  22.685 +da911159ccacc94698ffb94c5f45f15ecc9e82365174cefbe746f95eee44
  22.686 +7a33b4d823487e203478eeb2d8c4bc7b743427778249c56e48fe17d0a501
  22.687 +7b693509ddfe1f42bdef97aedcc26ceffa9357dd985cdf2c70bbfc987354
  22.688 +6f0aa7df227ec42f9ca2482f58809e3f9650444568c54d3520bd0a7301ef
  22.689 +48bfebef1fc4332b5ca851fd786c1ece136fe9e575b69393b5aec2611903
  22.690 +fae6e7a5046e2ff350becb8700f209b1131044afd32fed1bc1297b6a2f29
  22.691 +6ec3b87f170e92aabacc8867360e4dbce9ea29f0c1df981f6cecc8986767
  22.692 +0ccfb4c9faeaad7ca9029b8ff0129fec4a040f80ead041b3bc8af7526675
  22.693 +ed9e13204e64d76440a097d77c535d34165bfe9ffcade530abcc75ae224e
  22.694 +890d5c110004e218bd827a02ac7340e18bf3684c43e664e0a37d5fd4fd1c
  22.695 +4d4489d25a99d542c16e06685652cfa3567da4eb0cb517be1482939da0cd
  22.696 +d0ea3519ad1e51bd9dc7b9077375a8cd3b5de9888697e853bacddbbdd1a3
  22.697 +0e442e1d6f2d652046821813d0cc0e8f16c97cdd32daf239f5b2b65ef620
  22.698 +46f6e9821b2e2ec539302747795fa746318514d38bdf0d0e490c00e114d5
  22.699 +03e7fc9a8fb83b14337a5bb4d640b52630f5450bb3bfcf7cecfbb1ef5192
  22.700 +ae401265450db197bcfa07315ff95a809bc5fb4249e3a728a817f2580ae3
  22.701 +50d8d6577f79c883ab4a3119d9ab98219aed0d1e826023a66da814396058
  22.702 +d95e52d9af8bdbcb0454721f27855b686d13bdb473f650c9865f3e04f08d
  22.703 +b10f5256a3e59bcf16b12a84bb7ef3b370647cdad5929b722a05f5b3669e
  22.704 +14c232bb82fcb9c1dd8155ff4515f4e83c895cafb86754e896f38e5f3beb
  22.705 +5d29f1bd99cb8a09c5e50f412f6d8a773b79021ab2c4831aa663c5defc4d
  22.706 +553616874dd5bd8b75c7a2af7d029aab5a72528fbc4b5ee3d30d523412c9
  22.707 +60b432434017c4cd68b2062d28f307fc287e11663511d1a6b52143afac0d
  22.708 +ce0f7ba3f326fb707fb8d2c985dd60090e6664f2344e098a7a1a6448026a
  22.709 +2ee651e8141cd7786b6543f512e4c31d25dcaf6652b1eb52706300b771cc
  22.710 +0c49295067befc044ea46341927123ad4b7d094784bda7fa7b568853d0b6
  22.711 +1e4cc39e1abcc9479f91a2501009ae34ef7d5ff56205cf5288503591cc55
  22.712 +c48abcc78daa4804549562afc713a4c11152e6e4331619b2e474a25ffb62
  22.713 +7c46112fa4259f07871f8d6882e9a7ec62d20a86a0c502815d0a8f3f5ce7
  22.714 +cb4a6a74b6db8e17d54bc919b82c7c729cc05b98855b9d8a0fabd8a9bdfd
  22.715 +4333f395607631f57c0473be0fb290c4f40a7aa6ac49208570ffa1d0f849
  22.716 +d4871ebcf9ef6f5106301cf54ff8cc9918d6de74d519fccba58bb1c21543
  22.717 +f3bca9f43c211b2e5c233ff6dff2c9b56d3f656f6070d13dfd0be04653e4
  22.718 +98c670770e01c07b731ca0e2eb56e608828fedaf1a31087f2d43cb4c0074
  22.719 +e576769b0830577c86ad5de48ee216df02d7c4e4ec231afd8e76c608fc9d
  22.720 +06cc86f38cf4d839e0a0829902f56cf2f86f08b975a6bdd0642d6b4c78e2
  22.721 +57cf9a4f52646a952f6a220c36c91db7f44c7f44bddf33328ea8cc01827b
  22.722 +5f2d79e3ee6c514a4f8597a847ef5f32c6400736e6ade28faa7bc6e9c6ba
  22.723 +e4bbff236fa6dd2b0ed23fc77f92649feba149f82488260b0bea2a4fe1f4
  22.724 +65d96d8c51719e5e10d4c17d1b67e700aac36b1ed55c93b4b2604e72f51e
  22.725 +b30fbf5b64c6fcaaef764639ebd789f82ed354712c7f9fcd1df257e14c0e
  22.726 +8fd59a0eddab684bb1b4176d79b22ad2605bf534e4b8fac2272fbdeaf210
  22.727 +0424a2c5cc65f8dd5faa13313dd926128ed466046ee94bd3eb41f3ea5505
  22.728 +5a70603a2ae1981bfae8e77d850fc5a5bf1bacb3df9b7cbce68ce7979fad
  22.729 +a73c2900526b68236c6d37197b0c521c5b1cf5cbbc89238586eceb99818e
  22.730 +aa47ca94ff615233575fe83d0d50d734351e0363030a12300f7b20450946
  22.731 +17bb209c346ac1d35402b617d6260fce04ce8b3231ab5c05af30b0f3ccb3
  22.732 +3616d3df334c8d963279537563222dfbb705c3e14616ad01927f952e6364
  22.733 +4c4b7fa44ac97616c1521facd066aa33b2296dc03682eb6a3b9dd8e5bf62
  22.734 +53f10667ecb07bbd50553f1b211067f5cf098b64b84d94ba9ad8b146dc9e
  22.735 +8e9be06bc14cfe0945e22fd819856d6996e857c0bb5f292defeb493589f4
  22.736 +515700753885d61eee1b8c19e6e94fe2302c07933f949d6bf119d207fb04
  22.737 +dae7bcff7578bf33d77e29611c7cf03b2df12c242827ec4c4e5b5343ca3e
  22.738 +4f7f38ed337583e30dedd78a082f41d60cbad55d59dbba11af1bd296ed6f
  22.739 +e31d2e10d3a8b5ea698e656ff97755a47ddd862d23309e2e6ed3e3e111c0
  22.740 +2c3a713d782fe301dbaff0a4225f932576622d1cbae40d20f46958298d01
  22.741 +783851c894f2712bfc4736d3802e548a704878e2d139348671fb96d0ddbb
  22.742 +f56d9349172caef0dfed4b84d867116d91063dcdf9ec401dfe8abb269ee6
  22.743 +0d646bd12e0752313e2ddc272d9f4aeb9d940987596ab623f9198765cec4
  22.744 +62f7b6c540c9a70c9a872bd28ea62e056560b61ec51fc68eafe008f20760
  22.745 +246e06374ae5a6bd2577217700507978811ec29985ab644e474e41e8a105
  22.746 +295fa67ae05e0739e8c7fbc51104522934942f53e1e1df1ec2a66f0a74b5
  22.747 +9885cf2c2fad1cab3e2b609f126ac8b7350d5408a7df9ed5c27a10ef6505
  22.748 +6f0d877cd7bb902977ba93e6e8520d2d018560ec8143876ad0dcb95b173d
  22.749 +af72c0d413bbb5541f14faa57eedb3ac2430e36911d2f486d9ebf9cb6745
  22.750 +2ccc763e1e46e7a4b8373e06082176a6c66d045e18f90b4b2ad15802f6ef
  22.751 +cf2130cdc627601ecc19887784b6de7fb6a193bc3d057ace29f74199acae
  22.752 +69526ba6f7a2c669593f9d0849f12e37201c32c88384e4548a6718cbb2ab
  22.753 +714ccc917d93b865ac7d7d4dbd13979843f4f5c1f8b937ef12fcdc9aff50
  22.754 +f09d2625f4367ee70a98772a273d8919952102aa03297e3cbcd876da5abd
  22.755 +2ceb162b8fe1d9a22ff694495528c09a8819fbfb6946ab205d4b2424f6d5
  22.756 +6fa1c704065cb64fb2aa0fdf291fd5e7daa38667e6d8e889be7f4c453da0
  22.757 +59c492cd25fcf4a03a6995897145273a66cd6ba999138bc8e2aa7d080f9d
  22.758 +231497ed28a9a27b6b0d4785bfaee46fee71b26d6839f2549a14e7ab7347
  22.759 +0b6cf368d2d49e74c78d93477828e4582589cb447d795181d3f13dd8ad52
  22.760 +3c750df8f19b3260c17a6598b406472a7204dd26c5988911ce9884de9a1d
  22.761 +ce33d834becb1dc80efb07f32d3ed6c2a484c5d53746071576c3f67f25ff
  22.762 +1558986fe2dc2265b4fff79c07e3f4c6c0ce8319e04c14728ed722cf214f
  22.763 +65066148bc817753dfdcc0950bf80dc515002e1a92e7d8936e9b3aa9635a
  22.764 +a6d512c68aebc79a62a6bd17a411bba7684e1f06be9bc3d1aca25d50c8bd
  22.765 +1d75597194cf87c9ffe04ff28bea91b5b9521fd356ed9e036466137586ee
  22.766 +f0a8795486438d0d9707cb2854f12963929edac394c562235ca71376d938
  22.767 +e4e1518668180b857d75318bc22e9f0683749047e7649f9e20b35204b6ee
  22.768 +60c0d47bebf53179a083f0b4cad5b3327a3faf2cf03753e3e46c05773629
  22.769 +7e9bb305f603369cbb568350b2b5c6d23a35c551e0ab28b082e321ef4ed0
  22.770 +e2704d35c75b4750af782160c2f2e9aab0e14e541e95b64ebedd66db2c12
  22.771 +a8935a60177cab634e20a8871a3a72f4b21c3a34d9dac37176a321c2ce3e
  22.772 +e828d140c8445117e7fe4738000c30ffae8e2a48bd618cc8813e38fa0f86
  22.773 +92ca634d1e56010987483aa0f08980d91528df3d370ac724acb238e141ab
  22.774 +595dcb3da7a769de170edd5763078d1084e2ebefadf8a50a816b50722617
  22.775 +c9539dbd68d9062b015639708dd900aecf4f15adb36339c05a9aec7403ed
  22.776 +771f9f28c60e52bda3ba6902e06334036c1dfd66d35ed00e3fc0bebf55da
  22.777 +416093b5cf512217c47f905ccc91fad879d63dd1380519a02025ddf15d70
  22.778 +eaa1bd8cb6be67608fbc5c94796bd09ba35933f64c5e72a26db1ae40ef49
  22.779 +af5e972fa44660588292b67ac670bf046cb1f5a7a0d73ffd6df862744786
  22.780 +4a56393b0f1b4cfcfa362c74634713093161b29c94a2526b7138aa92fdde
  22.781 +b37a8c1f30a6b3837d9500b340515f0412e681f5bf36e7869fa157df18e5
  22.782 +c79df3e6aca924d7b7dd2e0d5b87682d7ea6913b26397ac180fb75fabc1b
  22.783 +8e156ed542b9d8c83079bccd141c187f90d72694de4f6d08520d11cd454b
  22.784 +bd3c2e6d259694fda0c8decc724bdd650163b7f6ce1181590c06de4c0dd8
  22.785 +536aba318cabf54782c919e07c2ffa1034143175d05deddfcd7dce6c86a9
  22.786 +ec9bf6a4437da474aac2dbce2c91aedc20043f179d5c9120f3dfb1cf6906
  22.787 +c27f2ec68cd75035c283e1672ea90d953a23a1515c420b81c3270fa06573
  22.788 +4d003eca1bb71a2dacdab67e44f47c266c2ea1776648b62bc110671e6eca
  22.789 +4546d3c72c8acd956e10452c32532ed51bf3d0518467fa829efd9c896e8e
  22.790 +1e5c7ff6da0b51e872e403470affc95f25e1d2b9b59ddb0472705e14fdc8
  22.791 +fc2af16527188508be10d098372cd7eb7d62a85c8d8dd1d0f55ae3ccd0a6
  22.792 +5dd6bf776dc187bf4de409d5db3fcc5a6d852848a251f4fb4e01dac5e9b9
  22.793 +587fa8c46ce03689709008b34dfb3dc105def80a1b515abcbe06e73fdf7e
  22.794 +7136e40cc922fe9a9da1726747e84427f288d934747b6c587490734906b8
  22.795 +a91144ac82a57957cffab561714e1ff5148a39499dfc8cc96bf5d87ced17
  22.796 +825e8f80cd943d9a73945fb8bc51cf1f9cb39c605491c1bb8f1c4139974a
  22.797 +59471ead310d041b1ca1ecd5e9f92007cd8243cb3fb1ec5256444699a9fc
  22.798 +ed6cb31eaf0912c16fa480a1cb4a8f4a9cb6a4d9a9903d1e2f674286032b
  22.799 +489b8a23ac4719fe435a9fa2d79abdbaba740e69d5ed611421b1aefcd06a
  22.800 +362ddbb7b79aac41e3e90657afc0b87a6e8c57ceef70a628efe19f568634
  22.801 +50f47b5c6d95870039caa3d07a54e58df064bb5f59dbe9b9a2c7c84d7e0f
  22.802 +32386309560a0efa2cbfa27f861b208b2df4a062ffe2c59c057296aaf5c2
  22.803 +0f48ffc9ff0692f8cfbd6fc6ed1f3a14537ba40d7267e6b5f69c997a949b
  22.804 +26577a9a99db3f53167355c4967dabd522292ddaca3c537bcf303ce76add
  22.805 +eb99f6664227a94d6a698dd5a5d40008349376067d057e28e55972264502
  22.806 +e035b1f5e33d7b3aeae016f9be50f2aa09aa138d15d7af3c1ccb805f2d5b
  22.807 +cd4e9b2b5c288b2af4a25abf0a9093749377c9e8232ba1af17962f85064a
  22.808 +23b0a13f11acbb471cc700f9f1b588f72cb63d3d1a95a93502ef74ed212a
  22.809 +c452f1a84619bbdf61a1dc79c0d9ba29c7f19b400f682cf66f7705849314
  22.810 +f5c8bbf973f2c53bdb060932156bf2c9cd8d36cf6271075500b0e3e6ad49
  22.811 +958af46a9dc950f4c29f1ab5dc0a85924f7ffef259f778459c80118b1eb1
  22.812 +ed29208d1145b21b19d62f755de4972c57a09b3decb0a8096ab025fe6b9d
  22.813 +be49ae35394f0ea40d3693980f97f712b27f0e28d8a549acbf1da63518d0
  22.814 +374941effacf63ac3de0523cfac0dcaeb690de5836741fe58917c7ecffc1
  22.815 +95e7b560a3e763aa70fc883751bd60ea0a0f893d8e9fe75a66c67e202c24
  22.816 +84f66708ae74413c0101fe0b5003be20881345d917203b582a247e6c74a8
  22.817 +1d0479f317aba7b9dbbc0a92e91c51fbe8775a44c57699acc9da84ad60fb
  22.818 +9629929d1edabbd70b4ef9887ce4ec2469f154fada42de54240cf3302364
  22.819 +7c492ba17e6936a4d85e0751df0945463368a803fb40d8ded22abe118250
  22.820 +86cfff1878abe5b100bc08b991cda6fdfd579332360f0c3374842edce6ed
  22.821 +e43649d6702f34668a29bf387e647f96d78f33395e8d4b3521cb4fb0956d
  22.822 +12c924c16eee798cde68e319a358cc3524c753177d976d4e14a2e0cb72a4
  22.823 +80cd87bfb842060b1266568af298bbec58a717c577be73ad808e004348f1
  22.824 +6aead32a3d57457376ab57197534d6e469ed24474a83618f3ce21df515a1
  22.825 +22918f4b62c642de0c8a62315ebe02bcfc529c5b8f7c127085c2d819e29a
  22.826 +f44be20fa077ee01a8d427bbe3d97a9d2bafd77f17835279bf135900aee5
  22.827 +9bc49582b18d468bf93e47ce0bdd627775264ebe9e4172839a444f928580
  22.828 +8c95895b7e23592b2dcd41ee82e966c26aa2143e3057161511796e980998
  22.829 +1f2e4ef5868b3bf4576e3546e6407e35cdf14654bcefa7557d09407545a2
  22.830 +38173080b4771ea52054736677a8d9749a2b22b46b24fbff93c55aa2274b
  22.831 +8c7ddbd751bcaf1df00ccbe1f24a80622aff192fd6db2238db941ec44ae0
  22.832 +dd73f6b2f80d89bd0aa30c038583deba14913d38a7b61b54522755e251b2
  22.833 +aeca62033a39ec1143b2b960f9cb87f748428bec3243b8164f07d5ff72eb
  22.834 +f2ef69347bb933241c2401a96ba5ffa3f9ad060c41f4e6bf7280af65293a
  22.835 +bbae49d723dbc4be61d7e13f7a5931a697e7f2c6582dff416341ccf5a24e
  22.836 +9a53686a1e13bbe0bb480c19a4e72a5e477bd29f39dce1a17f63f1e8c696
  22.837 +d5f8855cefdbf7ce681c7d6ac46798ca9bbdc01f9ad78ce26011ee4b0a55
  22.838 +786bb41995e509058610650d4858836fcedfe72b42e1d8ba4d607e7ddbbe
  22.839 +3b0222919c85de3cd428fed182f37f0d38e254378c56358e258f8e336126
  22.840 +9b1f1acd7f387686e8022326a6bbc1511ed3684e2d2fc9b4e53e83e127e7
  22.841 +84da13550e593bbad1c87493f27b60240852e7fa24392fbf3f478f411047
  22.842 +3f00a8fdb6dcb8aae629dc7f055d85341d119f7f6951ae612ffa7df82111
  22.843 +d1ca48306a57a922cf4c3106f0b5e87efba6815f6de4294c7a0394087067
  22.844 +677889d22a3fd86b0796200300d2716445078027fe0c0b05c86ac80d2095
  22.845 +ae874324ee6ea3553bcb92fc1522a6d1524f6fa22b71598fbce784a10b5b
  22.846 +61e50307ef4409ffb7b38f27800f2185140ed08fc4ab396050b068025a9d
  22.847 +e4bddcad201e72ed9b41c4ffd4cee743c9c2345b95c5071442defc8ba5fa
  22.848 +9c63c56e209df41d10d93135a8080f7cccacf67e0b0ddb3e0a31df32b83f
  22.849 +290b3c536e9949973cdc80aa5c8a4feee20290a95f68e59f54050192de42
  22.850 +f27464ee374e4d2451ee8708933b970402c90ca3070843a449d7c3146347
  22.851 +1efa666a60fd5cbf55a47e4a3c5c318fc1af944d58d32690a2c7eeef09b2
  22.852 +d94721896e1e3e76e44a8efd524ed5d6f5eb9da093d277441546c6828745
  22.853 +ad71b6c13f653dd631bc6fc55d0eb4648b7bd9c0eddb13222542f2b6e8d8
  22.854 +b80bfab4365f4199a41ac690979285d917de79359a183e6fc254b63e6408
  22.855 +6d33e3c029f472f40742a99f92999f302f79994ffd615f1a848194cb56c7
  22.856 +12146850f5e400303bf5bcd4e5fdccd1fe2edf5352d525cb15d8327f45a2
  22.857 +6e3ac276dc8780c65724d28dc6bf9c7c985840070c35e32859168890d599
  22.858 +a884dc2a90194cc2e9cc6a20c6c0ee11b20adf3aff01db48eb8dba7b0c81
  22.859 +7fc10cf5a66e8171a2823a4cd22f0e80c82011ae56dd895ae2d3ebe84ff3
  22.860 +d521c31453e0909cb9b1cf0b030eb6b7059ec38038cae12d0e1cc4b5b3bf
  22.861 +e6c821faac9b8792441e2612aa1ee9318b71f9966d7d3a64abe349be68b1
  22.862 +744de7b212f6be73a0e1eb2fa30850acc3d9562f989cb2d4fbfbcd5d3ef7
  22.863 +ba55717da1cabf197b06ee4d8650e968518b6103fbe68fcd5aab70bdd21d
  22.864 +66f09f96208db67c1b345672486657295a39a7fd689b2c9216c6b46a29dd
  22.865 +1283bdba295dfa839a45b86c14f553ff903a6f7a962f035ce90c241f7cde
  22.866 +13bab01d8b94d89abdf5288288a5b32879f0532148c188d42233613b7a1a
  22.867 +7f68e98e63b44af842b924167da2ab0cab8c470a1696a92a19e190a8e84b
  22.868 +1d307b824506e72e68377107166c9c6b6dc0eed258e71e2c6c7d3e63d921
  22.869 +39690865d3f347c95070cd9691a025825421be84bd571802c85e2c83ba53
  22.870 +841223435a9ced5dead103b470a4c6ae9efcc8b53331c61d0e1e6d3246cd
  22.871 +aa1b0da347685121196a07e97d21b10ad34e7031d95c1bafa37b4141bf33
  22.872 +a6be401129dcd64086885f4b5f1b25bce75a4cc8be60af35479509e64044
  22.873 +d49c8a0c286e4158a5f346ef5fe93a6d4b0a9372233c7434a7a6f9e7ea21
  22.874 +30c0b4b9f62e3a74cc5d2916ebdaa51a1ef81fceb6cf221e70002a8a3106
  22.875 +bfbccc2d1809dde18e9607fcaac008fabb72e8c50244507f4013c5a268a3
  22.876 +6135ead9cc25362c37aa9511589f18d812e6039490f9c599f44e88754ac1
  22.877 +4f6c1841d570efde27958c7f1b2c68772584e1d12fea252e3a6ec3b051a7
  22.878 +6faebbf6f5101978e24a9ca927c02065e8e49150a55c64dd30757e8a33d5
  22.879 +2a788437a9181efb47414dbc22fdeda203d4122137bd045611f68314e12d
  22.880 +1d6a5ec270c8919562c03e3af7b0e0deceeddbdaf3eab8fb5632e44dc1e8
  22.881 +d46e2396b0236a46659164e33709415e7b347f7f7b87a9224a189ddf5178
  22.882 +2cf66c9d385470a51efc88696176f6d3ac3b7b95fa074c981194e22981f5
  22.883 +1d925f980393b7102f1f836b12855149ef1a20d2949371ddba037b53a389
  22.884 +7617c257bbdfcd74bc51c2b40f8addfe1b5f8bc45aa4d953c0d1d5f4091c
  22.885 +6af796af6513c820499969593bfd22f8c6dcde1d2ee2c0ceebb5bd6a1ce4
  22.886 +5fa61094e932b380cee381f4485e39b4b1797f2a7d8d90bcbf89b9cb1006
  22.887 +2d50fff083743bf318157caac1c0179c87c03a2857fc002979e7cc97feda
  22.888 +966b09ceb761d3f55cf07637256c6aa8b8e5cb6aa9739452a330afbe7082
  22.889 +975ee39fad5e8106e8ee05771157e92d99003533d922ccc37add065b6236
  22.890 +7613d039741f99edc77c230fe8d1baba720a185186662376b947bbe1a686
  22.891 +4b42c61ebe1abd40d890751ab8945c629de3b6d2a49809dc693f9e397097
  22.892 +cf1e568c258081242460af2de0ca44b7ba2734573967b3bdec0e5e64598c
  22.893 +cbf41e630d821491504f414d9b54a3100dd5105a141cf61bd3ec41b67368
  22.894 +c8cd366c543754ee800ffee3d19c9cd0d408cc772da10e4d8134964b0a61
  22.895 +232e2dfbeacd0fdee12792504bb327a2e1fc44127f8577ca51d380a760b3
  22.896 +740e6be46455cbf3917b90f0dfeadaa25d5d9f66cda43ebf9f75e0191a06
  22.897 +25ba29666bbe8678822a453d4e876bad4a6b0d4b6cf98feb60339c9eba2a
  22.898 +dce4ef7faba428422c503d0210dcf8d884ca9f5094aab9f3b1a2238b569f
  22.899 +444748902907cb0d9d7ca33fccdd0cd29bc68e44f7bca5092be6272bc949
  22.900 +baae5af92c302bb21f91b6ea8463265680f7c16f45d8ff35392a10eab87e
  22.901 +296f3af4478032b5b021db8510deb617941130d45c46fb3647d94b162fe2
  22.902 +2738766fb6d76a06ab6803818b27c5ff4205ba668f95b5ec5ce4ce6da545
  22.903 +c13ff56f417a4e0b3b8554a1e2a985a167e168adc8c4db28a601a80ab451
  22.904 +91bf32acfd8d25c39c2f17fb3bca1296d3d160f25b43b4d6b94f20ffe012
  22.905 +b779339b12860dfc897b366e3d400e756f4f9f4d2c86fb9d94c11ebd1450
  22.906 +eaf720056e2c39529331bdcb104d113b42c94af2c6a5035750b7ae7fdcba
  22.907 +b6116d74bc07a11d4357ecf73d99221dad5cba4a7136425c2a3ac0e092fd
  22.908 +606a4ab722195e3b7fdfb5a5e3ccbb85fc701c42bec43b54e964dff3fa04
  22.909 +193043eead7681cedae9cce6919949ea60ef5630c4b9263c8f98b4bc74a1
  22.910 +63ccf3d0a0bc1deff39b800ac90bd734dda7ecdc73169ad77e129887db80
  22.911 +7a253f8807a422eda8a16c9ee9bb8fc0942634bfe035dac9f7e36d09844e
  22.912 +39477c043399db4d07b3617da9d6eee76d0fde9201da98b906050748b68d
  22.913 +8c944ace3c96e90a3c2b63eae27b9152cb7274fa336866d71b65a57f1bc2
  22.914 +bb1f482a67f3993dcb3ff24abb0223f9a026c81b2b33127a1dad8929dec7
  22.915 +5d46bdd790eb1addd771c5c3965a2f514d3a128117a44560cc10a729bade
  22.916 +4e6c86de7c09a39602235c803902e34f5c176b18e127d71a011dd9a3a61e
  22.917 +ebfaa4a4e2a5651be6f4067e5e09bb4f3514d67c2129e4d3ea9568661138
  22.918 +1e45af07bd84f883c70577a986416747f3bd8d1bf86d3d7b07e8a350899d
  22.919 +3c2dae237bd5ece45faba7a0ba30fcda7b7eec9fbeaa5a94620686d1e403
  22.920 +1cd2512e8d89451c7bd8eb432c8862023d66f3f9fcec0d47598e2df59525
  22.921 +d673a5ff493d458748cd6341f161a0a3e8996ca5b496508578fe4f653924
  22.922 +2ae28bf4b7397c02b726fd5f9d8b898938bb668a546be6e42865f4f030d9
  22.923 +5faa289eb24f7b8e249b224a95a2245605d67417a489626df7417855b8d3
  22.924 +1c0043cadd2b461d32e1b39ccf409757c37b68f84e752bde6b5bbb847bf1
  22.925 +57ea3434802def983d6ce5ceb3e9fbc4911b5484e99bb94dc3f383e50672
  22.926 +0e85a91ed378e352838cf02921ee0ea94be01b5a60f9b1f58fcc1b4f527e
  22.927 +43725de9b9dadc3ef462fa279bd7138095d4cff2a0563039f71e383430dc
  22.928 +f628dc9611b2e3db08fb2da1d5383dc1a3c784e1e64541fde1d9d7f42505
  22.929 +de96d3d0a401099fc2879af0293b0eeb143b78cc221f670c0479bc150047
  22.930 +0cacb9a282e334e428b527acdfbfc56e6aec8d4d60745c1dc000011b6248
  22.931 +d9ab4a17dca7cc74e17d33c0641710b02cb1edb0addc6be214b17e9f845b
  22.932 +2d9c8bf03c19e131e00f91f2a393b5f2ae7c3d4ae9021c4d7891d84d5067
  22.933 +377ce92836e42eacd7e540824f7ac95360ce116d41d17a50748748971c82
  22.934 +27f089a22ee0d21940de854f737547b73c7517addd9bdaab425a6c2908f6
  22.935 +87dd990d6cba4d84308bdd4c4435a6480ecfa1a14daabd4d8e2398178e48
  22.936 +de28b84f7ce4b61d2e6e64fe043c29a941f6de7621ee6f6d8b506221df05
  22.937 +db238b8fe4323cb5f259d4d3d9c94d4ae1ca37d6c34345489c0284171346
  22.938 +e9830e2e3c6c167238a7ffe0989d3eac870cd44102cae139469b9d909b5a
  22.939 +9c34792f693ac94ecd35d2277080e30a2d24b50391b6f2a3d3b6c81f7ed1
  22.940 +a7b218903e7fed7a63269e27d793a2e0b40320ebf447c71f36d40dee002d
  22.941 +7257f43c8add31edf2c571123e46fdb413e007cc89e99b6f98d77ab38bff
  22.942 +cf140f787e45ffb2c7cc4ddbb59a4e32dfc36e2875f204ac851d757c1236
  22.943 +12deb31324ea4c201d27fdab46e9f3988ad2bcfb8e9cfa8c487831a9b0c6
  22.944 +60b20fb66b4c77f52359ac96f3b3d189aa0571c1c53db06ddb10f08882db
  22.945 +0b1e93e9478d4c75626c5fbdbc6044c4d82684b310ab2af144d12bf36f1a
  22.946 +c0bf6249d1da9ab319453594cb19d0e93c4e047fb49229c0cce76d0cece4
  22.947 +2e76fabd2425382afe707db032cf617b046a59a2fc1bb3838d98fd5c8053
  22.948 +ecb918bc14762e4ca45027623988f434ff4cb08bc9bff5d7de21940e3e03
  22.949 +1ee042d9c30662aa76f96213fb5a92047af60f320e4660eadd1ec19d0086
  22.950 +072f2202af5f219725f81882f10d1e065a8035a9946d0ca0e48a5e7dcf61
  22.951 +0283b834eda01e7d94b3453830daade2aa6c947989b290c02ade0d7b2620
  22.952 +813ad177ed82813b6a985d5c0a2d42419bda763d409da085936e33c817ae
  22.953 +68e5467eddc30be172de855a0f7f5c527555b3f4d942401b450f08273b1e
  22.954 +c5b5352fdb8562a71f276284cf7c27537e628f94bcbffe8d669ea2645752
  22.955 +60830f1e65e83a2204cec393f6d92d4f61f317471b4b93039d298ca2cc94
  22.956 +eeada0140823a2bcd1573e732e7b4bde7368f2ecca5961ad547f554ae989
  22.957 +98d87b7e5d07a85c382bcea1693a697224f41eb8b406bc6a0c3eddfe8b5c
  22.958 +f25b11c3e4bd91ea7d6274cd6b3ee7b8f18cc3fd502a324c645568dce9e0
  22.959 +d43caa61f7306fd5488fcfc439d85f8160ebf0ac90fc541f9c74d35d7833
  22.960 +09309807a639477bb038200738342e50136dc64baa7cc1b879c61f7e1b90
  22.961 +e1f2bd4f6e54c4dc97b8e4adeb102979203a31fe26a7f58c609915a95abc
  22.962 +4acc263179423f8ab16b04272d5592fc536f29a45cbcdbe15890f119ca9f
  22.963 +c7a52eef41dfa5c4fed087eef8e698ba738e300bd58f2a1a10da1198c1f9
  22.964 +b60e2032f8384a86aa84027df21cb87977528e3bb9bea1e3a6879c56402e
  22.965 +a29063afc6ac0194f4944433f9a5872cf0a2a741382d7f3c0ca7817d5d7c
  22.966 +4b8bf53af0f18b1eb54480519cebb61d983157e039b13025e7980eb36f54
  22.967 +3451bbb84e470ffd0f98eba80c74f238729dd6278294388a2e06de68a719
  22.968 +47b6d478c85f124d14aaa835620e49b7f5a4f21347302c0f0864f7ebaeec
  22.969 +d0831c36187cbe9c848736764a31056d2cef27c07cca00033dcddca9a2f3
  22.970 +b9ebf28e67257b69cd38bc23c711b6a2f6e4dda9bf5a19da275e6a8d683c
  22.971 +723bfbb95a90a344a6f421f0b67ae84c74652288b0597e4c86c28f73808a
  22.972 +77455f2948e8df634c2d14f221626b019033f9230c9167982cca9ae6dc37
  22.973 +aecbcb49fd9fc1dbf2d11bba7187888721bc42a7f47c23e07d2fc5a7a91c
  22.974 +0dfe255a7f9d17e69af1618502a6b90b1dd748c7eaca1e1ebe8b861b04ff
  22.975 +e5f628f47eb4e7e65311037d7a5713d7cc3552dc85f452ba74c4f12aecd0
  22.976 +d72892c940c3325640d62fe3bbbc71361dce6d54766e1fb99dedcb2d19d2
  22.977 +fa6fa21f9116e03952ebbef659816a62db51a9b5b3916ff818518774ccd6
  22.978 +79d44100d7236f211f36fa80a4cbafb3db76ba1e7e7f12082b0140eed2cb
  22.979 +5e793e24501715c6c170ad4f856a4bf16bb10210025156e635264d3cf18b
  22.980 +1fc1e8cd2fcfdc2ab1a24af9087975bfcf6fb703fb36e288e58d0d2ffc98
  22.981 +bb4318001d931ad6161dcdf8984e6690e0f6bb07af81bf07445f8f57b355
  22.982 +6b960d24e7cd152708489e4d953ab6a155a757e002ead97585e6c5333d7e
  22.983 +5aaab2731f047f3490432e0ebf3d0d628eefa8c1f665b9c86aabb0706639
  22.984 +5bc372e16378f0d9b439c98e7bf87be73e934995d58e4e70d3ae9a5b54c8
  22.985 +87a19f2826a772c39d41805c642354d9bec75b065f148f7c1e435dabbeaf
  22.986 +e4a5744e3f2894a928121ab069bffa3218a106a9dbb83971353a7c7a5616
  22.987 +d9da66fbb908173f9b07aadcbd4d112cc353e7b70476046ce5a92e86eaff
  22.988 +4eec40acc840005f51f55c9f5874216851e9cf3fa431d95d3032e779e356
  22.989 +4bdce33966a3a798b170a06c4cc9f73700224c858c36bbf2d0326c337ce9
  22.990 +46f69c19a84187fa50afc5b36010f9a7612e3a25e846d49bb907af9505e7
  22.991 +d8c78748d7dcb501bbb3d6603e829deee3784f2f3ca583d3738d6d2ecfb8
  22.992 +eaa887103606211a3c1b5cd74a3e0e96fb57da91baebaecd3669661e7b1d
  22.993 +579ba41928a40a7028acff6cd409e601d23ff66ff2c8acb12e535360d727
  22.994 +60d2e988d801930e0e9443d60dcb9f378fa75d58d73e6a3b6e5b26407c82
  22.995 +67d50ad97787f8a9b91765e41552283cb67e43e59bf71cf08b9755c8ce47
  22.996 +0cf374832c72d1e9702b55bcfc8b5a4e966d5072fb2a72a2108574c58601
  22.997 +03082ac8c4bba3e7eeb34d6b13181365a0fbd4e0aa25ffded22008d76f67
  22.998 +d44c3e29741961dbe7cbaae1622a9d2c8bca23056d2a609581d5b5e3d697
  22.999 +08d7e369b48b08fa69660e0ce3157c24f8d6e59bf2f564ce495d0fca4741
 22.1000 +c3a58ec9f924986399480ee547ad1853288e994940bd1d0a2d2519797bf2
 22.1001 +8f345e1bb9cbf6997dae764e69c64534e7f9dd98f86b5710ff8b500e1c4d
 22.1002 +f509da50c64e213ebdf91978553a5d90908eb554f09b8fc2748c9c405903
 22.1003 +e7bfbf0ea7e84254fb6735f09bf865244238e5fed85336c995bc3a3b9948
 22.1004 +947a6eb95db4cd1b64c0fccf82d247a2202e9e7eef5a550557625a0192bc
 22.1005 +8bcc9e461e52833f6b8729ccd957d5c4b6e07016e864fc02b792c7400ace
 22.1006 +d0a8f43c755f87bba6e5c6e1022416e5454cb34a19865d951f7aea527760
 22.1007 +53658cbf306ead832244f3062c39a0a121a1157a8e47008163c5bfc88197
 22.1008 +be16e9a1ba26a035a16dd38cc28dffb666dd4ba7356c66b7bced9e26e905
 22.1009 +4ce25f6d36607d8f5dda1e21ac96a815bb2989f01130ba1aca9aade554fe
 22.1010 +effdfef5d6b0d2a01aad92f599f6a12e121010ae6acc6f150f19e7305271
 22.1011 +97da761b07530ca19b84b119e5edca1fad18462143b8913d6b3f6864b713
 22.1012 +7a93bb9e1bc29c09d660704e8d8292c61072ebfe35c354a2342b2458a353
 22.1013 +31d043874380d439388e46688a53bcfe01bc190ef1a6b5dec9d40aafe822
 22.1014 +261b28bf3e2d76f3dc4302506ce3387b4aa2a51cd4ba1faa2ed1fd7df664
 22.1015 +6772fe9f83d253451eeb0448b444b8ca80cc7cb653c2d1eaa0de6f2b1c72
 22.1016 +47e6d24ae72e620e200aff83a557a1aa7a0ce0a9cfbbeae03c31d8cbf1d8
 22.1017 +20b53b688ed2ffbd83418d743ee31e3d62216ac7be6c12bc1917548cf670
 22.1018 +d69fd2e78d9f7786ada0ea30a6f6d9fbd1f1406337151ffa1d3d40afbe03
 22.1019 +728fd1aa2fa8a4f075796b9de9586b71218b4356fb52daa01d3c18cb75ae
 22.1020 +d4d33fc809dcb6e3dcf7aee408a0cef21353d76ed480bf522fdfe86e0e0a
 22.1021 +b7d097defcb793057f0ce98ea4989a9b6787b14029a4bf10315a2557149a
 22.1022 +fe9c91e7d825f7518b343fb556f0177a8f6ca08fbda9913d52997511590e
 22.1023 +b9942c9813b4cf4d4aae4919401f2fc11fef0620eb5c40532cdb22d5fad6
 22.1024 +919a3a710de6c40d54993b5386636499c866938e33bc703a99c73adc228d
 22.1025 +95cac73ff4f4a275c04d0d787b62c6a184dacc4024d23f593e7721be232e
 22.1026 +9882fb738160e52ab905f0ce2c76ae6ff2c8bbe118a1acdb3b464178cf01
 22.1027 +94bc6a50df1090e9221be11e49f254b06c3236a31569b947ad041d1c6b55
 22.1028 +bfdec3c18c791ace0fe2a59504eef64a4eec4b5c8dd38b092745e0d5ad29
 22.1029 +276bf02c419c546627672a5764a4904635bff86fd0781d36fbdf13485229
 22.1030 +71f355de2b0ad250052f50ad70f61afc870ac7a816561d3232b73360d4ab
 22.1031 +2727b2fd045f254c782bb3f1f49d94c6d625047071b7e32da5c6d21a86de
 22.1032 +9283fd632074430772bfbd85e0c9ccab1dec16bbc049c3e223bec1b65c8a
 22.1033 +9e98cf58b30a74f74f1a842dc91e30c023498e280ac55edd58f4cc731d81
 22.1034 +e443d9b9efdf5fea63c9f357320e01b8740eedaeef2495cd02eb2f338b3e
 22.1035 +674fb074cc497d7b1937b188da857c2c230e9a931cbc00c85a7a36fa80b4
 22.1036 +56588e1bbabbe4ef429a6aef9bd4eb89c5752421bd049aa13f4dcf9b51ce
 22.1037 +2503e90bc118fac78a25d187353d6f5d496cd6130b337666f49619cea985
 22.1038 +dfbeb7e49c67c1e0f0f8e9ec8ba14624ed0982dcbb69415e4b3c8ddba140
 22.1039 +397eb1fc1ddd36c94c374f018873ba41109e45afa51f0e691157d5958c06
 22.1040 +26fbc0903ae25e47ee372389cf65472a3e4d9769550bdc42c0b72f9a297c
 22.1041 +d5d3c16ec67e06036e740ab664abc9f10b9499269b73ad3678daf4474329
 22.1042 +c2c7252c1f0df1e3b5e8f198dfef8325cb1e7e8057897a3d7fb5bb5858e0
 22.1043 +cfc0c115bbd7362d8e8ee41862af6eeda681cabbb06f72ebd2ae0b0be45b
 22.1044 +a9e1be83f1da30687a655e5d148fcc17d9f53b760810a565f6d2f4cd5da3
 22.1045 +5434116edef756adb4d3df544a1de593be988f2bb8d36c34deaac7d9dc15
 22.1046 +cba49764f1e03aa09fe21fcd7c74e3d6487ebe219569e019f10dd163046b
 22.1047 +c1a3cb2bcbaa8558197cb2c18709a998b4efa8ab8c9a71d2ccf942c17662
 22.1048 +1b88dee6b424165d6ce10ac48375e760983818e0085276b1674dd41042e1
 22.1049 +a01a8de111c903f74834199b3230bd475d92c6226ef74eb1daaec3475a6a
 22.1050 +fcb47644a17c7e390ee3b16bef1c1ca6c55eddc44fbefbdde525921b3047
 22.1051 +0d76817bd8ac724739a8e743eb09cf78e88adad527d4f115b8a32ed4898f
 22.1052 +45bab3eb802b8168aec061e3ecdb026c056fb9efe7e2df48bd516ccb12ce
 22.1053 +00de08ed8be4ee0c41f40f4c8f64483e0ade90a78d6d4fe9203fe0b97c60
 22.1054 +3b2f8882bc15a212453c691c52d00fae8a3a26934ff8acf68d4352eef75a
 22.1055 +0b10d938e55b7333dda2db0296a69e9775bf82b1aa6d684fd9080fc1c11f
 22.1056 +ab4369c7a95a9504063db900a6e345bf6dd99be041230b2e60cc86b8c345
 22.1057 +1d84a9c2cb4ab6d74d63dd43dc26eb6b384f5222796d4083dcc3e1651548
 22.1058 +d9469f09a33b213a33ac52a6a2e23802d8f8a75c01a607940daab0051410
 22.1059 +73a88130bc192f303616adb113c0051b65e12086cb319c0a5323fa7def40
 22.1060 +402f5f87a3b2c2cf0e92789985f6775ac2743e1ffe2d0668291059740d45
 22.1061 +43bae7a2897e5e658592bf5a72966097742e0702deecb0cb12499eab701d
 22.1062 +34ba37a08346217a415e44297a181bbf3744f0a49230ad6f030e11462be9
 22.1063 +afc2ae14e0587bc02311b48b8e2122c28cdf14414f3680fa52dbbb63b17f
 22.1064 +6ebe4a1204f3c5d6150cbf89a8023890383153838d4dde77d4c8b1b78823
 22.1065 +8918c564d3babfe58eeb154307dd1997f5ab7105426e35c279008b2677e4
 22.1066 +695c60f956b348799c04b734338018fc27f7de7ad9d73468fdbc5283bd14
 22.1067 +c066ddad9a3562f16baae15d72d7bfcb409e1c874e9db1a8cde233b282b9
 22.1068 +6e76e9c08d85ddfbd3cce7e64104d0b0e95291bd91f405ff82f41601ee20
 22.1069 +8471e613fbbee67f269e4e954c36d1d18ca9880b7cc2b08fc990978efdc5
 22.1070 +1d157deefedaa765c1e26ee125d4a2514a41a3b95e9151a824532d7d6486
 22.1071 +35ad622718fe71219a697e94c2e64f26424cbb767acdef5cda70e179cd29
 22.1072 +b7e318d1c6d3ad26fd5fdcbf2fc221301cc1f10f5ed86b40a1a6bcc01c90
 22.1073 +eafd65183e75609610637b99fea57885efe76437df02a2ffc21223d039b5
 22.1074 +74955d9a54ff41980eddaa8768c5ad883a0c9150877392b990d63c6805db
 22.1075 +7b8d6ab1358cbedaedb6feadb0ee4fb8f9c1ca03a3e755a74227a8930bb7
 22.1076 +2ea0a00b48fc626fa14d7d48624aedc31c556f44e982f3ccbde7ee735f73
 22.1077 +629ab1b65bcbcf0a3586a920477e8c960219802fcb1bc3a179032b324f8d
 22.1078 +c424899b38275886cb5bc771f26a0880767d49cc23426a40a4b6ff8fe48f
 22.1079 +d747565fc537565f6d7fd08706accc60f5fbcb45bc785f45ee9b0812366f
 22.1080 +ae71b23ec43f3549c8224d78baf18719f05108d5741e681457ead8abc050
 22.1081 +462481771a8dc6cfeb98956e163981a98c59ab44d90e9c3a946c453b5071
 22.1082 +db0c769f7fb5144c7ab0c9ef1a6db1addcde1d4ae1daee1b4035af256a04
 22.1083 +df53926c7a2dcdb94caaf12f986e20929ba4e396f3aa7c93a7abaef1294f
 22.1084 +5f13a0dd3c3aaa8fb38da3e15daa32163b7437af683b4f5e64cb14aebbde
 22.1085 +8c69ed2e8cdbfb213fc8129af29ca2c06c8f85a5038d688d1fa5d1b54ebe
 22.1086 +4dea81a49ce24131f8e6702e7aa4e2cba078d5dd373f894ccb275f49c690
 22.1087 +1dc772e1d2f5fb3fe15dbfffac62c87110162074eb72ae4e5e446bf7e650
 22.1088 +a554178d0d64d3c07f330f0d99e99f2239cb1597f2e5f443854cdb0f5fab
 22.1089 +b28fe62f22e7f3419d017980f325351bb04f8f3c3dc57fee03cc029bd29b
 22.1090 +202308d5a800ed2d500d41ace8e54e2557bf25b627883beb8118d800eb94
 22.1091 +f4253f855168f7fc8a2d29c5fcb76bb90a6c4e345722b8991a854047f46e
 22.1092 +4e97336be85470b6be2b9ba573dbc4967ddcdbfc3b6fc35b0c7f3f2f570c
 22.1093 +55dc3fee6d80bc6f46cc7e4d86a0b86f6fa61d062e213d9e442db63fbf11
 22.1094 +d03165b44572096995ed342893bb672f6bb55ff8fed944667995f0f89a48
 22.1095 +a904c47420f32afd14129c6e2bedffce1f07ea69d550b6909bb5beb4aa08
 22.1096 +b0b44f35e018ba5206fdb4df0228462c1fdbb95a429e53eb27bb1b0490db
 22.1097 +f07202c3608d0f4ce08570e3d6aa3d4581c569b57bd8c1ea0e4ed3fc5497
 22.1098 +e316ecec06e6be582d9170d426f6d22d8c7287b8219945c124941ca8812b
 22.1099 +e97efd9105eb6999edc0665016633b3b48820df736125b7c76c9f3a67d93
 22.1100 +8a2a0a6b743fd42aebc46a0249be459f16811ac9eba7b63bad7c2e88f175
 22.1101 +0eff8da5faaab5659824f9d19b3225aad2ac17c52c523414d3031d08a926
 22.1102 +30abf474fe02a32b44d3b7d9fe0c19aec16ca6d018b71d9d395ffaea0788
 22.1103 +0d4501d7cdf0f7077a2d63303d09083080d67f1f714a1b271dab9fc9866e
 22.1104 +4b0571a171eec8a4e351ba2d02438cd108a33b1106acaad0ccdb051061ea
 22.1105 +7f40543748115f29debfb4be4b42cae8762d62114ec6f8ef68c478a8e05d
 22.1106 +ecfa18b0368428efec9eafb2353f95e3d71e1636b9d9f94a77e692843255
 22.1107 +698576dce13b2b858d2d15ee47cdba3ed08d64b77ab46dd29bba6aac2106
 22.1108 +ab847de378cccdaf35c64e50840248915f4fc110992c493cb1b9cd0b483f
 22.1109 +0f1abf5e9b018210b477fea28234ffbe5e0bbe01338e0842a89f1e00a0ca
 22.1110 +7cdde0b2d7c324d5e17d8d3415ccad703507497ac95360ce660b656e5f66
 22.1111 +72a2f50761f3d02ccdc1d5692d7797699b8e2147cfd4817c81a432ff6a5f
 22.1112 +39cc54927fa146cbed56a55f85f123c0a94b7553a8819b329d9dd122c502
 22.1113 +94e3f6314d5117db89ae7597c4691b6c542979a1ca3d26a8e23d3eb698c7
 22.1114 +1841651e08ec771cfb974d6613f2143872c739b62796bd0a45172530793c
 22.1115 +28d93a65b59f79c245248d2c09428657a35b0c0e367bf7a4a4f0425b3f4b
 22.1116 +485d9f402e164328a4b963f456829a39035c00283d2e4fcb71a42da6d42a
 22.1117 +d46cb751287de34e6519c60bb3f1a6ba91f7bfa21dca96ee712af5681701
 22.1118 +18ece8a0535d9ba1dd4bd835e004a2f38c5ba43c9b30d17045e5649fbbac
 22.1119 +188922e442182d4bdafaefb39e00106a5a7765f3d67850471e3629e526af
 22.1120 +8691f935b57bd38465665204a214fef1006ea37dc0781073ced5fc042781
 22.1121 +93650393c3cadfddedcc5550ed483bb6355f54600e9758e647f9c9711f1b
 22.1122 +e7df05d0e50a698615307c18f6d4886f50188011ba499d03831185915f3f
 22.1123 +77c4b9ce708d78423b110776aaaf90396be0381616d1e9b0c1dcf68b6396
 22.1124 +82399da2a7323bf42ae5347599ef4ae9e5c135522c5ecb87e201853eb899
 22.1125 +db60d24acad17d6b7c2c7ea4dc221f3cb6d6caacd1ac0822ea3242ad9b4d
 22.1126 +d15116c3874e3012fad26074a23b3cc7e25d67ef349811dbc6b87b53377f
 22.1127 +0cf972040a037ecb91e3406a9bac68c9cab9be9a6bb28e93e3275b177cd5
 22.1128 +0b66935cbe8dd3d6a8365625db936b2cfc87d4d6e7322df3dbe6ccda2421
 22.1129 +a5e5372566f626a5e9d8bc66959e443286f8eb4bcfdeb6c49a799f1efa69
 22.1130 +63260d0ea2d51260baba9207fb246da927fc4c89e9c4dd5848fd4ef6f81a
 22.1131 +cd836f5f06ff0fe135cafd7ab512af55a57727dd05a5fe1f7c3c7bbe8ea7
 22.1132 +e6680fcb3bbbee1cf2e2c0bba20185f00e2dc3afd42f22de472cdb3eaa5a
 22.1133 +ddf8c6fb3682eea5548c51ddca25ca615221127b4438ea535ab3089c9ed9
 22.1134 +b971f35245cf831d9461a5da9d57bc4e5606d26535a7414cef6aee2a7b95
 22.1135 +bf2276044818ee0f3b0a16532934b8b745d8137b42ec2b28fae7d55fc02c
 22.1136 +9ccfa4e0055f8a4be96e1e235c01b8b6ad509b832a3e90161e0a449934e7
 22.1137 +4be973c939b31cbc19dad4c58e9be89d242f0ce200548cdd4fa2081ab3f8
 22.1138 +e01f358d5db24b7a50eb2096d833378921f561f132cd7988708ee10cffb6
 22.1139 +2256201801c667e176b1dfaecde9756d725bef093457805e16f550e8a7de
 22.1140 +87ecd46e5b09646b73ee74f890a36867636911e4cda2c46a40e7d57cf297
 22.1141 +9696046614c85b1a47ba55c60544ebd3ad7d750d003bda56dd7eed8c4702
 22.1142 +f8b319aaeef9d3cdc59b3e63ee93c6e1e857af273eb90909ecf36ef4c276
 22.1143 +895c78aa762e5376c5c542f854fba864ebce56e4b0207091139f053c2c08
 22.1144 +3b7ddcd0a9909b52100002bc3f8c47bcb19e7a9cb58b1ac03fee95e81195
 22.1145 +072d3aa7c8079632725f63425a3550a947834d29ac9a26d0774e90248e18
 22.1146 +996731fd9aa53ab62b40ce557d98e874b763d9d629a173f0c7babfc00ae7
 22.1147 +82daef5f00cf3608ebeef403dbbc19e16a1d160b889f4a10359d9eacc19d
 22.1148 +7b5f126b31720dce7fc35ec861dfa56ea23fa18423ff4e8fe6e53fc6ba16
 22.1149 +b95a2b5dec00f614e4f835281ee0b4bf549e7e882689e0b445dd46fc40c9
 22.1150 +090e5575fa2c34b02a51ad0bccf6a7bb83ca3b929285e5e9fd054b72c47b
 22.1151 +733a66c5abda526b18b2e49d0746e067e63b948a45eab2f4221c5b62ae21
 22.1152 +a5d9d7cd8aa9eeb49588891d22c56b14b55ceb6488f02b73ab3b7f6c5555
 22.1153 +b75452594658255e4cd58ac4815f2e1bc3888c6777f62aac2f0a57d416c3
 22.1154 +765c991f0f9a33d888aeb2d527b482c042ee23783a04a73ad13dfc590a52
 22.1155 +f3116f8296cacc7ab29b7d87e7864561a5d0a12bde2d36ee697064f41d1b
 22.1156 +ca6ef2f801caab5295d19bf4c02b10c19f73b44635ba48a0806b967d7dfc
 22.1157 +ce9a4850171a78532cb30020c0d66b3b1e7c75eaa7894904c181a022e8bc
 22.1158 +9b2b8ef1202f3c7d36bcab4742d4a4761bb55b64da0d99685d319f5da8fa
 22.1159 +132be6c0483f50e2657ae8af1e28f969440d6ed43eb00e95fd9e1cd490a4
 22.1160 +8646f6d008598751f7a41b43fbec7770fe591012b6b0c4ae18775ccc7db5
 22.1161 +de0ded2dd53e82c89648d46f0d0cc5d3ac5aa104239608d512a4353b9547
 22.1162 +04fe6eb7e73d718323cf9d748b8ec5da01ec9358267de12cc22b05ef0312
 22.1163 +e4b6ac5dbb6d06d7f2d911f20d527f504d62547aef136834b3695df8044c
 22.1164 +383b6145e824d3931a602f081d9d656f84987a1ef121772f1f5b37a116bb
 22.1165 +d2e77d4ccda01411545d24e15ce595db4cd62ee876b8754df0b85b44e011
 22.1166 +b82d76ce45795e6c2c58be8690b734a8880a074f303a70da4a1b086a6de6
 22.1167 +56c02cc7a4c25258eff18cb0fd868214bb46f972e26509f868d065b3cb14
 22.1168 +1c316898cf22293391bd7051ac3a6927aada952a8fd0658ce63357c07f34
 22.1169 +acbf8c99a5537da0023e901f0eb5547e1b466b7d982c8c539798b76ee2a2
 22.1170 +252437a81a37c3b63f625172d682eeed0b795860b2755f020ef52a138353
 22.1171 +003c61be2052cdd7d73b2cdcd26b127660a7b22fc51a6a2f6034f37e3e46
 22.1172 +c1d7f83f8b28c7c965993abba1d358362833580d9c63fa85d4cb949f97de
 22.1173 +579fb6807b95a58b78f596db50055947dd0d0e597d9687083e9bc0266e86
 22.1174 +90b884b27f4094d8fb82ffdbaac4d580340a9ef8aa242be87e54b601af19
 22.1175 +87a48d267c04e371ae77163ebd0de3f5297b1060442ecdeac38334844e38
 22.1176 +0f294d4be73935fd8a38de7fba6d082c3d9156d7e88f2cfff0459377cbb6
 22.1177 +041f37a7e05010753b98e0b67d5827aa312129bb3c3bd883c12323756406
 22.1178 +d555720da8a0bb30edcfa760c01ecc2ba3b15fecccf5a10e9f358822e0ff
 22.1179 +b64178fce2ea6a1105bfb72df0e4bc499b207ae26b8ea960de48e7ee7010
 22.1180 +b4e671dff795e4cdc5b43e81b1604d224f0616ae311f1208859c502c1a10
 22.1181 +940e7b9cd11be728bd3a0c8005ae23aea32c1b642812198a6f1aed32cb75
 22.1182 +97152b1340dd35ada1b81051e393d38f3740fa9523df6a83b8ca7dbceb33
 22.1183 +6e299b54cd998d4dfef804733c76156585e42b7284cbcc4047ba6b290efc
 22.1184 +aa60953e98cd2b4bc2893857fa6a339f820142a52ccab0df09a2709df550
 22.1185 +f22e5921cbca408e7998cc1cccb8adf6d8f8b71e6685ae59d290fa33f5cd
 22.1186 +664d73e434237424060f634262f04e9a71a977556e93b692ddc3aad26d92
 22.1187 +97dde71e4def64932151ad572af6e681082e9944ddbec6e7a8bdfd534233
 22.1188 +9ca3106ca1ccc80eab14f1655978b137fad8f399df7cbfa2d7d3d9675e0e
 22.1189 +9afec37369a8ede2c93145ab3f42a375926946680c215fa16bf7416fc892
 22.1190 +bacd806cd424b9f85b47802c4336918f7486af2a03bf0d39b10169d35494
 22.1191 +419cb1ab7b8f407897f70c18303e91563b497d70b7181ede6aa0c3efe089
 22.1192 +ca6135b34dd1019b298e3677f8da61f864a67023c31eaa716c40cf3d397f
 22.1193 +9a1209564c9ec759c37028079661d2a56374203c78b023ec61340bce5d96
 22.1194 +e477a4f77e5c0db7c0d1257b4bbbc6f889b17e6eaab045b8adef6f931e4d
 22.1195 +0795583d60a6b7002cf61639c6f930671f3b8ac05a1c4e002f4bfc50d8b2
 22.1196 +3029fc4dce1b602cc3a5533336271bccc226559ffb127e3a562f92f89824
 22.1197 +552b9a70466d5a3c74ae515a222b109d490f26e8fc2d9d72bc8af6d1dcc7
 22.1198 +80463c7af81993bac2ce4aece9d95ab736b1dc73e32d1237bc8ec2b52513
 22.1199 +36dbabb4ecc7ceb5d18b02043281eb9a3bfdf19bc4853c9b1722ef1cdcf4
 22.1200 +fcec534923db2e2653dc48545a9850c0ac2e4594abc9f7d18a0bcf2fadfb
 22.1201 +bf085d465a4d10528312f5d790eb9511ca01061c0d94136b99a043bcf278
 22.1202 +c18223b1e0f1cc062b32b79e28dec2dc59a0aaa4b5f3506923c83e6a87fa
 22.1203 +08a1d941bb644c994491cf7f3b0e2ccf6c8a8ba89376f76dfdb592374f93
 22.1204 +528e78e31e0b18719346b9f1486f652638e3120687774030444674cb0778
 22.1205 +96385c41f6566819652d825dd58f9a4308ff79b45d7828dcbfebc406e40a
 22.1206 +c46e866cb0e3e97d6ce7fcac19a9d0fe39bbde66c5f0cf775eb3b1e6d7e1
 22.1207 +1f67e7edb3d5c4facc85c916bf13322b56a0414ca27d145cb740fa2c37cd
 22.1208 +8c142d9301f1ac3704cf6a8e93973a07fde5a331cf0cbb370c7ba555de61
 22.1209 +18a6cea0ecb2c0e37152390cc57e2e4fb3791ddbc383ee26b6f4006d0d68
 22.1210 +4880888011020f856a9de47f45440f127cf27ccaea7d40a3869d39ec7dec
 22.1211 +ebc06382d294717644b6118354e15544fd4c6d88df9245c9a83b30e6ce09
 22.1212 +e2498dd1df488a019b179cb859889e6ad2838f749e3b038b280ebc8d5c3a
 22.1213 +b03e8f15751214691edf0f86281e612d7ec0773c8a5d2b433266402df62f
 22.1214 +fcc06879ca196aaf1fc73a5f01ac46b44d6cbe7743ae9a862c20445ae2be
 22.1215 +1544f413d010280cc2941900bf3c42ec088cb21b44a915bb810e7666b545
 22.1216 +5324465c5943eedcef0c09128a995f431382e2062f5e39f4338c8eba1bca
 22.1217 +e553cb60bb8f3e5038ac8073398c49f06dc734b18afa7921ea0d455e6e73
 22.1218 +db8ad9f77fb5ba6c28af6b4f18cbe46cf842c82d6c960be1520a5fd929df
 22.1219 +ac7e00ede976fb2be0a07f659079a421fca693de89ce9b8fcb42b0176d9d
 22.1220 +f3ddd58f921e13e216933d27b49d175b423751c451be7618eaab054d3b8c
 22.1221 +23e8dd6fd60182d61e9b5c86b3b764a29a62f913ee7524d8cb33737d7224
 22.1222 +d95dc4bb8c2ad6397604a0ffecc8865adcb540e5da1cd769077838515118
 22.1223 +ebc9f0b988545c1881dd2e7a8fd73e11bd7ae9085fb4d45526b23a346b0f
 22.1224 +e4281ee3d588106db5f7c386c488d8f2f4dd02d4c08e74c1034f987a44e5
 22.1225 +d39fd07538de57a42987ce290fb2f6557e8b5cbcaec168f5780927226415
 22.1226 +1e11e3667d33b36a793aa53e9e2d1102c9eb30cb3ba0ebac953e0227fe4a
 22.1227 +3d3c0eb57e4390c3d35db0c41946e45be2830a1ae33fa25cf2c7c9cb4550
 22.1228 +ce9ff6c6e3d628fc7284daa6241604c90dde6339b7f7e7df3733416cdac8
 22.1229 +e5291357e4983d74d3582a490438a7fdb0af97001a31990b1de68e6adb48
 22.1230 +917daa387e647f9f13312db57310c7dedc2a2ea80800b4f4bbaa99c6b7b2
 22.1231 +7ac8345cb659489307e2565ebfd17774642c9ae5d3c18068dc35170c7d58
 22.1232 +4cf4173f1baf98137fa249c81f3347e1dadd6b1ba0f50c3b64c1eab183a0
 22.1233 +937b0f7278eff101e5267fa6480da7d602844416490c2c2c7eb0d44ac8f4
 22.1234 +75cfd611db5ec268db07c0b3608825c3e12834a2b2efaf5e2723c5199c42
 22.1235 +6011cf22e64e4c0d31d563f321097935ea0c6fcbf5acd3748d90079f6ab8
 22.1236 +687288dc55df29fe7958f566b27b73e2ea30747247f7a2b2add0602c7d64
 22.1237 +d23f52e7c96748e6a54ee8c4629b2aab8882169653f0ba7f05236bf14364
 22.1238 +244720f3259cbed73a318b29e4a9305deb65a2c9dec8a9d0f9a9f6fae541
 22.1239 +83e0f4b9a9a567057a1794945168dc23cec25d1c02ea9242c9fb6d8fc11e
 22.1240 +e8874bd80a5226373ae87cea91853d0625c777ceb1f5a6f3debcf2f75a61
 22.1241 +460c7b4067f568ecd01f62901ade8bf8fbc5db9c6720420496f0cb48a002
 22.1242 +99870773c2e7b12e83987a5d0290d9bbf589ac889bf7d4334a5147187a7f
 22.1243 +71008f216ce917ca4cfba5347078f354897fd87ac48af6a6c62711d2eb3a
 22.1244 +5882bf3b32c0f1bfda976f850c9dcb97170e78c229a27fd5e292d161ece9
 22.1245 +a8c47a223cbdc28e24f79f6429c72b5752a08f917feda941582c36d9acb5
 22.1246 +748c86072858d053170fdbf708971a0bd5a8d8034ec769cb72ea88eb5cd7
 22.1247 +49f35be6ee5e9b5df6021926cae9dac3f5ec2b33680b12e95fd4ecbf28eb
 22.1248 +a0503c10c6f2be6c7c47e9d66a0fae6038441c50e6447892f4aaf0a25ccd
 22.1249 +952c2e8b201bb479099f16fc4903993ac18d4667c84c124685ae7648a826
 22.1250 +6bc1701cc600964fdcc01258a72104a0e5e9996b34c2691a66fa20f48d7c
 22.1251 +2522333dfdabf3785f37dd9b021e8ee29fa10f76f43d5f935996cbf9d98d
 22.1252 +92d0a84ce65613f7c4a5052f4c408bf10679fc28a4a9ff848d9e0c4976bb
 22.1253 +dfdfb78bb934cd72434db596cb49e199f386a0bda69449ce2e11e3a4f53d
 22.1254 +be134c6d7fe452a0927cf6a9a15b2406f8bd354adcde0ce136378baa565f
 22.1255 +b9c51a03b1fbe1e166a1f92af26bd9f072250aaa6596a236ba2d5a200c90
 22.1256 +a760ca050421abc78223b2e8b2eea958ab23084fa1947574e846e48aeb12
 22.1257 +26cebb8b5a92089e9ea771557599e2fff44d75bcf600e76ae7289ba98cf3
 22.1258 +98208c5104562834f568ebd62801b988b0a9fdf132b6564566103b3d2d8e
 22.1259 +6a099b7fbad8a13b8cd7f6729bb6651fc1019e66c4bd6ff27410bd5cdae7
 22.1260 +4010bd68b066bffdb4fd5e3dd9cf7e1a1353f7a4c5157e3ad508f4ca0259
 22.1261 +9761b7cdd6a81b3560b8765be3b0432fe4c25dcb4001b00c7fa62874f681
 22.1262 +ed22127dc3974605a05be8d8fcf9701f859ffce4dc598091891ab7596ac3
 22.1263 +4cd851ecfd2dbbaa2f99dac376f7bb40703fd0700d7499a7c24726bdc9bb
 22.1264 +3b88c6a82e52686c1ee945d8825092bc81848a08722ac5a1d24353f95ec8
 22.1265 +18f3fa487d9600318091b0ae9874b42bb3cb683a2518b18cc1bd86c6e5e8
 22.1266 +3d37c14ef4fe0c77b03a3314995b1e7c1066b98c4375bd1fc5fadee1b024
 22.1267 +7ece4f95a0f59978d543910deb2e5761632c74c508269c4e4b9e315bda02
 22.1268 +975dc771fc30c8164b9df9172a4e571d8ca578cd2aaeaa0dd083e74cdc2e
 22.1269 +d938b984b96d76a64b8c5fd12e63220bbac41e5bcd5ccb6b84bdbf6a02d5
 22.1270 +934ac50c654c0853209a6758bcdf560e53566d78987484bb6672ebe93f22
 22.1271 +dcba14e3acc132a2d9ae837adde04d8b16
 22.1272 +0000000000000000000000000000000000000000000000000000000000000000
 22.1273 +0000000000000000000000000000000000000000000000000000000000000000
 22.1274 +0000000000000000000000000000000000000000000000000000000000000000
 22.1275 +0000000000000000000000000000000000000000000000000000000000000000
 22.1276 +0000000000000000000000000000000000000000000000000000000000000000
 22.1277 +0000000000000000000000000000000000000000000000000000000000000000
 22.1278 +0000000000000000000000000000000000000000000000000000000000000000
 22.1279 +0000000000000000000000000000000000000000000000000000000000000000
 22.1280 +cleartomark
 22.1281 +%%BeginResource: procset Altsys_header 4 0
 22.1282 +userdict begin /AltsysDict 245 dict def end
 22.1283 +AltsysDict begin
 22.1284 +/bdf{bind def}bind def
 22.1285 +/xdf{exch def}bdf
 22.1286 +/defed{where{pop true}{false}ifelse}bdf
 22.1287 +/ndf{1 index where{pop pop pop}{dup xcheck{bind}if def}ifelse}bdf
 22.1288 +/d{setdash}bdf
 22.1289 +/h{closepath}bdf
 22.1290 +/H{}bdf
 22.1291 +/J{setlinecap}bdf
 22.1292 +/j{setlinejoin}bdf
 22.1293 +/M{setmiterlimit}bdf
 22.1294 +/n{newpath}bdf
 22.1295 +/N{newpath}bdf
 22.1296 +/q{gsave}bdf
 22.1297 +/Q{grestore}bdf
 22.1298 +/w{setlinewidth}bdf
 22.1299 +/sepdef{
 22.1300 + dup where not
 22.1301 + {
 22.1302 +AltsysSepDict
 22.1303 + }
 22.1304 + if 
 22.1305 + 3 1 roll exch put
 22.1306 +}bdf
 22.1307 +/st{settransfer}bdf
 22.1308 +/colorimage defed /_rci xdf
 22.1309 +/_NXLevel2 defed { 
 22.1310 + _NXLevel2 not {   
 22.1311 +/colorimage where {
 22.1312 +userdict eq {
 22.1313 +/_rci false def 
 22.1314 +} if
 22.1315 +} if
 22.1316 + } if
 22.1317 +} if
 22.1318 +/md defed{ 
 22.1319 + md type /dicttype eq {  
 22.1320 +/colorimage where { 
 22.1321 +md eq { 
 22.1322 +/_rci false def 
 22.1323 +}if
 22.1324 +}if
 22.1325 +/settransfer where {
 22.1326 +md eq {
 22.1327 +/st systemdict /settransfer get def
 22.1328 +}if
 22.1329 +}if
 22.1330 + }if 
 22.1331 +}if
 22.1332 +/setstrokeadjust defed
 22.1333 +{
 22.1334 + true setstrokeadjust
 22.1335 + /C{curveto}bdf
 22.1336 + /L{lineto}bdf
 22.1337 + /m{moveto}bdf
 22.1338 +}
 22.1339 +{
 22.1340 + /dr{transform .25 sub round .25 add 
 22.1341 +exch .25 sub round .25 add exch itransform}bdf
 22.1342 + /C{dr curveto}bdf
 22.1343 + /L{dr lineto}bdf
 22.1344 + /m{dr moveto}bdf
 22.1345 + /setstrokeadjust{pop}bdf 
 22.1346 +}ifelse
 22.1347 +/rectstroke defed /xt xdf
 22.1348 +xt {/yt save def} if
 22.1349 +/privrectpath { 
 22.1350 + 4 -2 roll m
 22.1351 + dtransform round exch round exch idtransform 
 22.1352 + 2 copy 0 lt exch 0 lt xor
 22.1353 + {dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto}
 22.1354 + {exch dup 0 rlineto exch 0 exch rlineto neg 0 rlineto}
 22.1355 + ifelse
 22.1356 + closepath
 22.1357 +}bdf
 22.1358 +/rectclip{newpath privrectpath clip newpath}def
 22.1359 +/rectfill{gsave newpath privrectpath fill grestore}def
 22.1360 +/rectstroke{gsave newpath privrectpath stroke grestore}def
 22.1361 +xt {yt restore} if
 22.1362 +/_fonthacksave false def
 22.1363 +/currentpacking defed 
 22.1364 +{
 22.1365 + /_bfh {/_fonthacksave currentpacking def false setpacking} bdf
 22.1366 + /_efh {_fonthacksave setpacking} bdf
 22.1367 +}
 22.1368 +{
 22.1369 + /_bfh {} bdf
 22.1370 + /_efh {} bdf
 22.1371 +}ifelse
 22.1372 +/packedarray{array astore readonly}ndf
 22.1373 +/` 
 22.1374 +{ 
 22.1375 + false setoverprint  
 22.1376 + 
 22.1377 + 
 22.1378 + /-save0- save def
 22.1379 + 5 index concat
 22.1380 + pop
 22.1381 + storerect left bottom width height rectclip
 22.1382 + pop
 22.1383 + 
 22.1384 + /dict_count countdictstack def
 22.1385 + /op_count count 1 sub def
 22.1386 + userdict begin
 22.1387 + 
 22.1388 + /showpage {} def
 22.1389 + 
 22.1390 + 0 setgray 0 setlinecap 1 setlinewidth
 22.1391 + 0 setlinejoin 10 setmiterlimit [] 0 setdash newpath
 22.1392 + 
 22.1393 +} bdf
 22.1394 +/currentpacking defed{true setpacking}if
 22.1395 +/min{2 copy gt{exch}if pop}bdf
 22.1396 +/max{2 copy lt{exch}if pop}bdf
 22.1397 +/xformfont { currentfont exch makefont setfont } bdf
 22.1398 +/fhnumcolors 1 
 22.1399 + statusdict begin
 22.1400 +/processcolors defed 
 22.1401 +{
 22.1402 +pop processcolors
 22.1403 +}
 22.1404 +{
 22.1405 +/deviceinfo defed {
 22.1406 +deviceinfo /Colors known {
 22.1407 +pop deviceinfo /Colors get
 22.1408 +} if
 22.1409 +} if
 22.1410 +} ifelse
 22.1411 + end 
 22.1412 +def
 22.1413 +/printerRes 
 22.1414 + gsave
 22.1415 + matrix defaultmatrix setmatrix
 22.1416 + 72 72 dtransform
 22.1417 + abs exch abs
 22.1418 + max
 22.1419 + grestore
 22.1420 + def
 22.1421 +/graycalcs
 22.1422 +[
 22.1423 + {Angle Frequency}   
 22.1424 + {GrayAngle GrayFrequency} 
 22.1425 + {0 Width Height matrix defaultmatrix idtransform 
 22.1426 +dup mul exch dup mul add sqrt 72 exch div} 
 22.1427 + {0 GrayWidth GrayHeight matrix defaultmatrix idtransform 
 22.1428 +dup mul exch dup mul add sqrt 72 exch div} 
 22.1429 +] def
 22.1430 +/calcgraysteps {
 22.1431 + forcemaxsteps
 22.1432 + {
 22.1433 +maxsteps
 22.1434 + }
 22.1435 + {
 22.1436 +/currenthalftone defed
 22.1437 +{currenthalftone /dicttype eq}{false}ifelse
 22.1438 +{
 22.1439 +currenthalftone begin
 22.1440 +HalftoneType 4 le
 22.1441 +{graycalcs HalftoneType 1 sub get exec}
 22.1442 +{
 22.1443 +HalftoneType 5 eq
 22.1444 +{
 22.1445 +Default begin
 22.1446 +{graycalcs HalftoneType 1 sub get exec}
 22.1447 +end
 22.1448 +}
 22.1449 +{0 60} 
 22.1450 +ifelse
 22.1451 +}
 22.1452 +ifelse
 22.1453 +end
 22.1454 +}
 22.1455 +{
 22.1456 +currentscreen pop exch 
 22.1457 +}
 22.1458 +ifelse
 22.1459 + 
 22.1460 +printerRes 300 max exch div exch 
 22.1461 +2 copy 
 22.1462 +sin mul round dup mul 
 22.1463 +3 1 roll 
 22.1464 +cos mul round dup mul 
 22.1465 +add 1 add 
 22.1466 +dup maxsteps gt {pop maxsteps} if 
 22.1467 + }
 22.1468 + ifelse
 22.1469 +} bdf
 22.1470 +/nextrelease defed { 
 22.1471 + /languagelevel defed not {    
 22.1472 +/framebuffer defed { 
 22.1473 +0 40 string framebuffer 9 1 roll 8 {pop} repeat
 22.1474 +dup 516 eq exch 520 eq or
 22.1475 +{
 22.1476 +/fhnumcolors 3 def
 22.1477 +/currentscreen {60 0 {pop pop 1}}bdf
 22.1478 +/calcgraysteps {maxsteps} bdf
 22.1479 +}if
 22.1480 +}if
 22.1481 + }if
 22.1482 +}if
 22.1483 +fhnumcolors 1 ne {
 22.1484 + /calcgraysteps {maxsteps} bdf
 22.1485 +} if
 22.1486 +/currentpagedevice defed {
 22.1487 + 
 22.1488 + 
 22.1489 + currentpagedevice /PreRenderingEnhance known
 22.1490 + {
 22.1491 +currentpagedevice /PreRenderingEnhance get
 22.1492 +{
 22.1493 +/calcgraysteps 
 22.1494 +{
 22.1495 +forcemaxsteps 
 22.1496 +{maxsteps}
 22.1497 +{256 maxsteps min}
 22.1498 +ifelse
 22.1499 +} def
 22.1500 +} if
 22.1501 + } if
 22.1502 +} if
 22.1503 +/gradfrequency 144 def
 22.1504 +printerRes 1000 lt {
 22.1505 + /gradfrequency 72 def
 22.1506 +} if
 22.1507 +/adjnumsteps {
 22.1508 + 
 22.1509 + dup dtransform abs exch abs max  
 22.1510 + 
 22.1511 + printerRes div       
 22.1512 + 
 22.1513 + gradfrequency mul      
 22.1514 + round        
 22.1515 + 5 max       
 22.1516 + min        
 22.1517 +}bdf
 22.1518 +/goodsep {
 22.1519 + spots exch get 4 get dup sepname eq exch (_vc_Registration) eq or
 22.1520 +}bdf
 22.1521 +/BeginGradation defed
 22.1522 +{/bb{BeginGradation}bdf}
 22.1523 +{/bb{}bdf}
 22.1524 +ifelse
 22.1525 +/EndGradation defed
 22.1526 +{/eb{EndGradation}bdf}
 22.1527 +{/eb{}bdf}
 22.1528 +ifelse
 22.1529 +/bottom -0 def 
 22.1530 +/delta -0 def 
 22.1531 +/frac -0 def 
 22.1532 +/height -0 def 
 22.1533 +/left -0 def 
 22.1534 +/numsteps1 -0 def 
 22.1535 +/radius -0 def 
 22.1536 +/right -0 def 
 22.1537 +/top -0 def 
 22.1538 +/width -0 def 
 22.1539 +/xt -0 def 
 22.1540 +/yt -0 def 
 22.1541 +/df currentflat def 
 22.1542 +/tempstr 1 string def 
 22.1543 +/clipflatness currentflat def 
 22.1544 +/inverted? 
 22.1545 + 0 currenttransfer exec .5 ge def
 22.1546 +/tc1 [0 0 0 1] def 
 22.1547 +/tc2 [0 0 0 1] def 
 22.1548 +/storerect{/top xdf /right xdf /bottom xdf /left xdf 
 22.1549 +/width right left sub def /height top bottom sub def}bdf
 22.1550 +/concatprocs{
 22.1551 + systemdict /packedarray known 
 22.1552 + {dup type /packedarraytype eq 2 index type /packedarraytype eq or}{false}ifelse
 22.1553 + { 
 22.1554 +/proc2 exch cvlit def /proc1 exch cvlit def
 22.1555 +proc1 aload pop proc2 aload pop
 22.1556 +proc1 length proc2 length add packedarray cvx
 22.1557 + }
 22.1558 + { 
 22.1559 +/proc2 exch cvlit def /proc1 exch cvlit def
 22.1560 +/newproc proc1 length proc2 length add array def
 22.1561 +newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval
 22.1562 +newproc cvx
 22.1563 + }ifelse
 22.1564 +}bdf
 22.1565 +/i{dup 0 eq
 22.1566 + {pop df dup} 
 22.1567 + {dup} ifelse 
 22.1568 + /clipflatness xdf setflat
 22.1569 +}bdf
 22.1570 +version cvr 38.0 le
 22.1571 +{/setrgbcolor{
 22.1572 +currenttransfer exec 3 1 roll
 22.1573 +currenttransfer exec 3 1 roll
 22.1574 +currenttransfer exec 3 1 roll
 22.1575 +setrgbcolor}bdf}if
 22.1576 +/vms {/vmsv save def} bdf
 22.1577 +/vmr {vmsv restore} bdf
 22.1578 +/vmrs{vmsv restore /vmsv save def}bdf
 22.1579 +/eomode{ 
 22.1580 + {/filler /eofill load def /clipper /eoclip load def}
 22.1581 + {/filler /fill load def /clipper /clip load def}
 22.1582 + ifelse
 22.1583 +}bdf
 22.1584 +/normtaper{}bdf
 22.1585 +/logtaper{9 mul 1 add log}bdf
 22.1586 +/CD{
 22.1587 + /NF exch def 
 22.1588 + {    
 22.1589 +exch dup 
 22.1590 +/FID ne 1 index/UniqueID ne and
 22.1591 +{exch NF 3 1 roll put}
 22.1592 +{pop pop}
 22.1593 +ifelse
 22.1594 + }forall 
 22.1595 + NF
 22.1596 +}bdf
 22.1597 +/MN{
 22.1598 + 1 index length   
 22.1599 + /Len exch def 
 22.1600 + dup length Len add  
 22.1601 + string dup    
 22.1602 + Len     
 22.1603 + 4 -1 roll    
 22.1604 + putinterval   
 22.1605 + dup     
 22.1606 + 0      
 22.1607 + 4 -1 roll   
 22.1608 + putinterval   
 22.1609 +}bdf
 22.1610 +/RC{4 -1 roll /ourvec xdf 256 string cvs(|______)anchorsearch
 22.1611 + {1 index MN cvn/NewN exch def cvn
 22.1612 + findfont dup maxlength dict CD dup/FontName NewN put dup
 22.1613 + /Encoding ourvec put NewN exch definefont pop}{pop}ifelse}bdf
 22.1614 +/RF{ 
 22.1615 + dup      
 22.1616 + FontDirectory exch   
 22.1617 + known     
 22.1618 + {pop 3 -1 roll pop}  
 22.1619 + {RC}
 22.1620 + ifelse
 22.1621 +}bdf
 22.1622 +/FF{dup 256 string cvs(|______)exch MN cvn dup FontDirectory exch known
 22.1623 + {exch pop findfont 3 -1 roll pop}
 22.1624 + {pop dup findfont dup maxlength dict CD dup dup
 22.1625 + /Encoding exch /Encoding get 256 array copy 7 -1 roll 
 22.1626 + {3 -1 roll dup 4 -2 roll put}forall put definefont}
 22.1627 + ifelse}bdf
 22.1628 +/RFJ{ 
 22.1629 + dup      
 22.1630 + FontDirectory exch   
 22.1631 + known     
 22.1632 + {pop 3 -1 roll pop  
 22.1633 + FontDirectory /Ryumin-Light-83pv-RKSJ-H known 
 22.1634 + {pop pop /Ryumin-Light-83pv-RKSJ-H dup}if  
 22.1635 + }      
 22.1636 + {RC}
 22.1637 + ifelse
 22.1638 +}bdf
 22.1639 +/FFJ{dup 256 string cvs(|______)exch MN cvn dup FontDirectory exch known
 22.1640 + {exch pop findfont 3 -1 roll pop}
 22.1641 + {pop
 22.1642 +dup FontDirectory exch known not 
 22.1643 + {FontDirectory /Ryumin-Light-83pv-RKSJ-H known 
 22.1644 +{pop /Ryumin-Light-83pv-RKSJ-H}if 
 22.1645 + }if            
 22.1646 + dup findfont dup maxlength dict CD dup dup
 22.1647 + /Encoding exch /Encoding get 256 array copy 7 -1 roll 
 22.1648 + {3 -1 roll dup 4 -2 roll put}forall put definefont}
 22.1649 + ifelse}bdf
 22.1650 +/fps{
 22.1651 + currentflat   
 22.1652 + exch     
 22.1653 + dup 0 le{pop 1}if 
 22.1654 + {
 22.1655 +dup setflat 3 index stopped
 22.1656 +{1.3 mul dup 3 index gt{pop setflat pop pop stop}if} 
 22.1657 +{exit} 
 22.1658 +ifelse
 22.1659 + }loop 
 22.1660 + pop setflat pop pop
 22.1661 +}bdf
 22.1662 +/fp{100 currentflat fps}bdf
 22.1663 +/clipper{clip}bdf 
 22.1664 +/W{/clipper load 100 clipflatness dup setflat fps}bdf
 22.1665 +userdict begin /BDFontDict 29 dict def end
 22.1666 +BDFontDict begin
 22.1667 +/bu{}def
 22.1668 +/bn{}def
 22.1669 +/setTxMode{av 70 ge{pop}if pop}def
 22.1670 +/gm{m}def
 22.1671 +/show{pop}def
 22.1672 +/gr{pop}def
 22.1673 +/fnt{pop pop pop}def
 22.1674 +/fs{pop}def
 22.1675 +/fz{pop}def
 22.1676 +/lin{pop pop}def
 22.1677 +/:M {pop pop} def
 22.1678 +/sf {pop} def
 22.1679 +/S {pop} def
 22.1680 +/@b {pop pop pop pop pop pop pop pop} def
 22.1681 +/_bdsave /save load def
 22.1682 +/_bdrestore /restore load def
 22.1683 +/save { dup /fontsave eq {null} {_bdsave} ifelse } def
 22.1684 +/restore { dup null eq { pop } { _bdrestore } ifelse } def
 22.1685 +/fontsave null def
 22.1686 +end
 22.1687 +/MacVec 256 array def 
 22.1688 +MacVec 0 /Helvetica findfont
 22.1689 +/Encoding get 0 128 getinterval putinterval
 22.1690 +MacVec 127 /DEL put MacVec 16#27 /quotesingle put MacVec 16#60 /grave put
 22.1691 +/NUL/SOH/STX/ETX/EOT/ENQ/ACK/BEL/BS/HT/LF/VT/FF/CR/SO/SI
 22.1692 +/DLE/DC1/DC2/DC3/DC4/NAK/SYN/ETB/CAN/EM/SUB/ESC/FS/GS/RS/US
 22.1693 +MacVec 0 32 getinterval astore pop
 22.1694 +/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis/Udieresis/aacute
 22.1695 +/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute/egrave
 22.1696 +/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde/oacute
 22.1697 +/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex/udieresis
 22.1698 +/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
 22.1699 +/registered/copyright/trademark/acute/dieresis/notequal/AE/Oslash
 22.1700 +/infinity/plusminus/lessequal/greaterequal/yen/mu/partialdiff/summation
 22.1701 +/product/pi/integral/ordfeminine/ordmasculine/Omega/ae/oslash 
 22.1702 +/questiondown/exclamdown/logicalnot/radical/florin/approxequal/Delta/guillemotleft
 22.1703 +/guillemotright/ellipsis/nbspace/Agrave/Atilde/Otilde/OE/oe
 22.1704 +/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide/lozenge
 22.1705 +/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright/fi/fl
 22.1706 +/daggerdbl/periodcentered/quotesinglbase/quotedblbase
 22.1707 +/perthousand/Acircumflex/Ecircumflex/Aacute
 22.1708 +/Edieresis/Egrave/Iacute/Icircumflex/Idieresis/Igrave/Oacute/Ocircumflex
 22.1709 +/apple/Ograve/Uacute/Ucircumflex/Ugrave/dotlessi/circumflex/tilde
 22.1710 +/macron/breve/dotaccent/ring/cedilla/hungarumlaut/ogonek/caron
 22.1711 +MacVec 128 128 getinterval astore pop
 22.1712 +end %. AltsysDict
 22.1713 +%%EndResource
 22.1714 +%%EndProlog
 22.1715 +%%BeginSetup
 22.1716 +AltsysDict begin
 22.1717 +_bfh
 22.1718 +%%IncludeResource: font Symbol
 22.1719 +_efh
 22.1720 +0 dict dup begin
 22.1721 +end 
 22.1722 +/f0 /Symbol FF def
 22.1723 +_bfh
 22.1724 +%%IncludeResource: font ZapfHumanist601BT-Bold
 22.1725 +_efh
 22.1726 +0 dict dup begin
 22.1727 +end 
 22.1728 +/f1 /ZapfHumanist601BT-Bold FF def
 22.1729 +end %. AltsysDict
 22.1730 +%%EndSetup
 22.1731 +AltsysDict begin 
 22.1732 +/onlyk4{false}ndf
 22.1733 +/ccmyk{dup 5 -1 roll sub 0 max exch}ndf
 22.1734 +/cmyk2gray{
 22.1735 + 4 -1 roll 0.3 mul 4 -1 roll 0.59 mul 4 -1 roll 0.11 mul
 22.1736 + add add add 1 min neg 1 add
 22.1737 +}bdf
 22.1738 +/setcmykcolor{1 exch sub ccmyk ccmyk ccmyk pop setrgbcolor}ndf
 22.1739 +/maxcolor { 
 22.1740 + max max max  
 22.1741 +} ndf
 22.1742 +/maxspot {
 22.1743 + pop
 22.1744 +} ndf
 22.1745 +/setcmykcoloroverprint{4{dup -1 eq{pop 0}if 4 1 roll}repeat setcmykcolor}ndf
 22.1746 +/findcmykcustomcolor{5 packedarray}ndf
 22.1747 +/setcustomcolor{exch aload pop pop 4{4 index mul 4 1 roll}repeat setcmykcolor pop}ndf
 22.1748 +/setseparationgray{setgray}ndf
 22.1749 +/setoverprint{pop}ndf 
 22.1750 +/currentoverprint false ndf
 22.1751 +/cmykbufs2gray{
 22.1752 + 0 1 2 index length 1 sub
 22.1753 + { 
 22.1754 +4 index 1 index get 0.3 mul 
 22.1755 +4 index 2 index get 0.59 mul 
 22.1756 +4 index 3 index get 0.11 mul 
 22.1757 +4 index 4 index get 
 22.1758 +add add add cvi 255 min
 22.1759 +255 exch sub
 22.1760 +2 index 3 1 roll put
 22.1761 + }for
 22.1762 + 4 1 roll pop pop pop
 22.1763 +}bdf
 22.1764 +/colorimage{
 22.1765 + pop pop
 22.1766 + [
 22.1767 +5 -1 roll/exec cvx 
 22.1768 +6 -1 roll/exec cvx 
 22.1769 +7 -1 roll/exec cvx 
 22.1770 +8 -1 roll/exec cvx
 22.1771 +/cmykbufs2gray cvx
 22.1772 + ]cvx 
 22.1773 + image
 22.1774 +}
 22.1775 +%. version 47.1 on Linotronic of Postscript defines colorimage incorrectly (rgb model only)
 22.1776 +version cvr 47.1 le 
 22.1777 +statusdict /product get (Lino) anchorsearch{pop pop true}{pop false}ifelse
 22.1778 +and{userdict begin bdf end}{ndf}ifelse
 22.1779 +fhnumcolors 1 ne {/yt save def} if
 22.1780 +/customcolorimage{
 22.1781 + aload pop
 22.1782 + (_vc_Registration) eq 
 22.1783 + {
 22.1784 +pop pop pop pop separationimage
 22.1785 + }
 22.1786 + {
 22.1787 +/ik xdf /iy xdf /im xdf /ic xdf
 22.1788 +ic im iy ik cmyk2gray /xt xdf
 22.1789 +currenttransfer
 22.1790 +{dup 1.0 exch sub xt mul add}concatprocs
 22.1791 +st 
 22.1792 +image
 22.1793 + }
 22.1794 + ifelse
 22.1795 +}ndf
 22.1796 +fhnumcolors 1 ne {yt restore} if
 22.1797 +fhnumcolors 3 ne {/yt save def} if
 22.1798 +/customcolorimage{
 22.1799 + aload pop 
 22.1800 + (_vc_Registration) eq 
 22.1801 + {
 22.1802 +pop pop pop pop separationimage
 22.1803 + }
 22.1804 + {
 22.1805 +/ik xdf /iy xdf /im xdf /ic xdf
 22.1806 +1.0 dup ic ik add min sub 
 22.1807 +1.0 dup im ik add min sub 
 22.1808 +1.0 dup iy ik add min sub 
 22.1809 +/ic xdf /iy xdf /im xdf
 22.1810 +currentcolortransfer
 22.1811 +4 1 roll 
 22.1812 +{dup 1.0 exch sub ic mul add}concatprocs 4 1 roll 
 22.1813 +{dup 1.0 exch sub iy mul add}concatprocs 4 1 roll 
 22.1814 +{dup 1.0 exch sub im mul add}concatprocs 4 1 roll 
 22.1815 +setcolortransfer
 22.1816 +{/dummy xdf dummy}concatprocs{dummy}{dummy}true 3 colorimage
 22.1817 + }
 22.1818 + ifelse
 22.1819 +}ndf
 22.1820 +fhnumcolors 3 ne {yt restore} if
 22.1821 +fhnumcolors 4 ne {/yt save def} if
 22.1822 +/customcolorimage{
 22.1823 + aload pop
 22.1824 + (_vc_Registration) eq 
 22.1825 + {
 22.1826 +pop pop pop pop separationimage
 22.1827 + }
 22.1828 + {
 22.1829 +/ik xdf /iy xdf /im xdf /ic xdf
 22.1830 +currentcolortransfer
 22.1831 +{1.0 exch sub ik mul ik sub 1 add}concatprocs 4 1 roll
 22.1832 +{1.0 exch sub iy mul iy sub 1 add}concatprocs 4 1 roll
 22.1833 +{1.0 exch sub im mul im sub 1 add}concatprocs 4 1 roll
 22.1834 +{1.0 exch sub ic mul ic sub 1 add}concatprocs 4 1 roll
 22.1835 +setcolortransfer
 22.1836 +{/dummy xdf dummy}concatprocs{dummy}{dummy}{dummy}
 22.1837 +true 4 colorimage
 22.1838 + }
 22.1839 + ifelse
 22.1840 +}ndf
 22.1841 +fhnumcolors 4 ne {yt restore} if
 22.1842 +/separationimage{image}ndf
 22.1843 +/newcmykcustomcolor{6 packedarray}ndf
 22.1844 +/inkoverprint false ndf
 22.1845 +/setinkoverprint{pop}ndf 
 22.1846 +/setspotcolor { 
 22.1847 + spots exch get
 22.1848 + dup 4 get (_vc_Registration) eq
 22.1849 + {pop 1 exch sub setseparationgray}
 22.1850 + {0 5 getinterval exch setcustomcolor}
 22.1851 + ifelse
 22.1852 +}ndf
 22.1853 +/currentcolortransfer{currenttransfer dup dup dup}ndf
 22.1854 +/setcolortransfer{st pop pop pop}ndf
 22.1855 +/fas{}ndf
 22.1856 +/sas{}ndf
 22.1857 +/fhsetspreadsize{pop}ndf
 22.1858 +/filler{fill}bdf 
 22.1859 +/F{gsave {filler}fp grestore}bdf
 22.1860 +/f{closepath F}bdf
 22.1861 +/S{gsave {stroke}fp grestore}bdf
 22.1862 +/s{closepath S}bdf
 22.1863 +/bc4 [0 0 0 0] def 
 22.1864 +/_lfp4 {
 22.1865 + /iosv inkoverprint def
 22.1866 + /cosv currentoverprint def
 22.1867 + /yt xdf       
 22.1868 + /xt xdf       
 22.1869 + /ang xdf      
 22.1870 + storerect
 22.1871 + /taperfcn xdf
 22.1872 + /k2 xdf /y2 xdf /m2 xdf /c2 xdf
 22.1873 + /k1 xdf /y1 xdf /m1 xdf /c1 xdf
 22.1874 + c1 c2 sub abs
 22.1875 + m1 m2 sub abs
 22.1876 + y1 y2 sub abs
 22.1877 + k1 k2 sub abs
 22.1878 + maxcolor      
 22.1879 + calcgraysteps mul abs round  
 22.1880 + height abs adjnumsteps   
 22.1881 + dup 2 lt {pop 1} if    
 22.1882 + 1 sub /numsteps1 xdf
 22.1883 + currentflat mark    
 22.1884 + currentflat clipflatness  
 22.1885 + /delta top bottom sub numsteps1 1 add div def 
 22.1886 + /right right left sub def  
 22.1887 + /botsv top delta sub def  
 22.1888 + {
 22.1889 +{
 22.1890 +W
 22.1891 +xt yt translate 
 22.1892 +ang rotate
 22.1893 +xt neg yt neg translate 
 22.1894 +dup setflat 
 22.1895 +/bottom botsv def
 22.1896 +0 1 numsteps1 
 22.1897 +{
 22.1898 +numsteps1 dup 0 eq {pop 0.5 } { div } ifelse 
 22.1899 +taperfcn /frac xdf
 22.1900 +bc4 0 c2 c1 sub frac mul c1 add put
 22.1901 +bc4 1 m2 m1 sub frac mul m1 add put
 22.1902 +bc4 2 y2 y1 sub frac mul y1 add put
 22.1903 +bc4 3 k2 k1 sub frac mul k1 add put
 22.1904 +bc4 vc
 22.1905 +1 index setflat 
 22.1906 +{ 
 22.1907 +mark {newpath left bottom right delta rectfill}stopped
 22.1908 +{cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if}
 22.1909 +{cleartomark exit}ifelse
 22.1910 +}loop
 22.1911 +/bottom bottom delta sub def
 22.1912 +}for
 22.1913 +}
 22.1914 +gsave stopped grestore
 22.1915 +{exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if}
 22.1916 +{exit}ifelse
 22.1917 + }loop
 22.1918 + cleartomark setflat
 22.1919 + iosv setinkoverprint
 22.1920 + cosv setoverprint
 22.1921 +}bdf
 22.1922 +/bcs [0 0] def 
 22.1923 +/_lfs4 {
 22.1924 + /iosv inkoverprint def
 22.1925 + /cosv currentoverprint def
 22.1926 + /yt xdf       
 22.1927 + /xt xdf       
 22.1928 + /ang xdf      
 22.1929 + storerect
 22.1930 + /taperfcn xdf
 22.1931 + /tint2 xdf      
 22.1932 + /tint1 xdf      
 22.1933 + bcs exch 1 exch put    
 22.1934 + tint1 tint2 sub abs    
 22.1935 + bcs 1 get maxspot    
 22.1936 + calcgraysteps mul abs round  
 22.1937 + height abs adjnumsteps   
 22.1938 + dup 2 lt {pop 2} if    
 22.1939 + 1 sub /numsteps1 xdf
 22.1940 + currentflat mark    
 22.1941 + currentflat clipflatness  
 22.1942 + /delta top bottom sub numsteps1 1 add div def 
 22.1943 + /right right left sub def  
 22.1944 + /botsv top delta sub def  
 22.1945 + {
 22.1946 +{
 22.1947 +W
 22.1948 +xt yt translate 
 22.1949 +ang rotate
 22.1950 +xt neg yt neg translate 
 22.1951 +dup setflat 
 22.1952 +/bottom botsv def
 22.1953 +0 1 numsteps1 
 22.1954 +{
 22.1955 +numsteps1 div taperfcn /frac xdf
 22.1956 +bcs 0
 22.1957 +1.0 tint2 tint1 sub frac mul tint1 add sub
 22.1958 +put bcs vc
 22.1959 +1 index setflat 
 22.1960 +{ 
 22.1961 +mark {newpath left bottom right delta rectfill}stopped
 22.1962 +{cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if}
 22.1963 +{cleartomark exit}ifelse
 22.1964 +}loop
 22.1965 +/bottom bottom delta sub def
 22.1966 +}for
 22.1967 +}
 22.1968 +gsave stopped grestore
 22.1969 +{exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if}
 22.1970 +{exit}ifelse
 22.1971 + }loop
 22.1972 + cleartomark setflat
 22.1973 + iosv setinkoverprint
 22.1974 + cosv setoverprint
 22.1975 +}bdf
 22.1976 +/_rfs4 {
 22.1977 + /iosv inkoverprint def
 22.1978 + /cosv currentoverprint def
 22.1979 + /tint2 xdf      
 22.1980 + /tint1 xdf      
 22.1981 + bcs exch 1 exch put    
 22.1982 + /radius xdf      
 22.1983 + /yt xdf       
 22.1984 + /xt xdf       
 22.1985 + tint1 tint2 sub abs    
 22.1986 + bcs 1 get maxspot    
 22.1987 + calcgraysteps mul abs round  
 22.1988 + radius abs adjnumsteps   
 22.1989 + dup 2 lt {pop 2} if    
 22.1990 + 1 sub /numsteps1 xdf
 22.1991 + radius numsteps1 div 2 div /halfstep xdf 
 22.1992 + currentflat mark    
 22.1993 + currentflat clipflatness  
 22.1994 + {
 22.1995 +{
 22.1996 +dup setflat 
 22.1997 +W 
 22.1998 +0 1 numsteps1 
 22.1999 +{
 22.2000 +dup /radindex xdf
 22.2001 +numsteps1 div /frac xdf
 22.2002 +bcs 0
 22.2003 +tint2 tint1 sub frac mul tint1 add
 22.2004 +put bcs vc
 22.2005 +1 index setflat 
 22.2006 +{ 
 22.2007 +newpath mark xt yt radius 1 frac sub mul halfstep add 0 360
 22.2008 +{ arc
 22.2009 +radindex numsteps1 ne 
 22.2010 +{
 22.2011 +xt yt 
 22.2012 +radindex 1 add numsteps1 
 22.2013 +div 1 exch sub 
 22.2014 +radius mul halfstep add
 22.2015 +dup xt add yt moveto 
 22.2016 +360 0 arcn 
 22.2017 +} if
 22.2018 +fill
 22.2019 +}stopped
 22.2020 +{cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if}
 22.2021 +{cleartomark exit}ifelse
 22.2022 +}loop
 22.2023 +}for
 22.2024 +}
 22.2025 +gsave stopped grestore
 22.2026 +{exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if}
 22.2027 +{exit}ifelse
 22.2028 + }loop
 22.2029 + cleartomark setflat
 22.2030 + iosv setinkoverprint
 22.2031 + cosv setoverprint
 22.2032 +}bdf
 22.2033 +/_rfp4 {
 22.2034 + /iosv inkoverprint def
 22.2035 + /cosv currentoverprint def
 22.2036 + /k2 xdf /y2 xdf /m2 xdf /c2 xdf
 22.2037 + /k1 xdf /y1 xdf /m1 xdf /c1 xdf
 22.2038 + /radius xdf      
 22.2039 + /yt xdf       
 22.2040 + /xt xdf       
 22.2041 + c1 c2 sub abs
 22.2042 + m1 m2 sub abs
 22.2043 + y1 y2 sub abs
 22.2044 + k1 k2 sub abs
 22.2045 + maxcolor      
 22.2046 + calcgraysteps mul abs round  
 22.2047 + radius abs adjnumsteps   
 22.2048 + dup 2 lt {pop 1} if    
 22.2049 + 1 sub /numsteps1 xdf
 22.2050 + radius numsteps1 dup 0 eq {pop} {div} ifelse 
 22.2051 + 2 div /halfstep xdf 
 22.2052 + currentflat mark    
 22.2053 + currentflat clipflatness  
 22.2054 + {
 22.2055 +{
 22.2056 +dup setflat 
 22.2057 +W 
 22.2058 +0 1 numsteps1 
 22.2059 +{
 22.2060 +dup /radindex xdf
 22.2061 +numsteps1 dup 0 eq {pop 0.5 } { div } ifelse 
 22.2062 +/frac xdf
 22.2063 +bc4 0 c2 c1 sub frac mul c1 add put
 22.2064 +bc4 1 m2 m1 sub frac mul m1 add put
 22.2065 +bc4 2 y2 y1 sub frac mul y1 add put
 22.2066 +bc4 3 k2 k1 sub frac mul k1 add put
 22.2067 +bc4 vc
 22.2068 +1 index setflat 
 22.2069 +{ 
 22.2070 +newpath mark xt yt radius 1 frac sub mul halfstep add 0 360
 22.2071 +{ arc
 22.2072 +radindex numsteps1 ne 
 22.2073 +{
 22.2074 +xt yt 
 22.2075 +radindex 1 add 
 22.2076 +numsteps1 dup 0 eq {pop} {div} ifelse 
 22.2077 +1 exch sub 
 22.2078 +radius mul halfstep add
 22.2079 +dup xt add yt moveto 
 22.2080 +360 0 arcn 
 22.2081 +} if
 22.2082 +fill
 22.2083 +}stopped
 22.2084 +{cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if}
 22.2085 +{cleartomark exit}ifelse
 22.2086 +}loop
 22.2087 +}for
 22.2088 +}
 22.2089 +gsave stopped grestore
 22.2090 +{exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if}
 22.2091 +{exit}ifelse
 22.2092 + }loop
 22.2093 + cleartomark setflat
 22.2094 + iosv setinkoverprint
 22.2095 + cosv setoverprint
 22.2096 +}bdf
 22.2097 +/lfp4{_lfp4}ndf
 22.2098 +/lfs4{_lfs4}ndf
 22.2099 +/rfs4{_rfs4}ndf
 22.2100 +/rfp4{_rfp4}ndf
 22.2101 +/cvc [0 0 0 1] def 
 22.2102 +/vc{
 22.2103 + AltsysDict /cvc 2 index put 
 22.2104 + aload length 4 eq
 22.2105 + {setcmykcolor}
 22.2106 + {setspotcolor}
 22.2107 + ifelse
 22.2108 +}bdf 
 22.2109 +/origmtx matrix currentmatrix def
 22.2110 +/ImMatrix matrix currentmatrix def
 22.2111 +0 setseparationgray
 22.2112 +/imgr {1692 1570.1102 2287.2756 2412 } def 
 22.2113 +/bleed 0 def 
 22.2114 +/clpr {1692 1570.1102 2287.2756 2412 } def 
 22.2115 +/xs 1 def 
 22.2116 +/ys 1 def 
 22.2117 +/botx 0 def 
 22.2118 +/overlap 0 def 
 22.2119 +/wdist 18 def 
 22.2120 +0 2 mul fhsetspreadsize 
 22.2121 +0 0 ne {/df 0 def /clipflatness 0 def} if 
 22.2122 +/maxsteps 256 def 
 22.2123 +/forcemaxsteps false def 
 22.2124 +vms
 22.2125 +-1845 -1956 translate
 22.2126 +/currentpacking defed{false setpacking}if 
 22.2127 +/spots[
 22.2128 +1 0 0 0 (Process Cyan) false newcmykcustomcolor
 22.2129 +0 1 0 0 (Process Magenta) false newcmykcustomcolor
 22.2130 +0 0 1 0 (Process Yellow) false newcmykcustomcolor
 22.2131 +0 0 0 1 (Process Black) false newcmykcustomcolor
 22.2132 +]def
 22.2133 +/textopf false def
 22.2134 +/curtextmtx{}def
 22.2135 +/otw .25 def
 22.2136 +/msf{dup/curtextmtx xdf makefont setfont}bdf
 22.2137 +/makesetfont/msf load def
 22.2138 +/curtextheight{.707104 .707104 curtextmtx dtransform
 22.2139 + dup mul exch dup mul add sqrt}bdf
 22.2140 +/ta2{ 
 22.2141 +tempstr 2 index gsave exec grestore 
 22.2142 +cwidth cheight rmoveto 
 22.2143 +4 index eq{5 index 5 index rmoveto}if 
 22.2144 +2 index 2 index rmoveto 
 22.2145 +}bdf
 22.2146 +/ta{exch systemdict/cshow known
 22.2147 +{{/cheight xdf/cwidth xdf tempstr 0 2 index put ta2}exch cshow} 
 22.2148 +{{tempstr 0 2 index put tempstr stringwidth/cheight xdf/cwidth xdf ta2}forall} 
 22.2149 +ifelse 6{pop}repeat}bdf
 22.2150 +/sts{/textopf currentoverprint def vc setoverprint
 22.2151 +/ts{awidthshow}def exec textopf setoverprint}bdf
 22.2152 +/stol{/xt currentlinewidth def 
 22.2153 + setlinewidth vc newpath 
 22.2154 + /ts{{false charpath stroke}ta}def exec 
 22.2155 + xt setlinewidth}bdf 
 22.2156 + 
 22.2157 +/strk{/textopf currentoverprint def vc setoverprint
 22.2158 + /ts{{false charpath stroke}ta}def exec 
 22.2159 + textopf setoverprint
 22.2160 + }bdf 
 22.2161 +n
 22.2162 +[] 0 d
 22.2163 +3.863708 M
 22.2164 +1 w
 22.2165 +0 j
 22.2166 +0 J
 22.2167 +false setoverprint
 22.2168 +0 i
 22.2169 +false eomode
 22.2170 +[0 0 0 1] vc
 22.2171 +vms
 22.2172 +%white border -- disabled
 22.2173 +%1845.2293 2127.8588 m
 22.2174 +%2045.9437 2127.8588 L
 22.2175 +%2045.9437 1956.1412 L
 22.2176 +%1845.2293 1956.1412 L
 22.2177 +%1845.2293 2127.8588 L
 22.2178 +%0.1417 w
 22.2179 +%2 J
 22.2180 +%2 M
 22.2181 +%[0 0 0 0]  vc
 22.2182 +%s 
 22.2183 +n
 22.2184 +1950.8 2097.2 m
 22.2185 +1958.8 2092.5 1967.3 2089 1975.5 2084.9 C
 22.2186 +1976.7 2083.5 1976.1 2081.5 1976.7 2079.9 C
 22.2187 +1979.6 2081.1 1981.6 2086.8 1985.3 2084 C
 22.2188 +1993.4 2079.3 2001.8 2075.8 2010 2071.7 C
 22.2189 +2010.5 2071.5 2010.5 2071.1 2010.8 2070.8 C
 22.2190 +2011.2 2064.3 2010.9 2057.5 2011 2050.8 C
 22.2191 +2015.8 2046.9 2022.2 2046.2 2026.6 2041.7 C
 22.2192 +2026.5 2032.5 2026.8 2022.9 2026.4 2014.1 C
 22.2193 +2020.4 2008.3 2015 2002.4 2008.8 1997.1 C
 22.2194 +2003.8 1996.8 2000.7 2001.2 1996.1 2002.1 C
 22.2195 +1995.2 1996.4 1996.9 1990.5 1995.6 1984.8 C
 22.2196 +1989.9 1979 1984.5 1973.9 1978.8 1967.8 C
 22.2197 +1977.7 1968.6 1976 1967.6 1974.5 1968.3 C
 22.2198 +1967.4 1972.5 1960.1 1976.1 1952.7 1979.3 C
 22.2199 +1946.8 1976.3 1943.4 1970.7 1938.5 1966.1 C
 22.2200 +1933.9 1966.5 1929.4 1968.8 1925.1 1970.7 C
 22.2201 +1917.2 1978.2 1906 1977.9 1897.2 1983.4 C
 22.2202 +1893.2 1985.6 1889.4 1988.6 1885 1990.1 C
 22.2203 +1884.6 1990.6 1883.9 1991 1883.8 1991.6 C
 22.2204 +1883.7 2000.4 1884 2009.9 1883.6 2018.9 C
 22.2205 +1887.7 2024 1893.2 2028.8 1898 2033.8 C
 22.2206 +1899.1 2035.5 1900.9 2036.8 1902.5 2037.9 C
 22.2207 +1903.9 2037.3 1905.2 2036.6 1906.4 2035.5 C
 22.2208 +1906.3 2039.7 1906.5 2044.6 1906.1 2048.9 C
 22.2209 +1906.3 2049.6 1906.7 2050.2 1907.1 2050.8 C
 22.2210 +1913.4 2056 1918.5 2062.7 1924.8 2068.1 C
 22.2211 +1926.6 2067.9 1928 2066.9 1929.4 2066 C
 22.2212 +1930.2 2071 1927.7 2077.1 1930.6 2081.6 C
 22.2213 +1936.6 2086.9 1941.5 2092.9 1947.9 2097.9 C
 22.2214 +1949 2098.1 1949.9 2097.5 1950.8 2097.2 C
 22.2215 +[0 0 0 0.18]  vc
 22.2216 +f 
 22.2217 +0.4 w
 22.2218 +S 
 22.2219 +n
 22.2220 +1975.2 2084.7 m
 22.2221 +1976.6 2083.4 1975.7 2081.1 1976 2079.4 C
 22.2222 +1979.3 2079.5 1980.9 2086.2 1984.8 2084 C
 22.2223 +1992.9 2078.9 2001.7 2075.6 2010 2071.2 C
 22.2224 +2011 2064.6 2010.2 2057.3 2010.8 2050.6 C
 22.2225 +2015.4 2046.9 2021.1 2045.9 2025.9 2042.4 C
 22.2226 +2026.5 2033.2 2026.8 2022.9 2025.6 2013.9 C
 22.2227 +2020.5 2008.1 2014.5 2003.1 2009.3 1997.6 C
 22.2228 +2004.1 1996.7 2000.7 2001.6 1995.9 2002.6 C
 22.2229 +1995.2 1996.7 1996.3 1990.2 1994.9 1984.6 C
 22.2230 +1989.8 1978.7 1983.6 1973.7 1978.4 1968 C
 22.2231 +1977.3 1969.3 1976 1967.6 1974.8 1968.5 C
 22.2232 +1967.7 1972.7 1960.4 1976.3 1952.9 1979.6 C
 22.2233 +1946.5 1976.9 1943.1 1970.5 1937.8 1966.1 C
 22.2234 +1928.3 1968.2 1920.6 1974.8 1911.6 1978.4 C
 22.2235 +1901.9 1979.7 1893.9 1986.6 1885 1990.6 C
 22.2236 +1884.3 1991 1884.3 1991.7 1884 1992.3 C
 22.2237 +1884.5 2001 1884.2 2011 1884.3 2019.9 C
 22.2238 +1890.9 2025.3 1895.9 2031.9 1902.3 2037.4 C
 22.2239 +1904.2 2037.9 1905.6 2034.2 1906.8 2035.7 C
 22.2240 +1907.4 2040.9 1905.7 2046.1 1907.3 2050.8 C
 22.2241 +1913.6 2056.2 1919.2 2062.6 1925.1 2067.9 C
 22.2242 +1926.9 2067.8 1928 2066.3 1929.6 2065.7 C
 22.2243 +1929.9 2070.5 1929.2 2076 1930.1 2080.8 C
 22.2244 +1936.5 2086.1 1941.6 2092.8 1948.4 2097.6 C
 22.2245 +1957.3 2093.3 1966.2 2088.8 1975.2 2084.7 C
 22.2246 +[0 0 0 0]  vc
 22.2247 +f 
 22.2248 +S 
 22.2249 +n
 22.2250 +1954.8 2093.8 m
 22.2251 +1961.6 2090.5 1968.2 2087 1975 2084 C
 22.2252 +1975 2082.8 1975.6 2080.9 1974.8 2080.6 C
 22.2253 +1974.3 2075.2 1974.6 2069.6 1974.5 2064 C
 22.2254 +1977.5 2059.7 1984.5 2060 1988.9 2056.4 C
 22.2255 +1989.5 2055.5 1990.5 2055.3 1990.8 2054.4 C
 22.2256 +1991.1 2045.7 1991.4 2036.1 1990.6 2027.8 C
 22.2257 +1990.7 2026.6 1992 2027.3 1992.8 2027.1 C
 22.2258 +1997 2032.4 2002.6 2037.8 2007.6 2042.2 C
 22.2259 +2008.7 2042.3 2007.8 2040.6 2007.4 2040 C
 22.2260 +2002.3 2035.6 1997.5 2030 1992.8 2025.2 C
 22.2261 +1991.6 2024.7 1990.8 2024.9 1990.1 2025.4 C
 22.2262 +1989.4 2024.9 1988.1 2025.2 1987.2 2024.4 C
 22.2263 +1987.1 2025.8 1988.3 2026.5 1989.4 2026.8 C
 22.2264 +1989.4 2026.6 1989.3 2026.2 1989.6 2026.1 C
 22.2265 +1989.9 2026.2 1989.9 2026.6 1989.9 2026.8 C
 22.2266 +1989.8 2026.6 1990 2026.5 1990.1 2026.4 C
 22.2267 +1990.2 2027 1991.1 2028.3 1990.1 2028 C
 22.2268 +1989.9 2037.9 1990.5 2044.1 1989.6 2054.2 C
 22.2269 +1985.9 2058 1979.7 2057.4 1976 2061.2 C
 22.2270 +1974.5 2061.6 1975.2 2059.9 1974.5 2059.5 C
 22.2271 +1973.9 2058 1975.6 2057.8 1975 2056.6 C
 22.2272 +1974.5 2057.1 1974.6 2055.3 1973.6 2055.9 C
 22.2273 +1971.9 2059.3 1974.7 2062.1 1973.1 2065.5 C
 22.2274 +1973.1 2071.2 1972.9 2077 1973.3 2082.5 C
 22.2275 +1967.7 2085.6 1962 2088 1956.3 2090.7 C
 22.2276 +1953.9 2092.4 1951 2093 1948.6 2094.8 C
 22.2277 +1943.7 2089.9 1937.9 2084.3 1933 2079.6 C
 22.2278 +1931.3 2076.1 1933.2 2071.3 1932.3 2067.2 C
 22.2279 +1931.3 2062.9 1933.3 2060.6 1932 2057.6 C
 22.2280 +1932.7 2056.5 1930.9 2053.3 1933.2 2051.8 C
 22.2281 +1936.8 2050.1 1940.1 2046.9 1944 2046.8 C
 22.2282 +1946.3 2049.7 1949.3 2051.9 1952 2054.4 C
 22.2283 +1954.5 2054.2 1956.4 2052.3 1958.7 2051.3 C
 22.2284 +1960.8 2050 1963.2 2049 1965.6 2048.4 C
 22.2285 +1968.3 2050.8 1970.7 2054.3 1973.6 2055.4 C
 22.2286 +1973 2052.2 1969.7 2050.4 1967.6 2048.2 C
 22.2287 +1967.1 2046.7 1968.8 2046.6 1969.5 2045.8 C
 22.2288 +1972.8 2043.3 1980.6 2043.4 1979.3 2038.4 C
 22.2289 +1979.4 2038.6 1979.2 2038.7 1979.1 2038.8 C
 22.2290 +1978.7 2038.6 1978.9 2038.1 1978.8 2037.6 C
 22.2291 +1978.9 2037.9 1978.7 2038 1978.6 2038.1 C
 22.2292 +1978.2 2032.7 1978.4 2027.1 1978.4 2021.6 C
 22.2293 +1979.3 2021.1 1980 2020.2 1981.5 2020.1 C
 22.2294 +1983.5 2020.5 1984 2021.8 1985.1 2023.5 C
 22.2295 +1985.7 2024 1987.4 2023.7 1986 2022.8 C
 22.2296 +1984.7 2021.7 1983.3 2020.8 1983.9 2018.7 C
 22.2297 +1987.2 2015.9 1993 2015.4 1994.9 2011.5 C
 22.2298 +1992.2 2004.9 1999.3 2005.2 2002.1 2002.4 C
 22.2299 +2005.9 2002.7 2004.8 1997.4 2009.1 1999 C
 22.2300 +2011 1999.3 2010 2002.9 2012.7 2002.4 C
 22.2301 +2010.2 2000.7 2009.4 1996.1 2005.5 1998.5 C
 22.2302 +2002.1 2000.3 1999 2002.5 1995.4 2003.8 C
 22.2303 +1995.2 2003.6 1994.9 2003.3 1994.7 2003.1 C
 22.2304 +1994.3 1997 1995.6 1991.1 1994.4 1985.3 C
 22.2305 +1994.3 1986 1993.8 1985 1994 1985.6 C
 22.2306 +1993.8 1995.4 1994.4 2001.6 1993.5 2011.7 C
 22.2307 +1989.7 2015.5 1983.6 2014.9 1979.8 2018.7 C
 22.2308 +1978.3 2019.1 1979.1 2017.4 1978.4 2017 C
 22.2309 +1977.8 2015.5 1979.4 2015.3 1978.8 2014.1 C
 22.2310 +1978.4 2014.6 1978.5 2012.8 1977.4 2013.4 C
 22.2311 +1975.8 2016.8 1978.5 2019.6 1976.9 2023 C
 22.2312 +1977 2028.7 1976.7 2034.5 1977.2 2040 C
 22.2313 +1971.6 2043.1 1965.8 2045.6 1960.1 2048.2 C
 22.2314 +1957.7 2049.9 1954.8 2050.5 1952.4 2052.3 C
 22.2315 +1947.6 2047.4 1941.8 2041.8 1936.8 2037.2 C
 22.2316 +1935.2 2033.6 1937.1 2028.8 1936.1 2024.7 C
 22.2317 +1935.1 2020.4 1937.1 2018.1 1935.9 2015.1 C
 22.2318 +1936.5 2014.1 1934.7 2010.8 1937.1 2009.3 C
 22.2319 +1944.4 2004.8 1952 2000.9 1959.9 1997.8 C
 22.2320 +1963.9 1997 1963.9 2001.9 1966.8 2003.3 C
 22.2321 +1970.3 2006.9 1973.7 2009.9 1976.9 2012.9 C
 22.2322 +1977.9 2013 1977.1 2011.4 1976.7 2010.8 C
 22.2323 +1971.6 2006.3 1966.8 2000.7 1962 1995.9 C
 22.2324 +1960 1995.2 1960.1 1996.6 1958.2 1995.6 C
 22.2325 +1957 1997 1955.1 1998.8 1953.2 1998 C
 22.2326 +1951.7 1994.5 1954.1 1993.4 1952.9 1991.1 C
 22.2327 +1952.1 1990.5 1953.3 1990.2 1953.2 1989.6 C
 22.2328 +1954.2 1986.8 1950.9 1981.4 1954.4 1981.2 C
 22.2329 +1954.7 1981.6 1954.7 1981.7 1955.1 1982 C
 22.2330 +1961.9 1979.1 1967.6 1975 1974.3 1971.6 C
 22.2331 +1974.7 1969.8 1976.7 1969.5 1978.4 1969.7 C
 22.2332 +1980.3 1970 1979.3 1973.6 1982 1973.1 C
 22.2333 +1975.8 1962.2 1968 1975.8 1960.8 1976.7 C
 22.2334 +1956.9 1977.4 1953.3 1982.4 1949.1 1978.8 C
 22.2335 +1946 1975.8 1941.2 1971 1939.5 1969.2 C
 22.2336 +1938.5 1968.6 1938.9 1967.4 1937.8 1966.8 C
 22.2337 +1928.7 1969.4 1920.6 1974.5 1912.4 1979.1 C
 22.2338 +1904 1980 1896.6 1985 1889.3 1989.4 C
 22.2339 +1887.9 1990.4 1885.1 1990.3 1885 1992.5 C
 22.2340 +1885.4 2000.6 1885.2 2012.9 1885.2 2019.9 C
 22.2341 +1886.1 2022 1889.7 2019.5 1888.4 2022.8 C
 22.2342 +1889 2023.3 1889.8 2024.4 1890.3 2024 C
 22.2343 +1891.2 2023.5 1891.8 2028.2 1893.4 2026.6 C
 22.2344 +1894.2 2026.3 1893.9 2027.3 1894.4 2027.6 C
 22.2345 +1893.4 2027.6 1894.7 2028.3 1894.1 2028.5 C
 22.2346 +1894.4 2029.6 1896 2030 1896 2029.2 C
 22.2347 +1896.2 2029 1896.3 2029 1896.5 2029.2 C
 22.2348 +1896.8 2029.8 1897.3 2030 1897 2030.7 C
 22.2349 +1896.5 2030.7 1896.9 2031.5 1897.2 2031.6 C
 22.2350 +1898.3 2034 1899.5 2030.6 1899.6 2033.3 C
 22.2351 +1898.5 2033 1899.6 2034.4 1900.1 2034.8 C
 22.2352 +1901.3 2035.8 1903.2 2034.6 1902.5 2036.7 C
 22.2353 +1904.4 2036.9 1906.1 2032.2 1907.6 2035.5 C
 22.2354 +1907.5 2040.1 1907.7 2044.9 1907.3 2049.4 C
 22.2355 +1908 2050.2 1908.3 2051.4 1909.5 2051.6 C
 22.2356 +1910.1 2051.1 1911.6 2051.1 1911.4 2052.3 C
 22.2357 +1909.7 2052.8 1912.4 2054 1912.6 2054.7 C
 22.2358 +1913.4 2055.2 1913 2053.7 1913.6 2054.4 C
 22.2359 +1913.6 2054.5 1913.6 2055.3 1913.6 2054.7 C
 22.2360 +1913.7 2054.4 1913.9 2054.4 1914 2054.7 C
 22.2361 +1914 2054.9 1914.1 2055.3 1913.8 2055.4 C
 22.2362 +1913.7 2056 1915.2 2057.6 1916 2057.6 C
 22.2363 +1915.9 2057.3 1916.1 2057.2 1916.2 2057.1 C
 22.2364 +1917 2056.8 1916.7 2057.7 1917.2 2058 C
 22.2365 +1917 2058.3 1916.7 2058.3 1916.4 2058.3 C
 22.2366 +1917.1 2059 1917.3 2060.1 1918.4 2060.4 C
 22.2367 +1918.1 2059.2 1919.1 2060.6 1919.1 2059.5 C
 22.2368 +1919 2060.6 1920.6 2060.1 1919.8 2061.2 C
 22.2369 +1919.6 2061.2 1919.3 2061.2 1919.1 2061.2 C
 22.2370 +1919.6 2061.9 1921.4 2064.2 1921.5 2062.6 C
 22.2371 +1922.4 2062.1 1921.6 2063.9 1922.2 2064.3 C
 22.2372 +1922.9 2067.3 1926.1 2064.3 1925.6 2067.2 C
 22.2373 +1927.2 2066.8 1928.4 2064.6 1930.1 2065.2 C
 22.2374 +1931.8 2067.8 1931 2071.8 1930.8 2074.8 C
 22.2375 +1930.6 2076.4 1930.1 2078.6 1930.6 2080.4 C
 22.2376 +1936.6 2085.4 1941.8 2091.6 1948.1 2096.9 C
 22.2377 +1950.7 2096.7 1952.6 2094.8 1954.8 2093.8 C
 22.2378 +[0 0.33 0.33 0.99]  vc
 22.2379 +f 
 22.2380 +S 
 22.2381 +n
 22.2382 +1989.4 2080.6 m
 22.2383 +1996.1 2077.3 2002.7 2073.8 2009.6 2070.8 C
 22.2384 +2009.6 2069.6 2010.2 2067.7 2009.3 2067.4 C
 22.2385 +2008.9 2062 2009.1 2056.4 2009.1 2050.8 C
 22.2386 +2012.3 2046.6 2019 2046.6 2023.5 2043.2 C
 22.2387 +2024 2042.3 2025.1 2042.1 2025.4 2041.2 C
 22.2388 +2025.3 2032.7 2025.6 2023.1 2025.2 2014.6 C
 22.2389 +2025 2015.3 2024.6 2014.2 2024.7 2014.8 C
 22.2390 +2024.5 2024.7 2025.1 2030.9 2024.2 2041 C
 22.2391 +2020.4 2044.8 2014.3 2044.2 2010.5 2048 C
 22.2392 +2009 2048.4 2009.8 2046.7 2009.1 2046.3 C
 22.2393 +2008.5 2044.8 2010.2 2044.6 2009.6 2043.4 C
 22.2394 +2009.1 2043.9 2009.2 2042.1 2008.1 2042.7 C
 22.2395 +2006.5 2046.1 2009.3 2048.9 2007.6 2052.3 C
 22.2396 +2007.7 2058 2007.5 2063.8 2007.9 2069.3 C
 22.2397 +2002.3 2072.4 1996.5 2074.8 1990.8 2077.5 C
 22.2398 +1988.4 2079.2 1985.6 2079.8 1983.2 2081.6 C
 22.2399 +1980.5 2079 1977.9 2076.5 1975.5 2074.1 C
 22.2400 +1975.5 2075.1 1975.5 2076.2 1975.5 2077.2 C
 22.2401 +1977.8 2079.3 1980.3 2081.6 1982.7 2083.7 C
 22.2402 +1985.3 2083.5 1987.1 2081.6 1989.4 2080.6 C
 22.2403 +f 
 22.2404 +S 
 22.2405 +n
 22.2406 +1930.1 2079.9 m
 22.2407 +1931.1 2075.6 1929.2 2071.1 1930.8 2067.2 C
 22.2408 +1930.3 2066.3 1930.1 2064.6 1928.7 2065.5 C
 22.2409 +1927.7 2066.4 1926.5 2067 1925.3 2067.4 C
 22.2410 +1924.5 2066.9 1925.6 2065.7 1924.4 2066 C
 22.2411 +1924.2 2067.2 1923.6 2065.5 1923.2 2065.7 C
 22.2412 +1922.3 2063.6 1917.8 2062.1 1919.6 2060.4 C
 22.2413 +1919.3 2060.5 1919.2 2060.3 1919.1 2060.2 C
 22.2414 +1919.7 2060.9 1918.2 2061 1917.6 2060.2 C
 22.2415 +1917 2059.6 1916.1 2058.8 1916.4 2058 C
 22.2416 +1915.5 2058 1917.4 2057.1 1915.7 2057.8 C
 22.2417 +1914.8 2057.1 1913.4 2056.2 1913.3 2054.9 C
 22.2418 +1913.1 2055.4 1911.3 2054.3 1910.9 2053.2 C
 22.2419 +1910.7 2052.9 1910.2 2052.5 1910.7 2052.3 C
 22.2420 +1911.1 2052.5 1910.9 2052 1910.9 2051.8 C
 22.2421 +1910.5 2051.2 1909.9 2052.6 1909.2 2051.8 C
 22.2422 +1908.2 2051.4 1907.8 2050.2 1907.1 2049.4 C
 22.2423 +1907.5 2044.8 1907.3 2040 1907.3 2035.2 C
 22.2424 +1905.3 2033 1902.8 2039.3 1902.3 2035.7 C
 22.2425 +1899.6 2036 1898.4 2032.5 1896.3 2030.7 C
 22.2426 +1895.7 2030.1 1897.5 2030 1896.3 2029.7 C
 22.2427 +1896.3 2030.6 1895 2029.7 1894.4 2029.2 C
 22.2428 +1892.9 2028.1 1894.2 2027.4 1893.6 2027.1 C
 22.2429 +1892.1 2027.9 1891.7 2025.6 1890.8 2024.9 C
 22.2430 +1891.1 2024.6 1889.1 2024.3 1888.4 2023 C
 22.2431 +1887.5 2022.6 1888.2 2021.9 1888.1 2021.3 C
 22.2432 +1886.7 2022 1885.2 2020.4 1884.8 2019.2 C
 22.2433 +1884.8 2010 1884.6 2000.2 1885 1991.8 C
 22.2434 +1886.9 1989.6 1889.9 1989.3 1892.2 1987.5 C
 22.2435 +1898.3 1982.7 1905.6 1980.1 1912.8 1978.6 C
 22.2436 +1921 1974.2 1928.8 1968.9 1937.8 1966.6 C
 22.2437 +1939.8 1968.3 1938.8 1968.3 1940.4 1970 C
 22.2438 +1945.4 1972.5 1947.6 1981.5 1954.6 1979.3 C
 22.2439 +1952.3 1981 1950.4 1978.4 1948.6 1977.9 C
 22.2440 +1945.1 1973.9 1941.1 1970.6 1938 1966.6 C
 22.2441 +1928.4 1968.5 1920.6 1974.8 1911.9 1978.8 C
 22.2442 +1907.1 1979.2 1902.6 1981.7 1898.2 1983.6 C
 22.2443 +1893.9 1986 1889.9 1989 1885.5 1990.8 C
 22.2444 +1884.9 1991.2 1884.8 1991.8 1884.5 1992.3 C
 22.2445 +1884.9 2001.3 1884.7 2011.1 1884.8 2019.6 C
 22.2446 +1890.6 2025 1896.5 2031.2 1902.3 2036.9 C
 22.2447 +1904.6 2037.6 1905 2033 1907.3 2035.5 C
 22.2448 +1907.2 2040.2 1907 2044.8 1907.1 2049.6 C
 22.2449 +1913.6 2055.3 1918.4 2061.5 1925.1 2067.4 C
 22.2450 +1927.3 2068.2 1929.6 2062.5 1930.6 2066.9 C
 22.2451 +1929.7 2070.7 1930.3 2076 1930.1 2080.1 C
 22.2452 +1935.6 2085.7 1941.9 2090.7 1947.2 2096.7 C
 22.2453 +1942.2 2091.1 1935.5 2085.2 1930.1 2079.9 C
 22.2454 +[0.18 0.18 0 0.78]  vc
 22.2455 +f 
 22.2456 +S 
 22.2457 +n
 22.2458 +1930.8 2061.9 m
 22.2459 +1930.3 2057.8 1931.8 2053.4 1931.1 2050.4 C
 22.2460 +1931.3 2050.3 1931.7 2050.5 1931.6 2050.1 C
 22.2461 +1933 2051.1 1934.4 2049.5 1935.9 2048.7 C
 22.2462 +1937 2046.5 1939.5 2047.1 1941.2 2045.1 C
 22.2463 +1939.7 2042.6 1937.3 2041.2 1935.4 2039.3 C
 22.2464 +1934 2039.7 1934.5 2038.1 1933.7 2037.6 C
 22.2465 +1934 2033.3 1933.1 2027.9 1934.4 2024.4 C
 22.2466 +1934.3 2023.8 1933.9 2022.8 1933 2022.8 C
 22.2467 +1931.6 2023.1 1930.5 2024.4 1929.2 2024.9 C
 22.2468 +1928.4 2024.5 1929.8 2023.5 1928.7 2023.5 C
 22.2469 +1927.7 2024.1 1926.2 2022.6 1925.6 2021.6 C
 22.2470 +1926.9 2021.6 1924.8 2020.6 1925.6 2020.4 C
 22.2471 +1924.7 2021.7 1923.9 2019.6 1923.2 2019.2 C
 22.2472 +1923.3 2018.3 1923.8 2018.1 1923.2 2018 C
 22.2473 +1922.9 2017.8 1922.9 2017.5 1922.9 2017.2 C
 22.2474 +1922.8 2018.3 1921.3 2017.3 1920.3 2018 C
 22.2475 +1916.6 2019.7 1913 2022.1 1910 2024.7 C
 22.2476 +1910 2032.9 1910 2041.2 1910 2049.4 C
 22.2477 +1915.4 2055.2 1920 2058.7 1925.3 2064.8 C
 22.2478 +1927.2 2064 1929 2061.4 1930.8 2061.9 C
 22.2479 +[0 0 0 0]  vc
 22.2480 +f 
 22.2481 +S 
 22.2482 +n
 22.2483 +1907.6 2030.4 m
 22.2484 +1907.5 2027.1 1906.4 2021.7 1908.5 2019.9 C
 22.2485 +1908.8 2020.1 1908.9 2019 1909.2 2019.6 C
 22.2486 +1910 2019.6 1912 2019.2 1913.1 2018.2 C
 22.2487 +1913.7 2016.5 1920.2 2015.7 1917.4 2012.7 C
 22.2488 +1918.2 2011.2 1917 2013.8 1917.2 2012 C
 22.2489 +1916.9 2012.3 1916 2012.4 1915.2 2012 C
 22.2490 +1912.5 2010.5 1916.6 2008.8 1913.6 2009.6 C
 22.2491 +1912.6 2009.2 1911.1 2009 1910.9 2007.6 C
 22.2492 +1911 1999.2 1911.8 1989.8 1911.2 1982.2 C
 22.2493 +1910.1 1981.1 1908.8 1982.2 1907.6 1982.2 C
 22.2494 +1900.8 1986.5 1893.2 1988.8 1887.2 1994.2 C
 22.2495 +1887.2 2002.4 1887.2 2010.7 1887.2 2018.9 C
 22.2496 +1892.6 2024.7 1897.2 2028.2 1902.5 2034.3 C
 22.2497 +1904.3 2033.3 1906.2 2032.1 1907.6 2030.4 C
 22.2498 +f 
 22.2499 +S 
 22.2500 +n
 22.2501 +1910.7 2025.4 m
 22.2502 +1912.7 2022.4 1916.7 2020.8 1919.8 2018.9 C
 22.2503 +1920.2 2018.7 1920.6 2018.6 1921 2018.4 C
 22.2504 +1925 2020 1927.4 2028.5 1932 2024.2 C
 22.2505 +1932.3 2025 1932.5 2023.7 1932.8 2024.4 C
 22.2506 +1932.8 2028 1932.8 2031.5 1932.8 2035 C
 22.2507 +1931.9 2033.9 1932.5 2036.3 1932.3 2036.9 C
 22.2508 +1933.2 2036.4 1932.5 2038.5 1933 2038.4 C
 22.2509 +1933.1 2040.5 1935.6 2042.2 1936.6 2043.2 C
 22.2510 +1936.2 2042.4 1935.1 2040.8 1933.7 2040.3 C
 22.2511 +1932.2 2034.4 1933.8 2029.8 1933 2023.2 C
 22.2512 +1931.1 2024.9 1928.4 2026.4 1926.5 2023.5 C
 22.2513 +1925.1 2021.6 1923 2019.8 1921.5 2018.2 C
 22.2514 +1917.8 2018.9 1915.2 2022.5 1911.6 2023.5 C
 22.2515 +1910.8 2023.8 1911.2 2024.7 1910.4 2025.2 C
 22.2516 +1910.9 2031.8 1910.6 2039.1 1910.7 2045.6 C
 22.2517 +1910.1 2048 1910.7 2045.9 1911.2 2044.8 C
 22.2518 +1910.6 2038.5 1911.2 2031.8 1910.7 2025.4 C
 22.2519 +[0.07 0.06 0 0.58]  vc
 22.2520 +f 
 22.2521 +S 
 22.2522 +n
 22.2523 +1910.7 2048.9 m
 22.2524 +1910.3 2047.4 1911.3 2046.5 1911.6 2045.3 C
 22.2525 +1912.9 2045.3 1913.9 2047.1 1915.2 2045.8 C
 22.2526 +1915.2 2044.9 1916.6 2043.3 1917.2 2042.9 C
 22.2527 +1918.7 2042.9 1919.4 2044.4 1920.5 2043.2 C
 22.2528 +1921.2 2042.2 1921.4 2040.9 1922.4 2040.3 C
 22.2529 +1924.5 2040.3 1925.7 2040.9 1926.8 2039.6 C
 22.2530 +1927.1 2037.9 1926.8 2038.1 1927.7 2037.6 C
 22.2531 +1929 2037.5 1930.4 2037 1931.6 2037.2 C
 22.2532 +1932.3 2038.2 1933.1 2038.7 1932.8 2040.3 C
 22.2533 +1935 2041.8 1935.9 2043.8 1938.5 2044.8 C
 22.2534 +1938.6 2045 1938.3 2045.5 1938.8 2045.3 C
 22.2535 +1939.1 2042.9 1935.4 2044.2 1935.4 2042.2 C
 22.2536 +1932.1 2040.8 1932.8 2037.2 1932 2034.8 C
 22.2537 +1932.3 2034 1932.7 2035.4 1932.5 2034.8 C
 22.2538 +1931.3 2031.8 1935.5 2020.1 1928.9 2025.9 C
 22.2539 +1924.6 2024.7 1922.6 2014.5 1917.4 2020.4 C
 22.2540 +1915.5 2022.8 1912 2022.6 1910.9 2025.4 C
 22.2541 +1911.5 2031.9 1910.9 2038.8 1911.4 2045.3 C
 22.2542 +1911.1 2046.5 1910 2047.4 1910.4 2048.9 C
 22.2543 +1915.1 2054.4 1920.4 2058.3 1925.1 2063.8 C
 22.2544 +1920.8 2058.6 1914.9 2054.3 1910.7 2048.9 C
 22.2545 +[0.4 0.4 0 0]  vc
 22.2546 +f 
 22.2547 +S 
 22.2548 +n
 22.2549 +1934.7 2031.9 m
 22.2550 +1934.6 2030.7 1934.9 2029.5 1934.4 2028.5 C
 22.2551 +1934 2029.5 1934.3 2031.2 1934.2 2032.6 C
 22.2552 +1933.8 2031.7 1934.9 2031.6 1934.7 2031.9 C
 22.2553 +[0.92 0.92 0 0.67]  vc
 22.2554 +f 
 22.2555 +S 
 22.2556 +n
 22.2557 +vmrs
 22.2558 +1934.7 2019.4 m
 22.2559 +1934.1 2015.3 1935.6 2010.9 1934.9 2007.9 C
 22.2560 +1935.1 2007.8 1935.6 2008.1 1935.4 2007.6 C
 22.2561 +1936.8 2008.6 1938.2 2007 1939.7 2006.2 C
 22.2562 +1940.1 2004.3 1942.7 2005 1943.6 2003.8 C
 22.2563 +1945.1 2000.3 1954 2000.8 1950 1996.6 C
 22.2564 +1952.1 1993.3 1948.2 1989.2 1951.2 1985.6 C
 22.2565 +1953 1981.4 1948.4 1982.3 1947.9 1979.8 C
 22.2566 +1945.4 1979.6 1945.1 1975.5 1942.4 1975 C
 22.2567 +1942.4 1972.3 1938 1973.6 1938.5 1970.4 C
 22.2568 +1937.4 1969 1935.6 1970.1 1934.2 1970.2 C
 22.2569 +1927.5 1974.5 1919.8 1976.8 1913.8 1982.2 C
 22.2570 +1913.8 1990.4 1913.8 1998.7 1913.8 2006.9 C
 22.2571 +1919.3 2012.7 1923.8 2016.2 1929.2 2022.3 C
 22.2572 +1931.1 2021.6 1932.8 2018.9 1934.7 2019.4 C
 22.2573 +[0 0 0 0]  vc
 22.2574 +f 
 22.2575 +0.4 w
 22.2576 +2 J
 22.2577 +2 M
 22.2578 +S 
 22.2579 +n
 22.2580 +2024.2 2038.1 m
 22.2581 +2024.1 2029.3 2024.4 2021.7 2024.7 2014.4 C
 22.2582 +2024.4 2013.6 2020.6 2013.4 2021.3 2011.2 C
 22.2583 +2020.5 2010.3 2018.4 2010.6 2018.9 2008.6 C
 22.2584 +2019 2008.8 2018.8 2009 2018.7 2009.1 C
 22.2585 +2018.2 2006.7 2015.2 2007.9 2015.3 2005.5 C
 22.2586 +2014.7 2004.8 2012.4 2005.1 2013.2 2003.6 C
 22.2587 +2012.3 2004.2 2012.8 2002.4 2012.7 2002.6 C
 22.2588 +2009.4 2003.3 2011.2 1998.6 2008.4 1999.2 C
 22.2589 +2007 1999.1 2006.1 1999.4 2005.7 2000.4 C
 22.2590 +2006.9 1998.5 2007.7 2000.5 2009.3 2000.2 C
 22.2591 +2009.2 2003.7 2012.4 2002.1 2012.9 2005.2 C
 22.2592 +2015.9 2005.6 2015.2 2008.6 2017.7 2008.8 C
 22.2593 +2018.4 2009.6 2018.3 2011.4 2019.6 2011 C
 22.2594 +2021.1 2011.7 2021.4 2014.8 2023.7 2015.1 C
 22.2595 +2023.7 2023.5 2023.9 2031.6 2023.5 2040.5 C
 22.2596 +2021.8 2041.7 2020.7 2043.6 2018.4 2043.9 C
 22.2597 +2020.8 2042.7 2025.5 2041.8 2024.2 2038.1 C
 22.2598 +[0 0.87 0.91 0.83]  vc
 22.2599 +f 
 22.2600 +S 
 22.2601 +n
 22.2602 +2023.5 2040 m
 22.2603 +2023.5 2031.1 2023.5 2023.4 2023.5 2015.1 C
 22.2604 +2020.2 2015 2021.8 2010.3 2018.4 2011 C
 22.2605 +2018.6 2007.5 2014.7 2009.3 2014.8 2006.4 C
 22.2606 +2011.8 2006.3 2012.2 2002.3 2009.8 2002.4 C
 22.2607 +2009.7 2001.5 2009.2 2000.1 2008.4 2000.2 C
 22.2608 +2008.7 2000.9 2009.7 2001.2 2009.3 2002.4 C
 22.2609 +2008.4 2004.2 2007.5 2003.1 2007.9 2005.5 C
 22.2610 +2007.9 2010.8 2007.7 2018.7 2008.1 2023.2 C
 22.2611 +2009 2024.3 2007.3 2023.4 2007.9 2024 C
 22.2612 +2007.7 2024.6 2007.3 2026.3 2008.6 2027.1 C
 22.2613 +2009.7 2026.8 2010 2027.6 2010.5 2028 C
 22.2614 +2010.5 2028.2 2010.5 2029.1 2010.5 2028.5 C
 22.2615 +2011.5 2028 2010.5 2030 2011.5 2030 C
 22.2616 +2014.2 2029.7 2012.9 2032.2 2014.8 2032.6 C
 22.2617 +2015.1 2033.6 2015.3 2033 2016 2033.3 C
 22.2618 +2017 2033.9 2016.6 2035.4 2017.2 2036.2 C
 22.2619 +2018.7 2036.4 2019.2 2039 2021.3 2038.4 C
 22.2620 +2021.6 2035.4 2019.7 2029.5 2021.1 2027.3 C
 22.2621 +2020.9 2023.5 2021.5 2018.5 2020.6 2016 C
 22.2622 +2020.9 2013.9 2021.5 2015.4 2022.3 2014.4 C
 22.2623 +2022.2 2015.1 2023.3 2014.8 2023.2 2015.6 C
 22.2624 +2022.7 2019.8 2023.3 2024.3 2022.8 2028.5 C
 22.2625 +2022.3 2028.2 2022.6 2027.6 2022.5 2027.1 C
 22.2626 +2022.5 2027.8 2022.5 2029.2 2022.5 2029.2 C
 22.2627 +2022.6 2029.2 2022.7 2029.1 2022.8 2029 C
 22.2628 +2023.9 2032.8 2022.6 2037 2023 2040.8 C
 22.2629 +2022.3 2041.2 2021.6 2041.5 2021.1 2042.2 C
 22.2630 +2022 2041.2 2022.9 2041.4 2023.5 2040 C
 22.2631 +[0 1 1 0.23]  vc
 22.2632 +f 
 22.2633 +S 
 22.2634 +n
 22.2635 +2009.1 1997.8 m
 22.2636 +2003.8 1997.7 2000.1 2002.4 1995.4 2003.1 C
 22.2637 +1995 1999.5 1995.2 1995 1995.2 1992 C
 22.2638 +1995.2 1995.8 1995 1999.7 1995.4 2003.3 C
 22.2639 +2000.3 2002.2 2003.8 1997.9 2009.1 1997.8 C
 22.2640 +2012.3 2001.2 2015.6 2004.8 2018.7 2008.1 C
 22.2641 +2021.6 2011.2 2027.5 2013.9 2025.9 2019.9 C
 22.2642 +2026.1 2017.9 2025.6 2016.2 2025.4 2014.4 C
 22.2643 +2020.2 2008.4 2014 2003.6 2009.1 1997.8 C
 22.2644 +[0.18 0.18 0 0.78]  vc
 22.2645 +f 
 22.2646 +S 
 22.2647 +n
 22.2648 +2009.3 1997.8 m
 22.2649 +2008.7 1997.4 2007.9 1997.6 2007.2 1997.6 C
 22.2650 +2007.9 1997.6 2008.9 1997.4 2009.6 1997.8 C
 22.2651 +2014.7 2003.6 2020.8 2008.8 2025.9 2014.8 C
 22.2652 +2025.8 2017.7 2026.1 2014.8 2025.6 2014.1 C
 22.2653 +2020.4 2008.8 2014.8 2003.3 2009.3 1997.8 C
 22.2654 +[0.07 0.06 0 0.58]  vc
 22.2655 +f 
 22.2656 +S 
 22.2657 +n
 22.2658 +2009.6 1997.6 m
 22.2659 +2009 1997.1 2008.1 1997.4 2007.4 1997.3 C
 22.2660 +2008.1 1997.4 2009 1997.1 2009.6 1997.6 C
 22.2661 +2014.8 2003.7 2021.1 2008.3 2025.9 2014.4 C
 22.2662 +2021.1 2008.3 2014.7 2003.5 2009.6 1997.6 C
 22.2663 +[0.4 0.4 0 0]  vc
 22.2664 +f 
 22.2665 +S 
 22.2666 +n
 22.2667 +2021.8 2011.5 m
 22.2668 +2021.9 2012.2 2022.3 2013.5 2023.7 2013.6 C
 22.2669 +2023.4 2012.7 2022.8 2011.8 2021.8 2011.5 C
 22.2670 +[0 0.33 0.33 0.99]  vc
 22.2671 +f 
 22.2672 +S 
 22.2673 +n
 22.2674 +2021.1 2042 m
 22.2675 +2022.1 2041.1 2020.9 2040.2 2020.6 2039.6 C
 22.2676 +2018.4 2039.5 2018.1 2036.9 2016.3 2036.4 C
 22.2677 +2015.8 2035.5 2015.3 2033.8 2014.8 2033.6 C
 22.2678 +2012.4 2033.8 2013 2030.4 2010.5 2030.2 C
 22.2679 +2009.6 2028.9 2009.6 2028.3 2008.4 2028 C
 22.2680 +2006.9 2026.7 2007.5 2024.3 2006 2023.2 C
 22.2681 +2006.6 2023.2 2005.7 2023.3 2005.7 2023 C
 22.2682 +2006.4 2022.5 2006.3 2021.1 2006.7 2020.6 C
 22.2683 +2006.6 2015 2006.9 2009 2006.4 2003.8 C
 22.2684 +2006.9 2002.5 2007.6 2001.1 2006.9 2000.7 C
 22.2685 +2004.6 2003.6 2003 2002.9 2000.2 2004.3 C
 22.2686 +1999.3 2005.8 1997.9 2006.3 1996.1 2006.7 C
 22.2687 +1995.7 2008.9 1996 2011.1 1995.9 2012.9 C
 22.2688 +1993.4 2015.1 1990.5 2016.2 1987.7 2017.7 C
 22.2689 +1987.1 2019.3 1991.1 2019.4 1990.4 2021.3 C
 22.2690 +1990.5 2021.5 1991.9 2022.3 1992 2023 C
 22.2691 +1994.8 2024.4 1996.2 2027.5 1998.5 2030 C
 22.2692 +2002.4 2033 2005.2 2037.2 2008.8 2041 C
 22.2693 +2010.2 2041.3 2011.6 2042 2011 2043.9 C
 22.2694 +2011.2 2044.8 2010.1 2045.3 2010.5 2046.3 C
 22.2695 +2013.8 2044.8 2017.5 2043.4 2021.1 2042 C
 22.2696 +[0 0.5 0.5 0.2]  vc
 22.2697 +f 
 22.2698 +S 
 22.2699 +n
 22.2700 +2019.4 2008.8 m
 22.2701 +2018.9 2009.2 2019.3 2009.9 2019.6 2010.3 C
 22.2702 +2022.2 2011.5 2020.3 2009.1 2019.4 2008.8 C
 22.2703 +[0 0.33 0.33 0.99]  vc
 22.2704 +f 
 22.2705 +S 
 22.2706 +n
 22.2707 +2018 2007.4 m
 22.2708 +2015.7 2006.7 2015.3 2003.6 2012.9 2002.8 C
 22.2709 +2013.5 2003.7 2013.5 2005.1 2015.6 2005.2 C
 22.2710 +2016.4 2006.1 2015.7 2007.7 2018 2007.4 C
 22.2711 +f 
 22.2712 +S 
 22.2713 +n
 22.2714 +vmrs
 22.2715 +1993.5 2008.8 m
 22.2716 +1993.4 2000 1993.7 1992.5 1994 1985.1 C
 22.2717 +1993.7 1984.3 1989.9 1984.1 1990.6 1982 C
 22.2718 +1989.8 1981.1 1987.7 1981.4 1988.2 1979.3 C
 22.2719 +1988.3 1979.6 1988.1 1979.7 1988 1979.8 C
 22.2720 +1987.5 1977.5 1984.5 1978.6 1984.6 1976.2 C
 22.2721 +1983.9 1975.5 1981.7 1975.8 1982.4 1974.3 C
 22.2722 +1981.6 1974.9 1982.1 1973.1 1982 1973.3 C
 22.2723 +1979 1973.7 1980 1968.8 1976.9 1969.7 C
 22.2724 +1975.9 1969.8 1975.3 1970.3 1975 1971.2 C
 22.2725 +1976.2 1969.2 1977 1971.2 1978.6 1970.9 C
 22.2726 +1978.5 1974.4 1981.7 1972.8 1982.2 1976 C
 22.2727 +1985.2 1976.3 1984.5 1979.3 1987 1979.6 C
 22.2728 +1987.7 1980.3 1987.5 1982.1 1988.9 1981.7 C
 22.2729 +1990.4 1982.4 1990.7 1985.5 1993 1985.8 C
 22.2730 +1992.9 1994.3 1993.2 2002.3 1992.8 2011.2 C
 22.2731 +1991.1 2012.4 1990 2014.4 1987.7 2014.6 C
 22.2732 +1990.1 2013.4 1994.7 2012.6 1993.5 2008.8 C
 22.2733 +[0 0.87 0.91 0.83]  vc
 22.2734 +f 
 22.2735 +0.4 w
 22.2736 +2 J
 22.2737 +2 M
 22.2738 +S 
 22.2739 +n
 22.2740 +1992.8 2010.8 m
 22.2741 +1992.8 2001.8 1992.8 1994.1 1992.8 1985.8 C
 22.2742 +1989.5 1985.7 1991.1 1981.1 1987.7 1981.7 C
 22.2743 +1987.9 1978.2 1983.9 1980 1984.1 1977.2 C
 22.2744 +1981.1 1977 1981.5 1973 1979.1 1973.1 C
 22.2745 +1979 1972.2 1978.5 1970.9 1977.6 1970.9 C
 22.2746 +1977.9 1971.6 1979 1971.9 1978.6 1973.1 C
 22.2747 +1977.6 1974.9 1976.8 1973.9 1977.2 1976.2 C
 22.2748 +1977.2 1981.5 1977 1989.4 1977.4 1994 C
 22.2749 +1978.3 1995 1976.6 1994.1 1977.2 1994.7 C
 22.2750 +1977 1995.3 1976.6 1997 1977.9 1997.8 C
 22.2751 +1979 1997.5 1979.3 1998.3 1979.8 1998.8 C
 22.2752 +1979.8 1998.9 1979.8 1999.8 1979.8 1999.2 C
 22.2753 +1980.8 1998.7 1979.7 2000.7 1980.8 2000.7 C
 22.2754 +1983.5 2000.4 1982.1 2003 1984.1 2003.3 C
 22.2755 +1984.4 2004.3 1984.5 2003.7 1985.3 2004 C
 22.2756 +1986.3 2004.6 1985.9 2006.1 1986.5 2006.9 C
 22.2757 +1988 2007.1 1988.4 2009.7 1990.6 2009.1 C
 22.2758 +1990.9 2006.1 1989 2000.2 1990.4 1998 C
 22.2759 +1990.2 1994.3 1990.8 1989.2 1989.9 1986.8 C
 22.2760 +1990.2 1984.7 1990.8 1986.2 1991.6 1985.1 C
 22.2761 +1991.5 1985.9 1992.6 1985.5 1992.5 1986.3 C
 22.2762 +1992 1990.5 1992.6 1995 1992 1999.2 C
 22.2763 +1991.6 1998.9 1991.9 1998.3 1991.8 1997.8 C
 22.2764 +1991.8 1998.5 1991.8 2000 1991.8 2000 C
 22.2765 +1991.9 1999.9 1992 1999.8 1992 1999.7 C
 22.2766 +1993.2 2003.5 1991.9 2007.7 1992.3 2011.5 C
 22.2767 +1991.6 2012 1990.9 2012.2 1990.4 2012.9 C
 22.2768 +1991.3 2011.9 1992.2 2012.1 1992.8 2010.8 C
 22.2769 +[0 1 1 0.23]  vc
 22.2770 +f 
 22.2771 +S 
 22.2772 +n
 22.2773 +1978.4 1968.5 m
 22.2774 +1977 1969.2 1975.8 1968.2 1974.5 1969 C
 22.2775 +1968.3 1973 1961.6 1976 1955.1 1979.1 C
 22.2776 +1962 1975.9 1968.8 1972.5 1975.5 1968.8 C
 22.2777 +1976.5 1968.8 1977.6 1968.8 1978.6 1968.8 C
 22.2778 +1981.7 1972.1 1984.8 1975.7 1988 1978.8 C
 22.2779 +1990.9 1981.9 1996.8 1984.6 1995.2 1990.6 C
 22.2780 +1995.3 1988.6 1994.9 1986.9 1994.7 1985.1 C
 22.2781 +1989.5 1979.1 1983.3 1974.3 1978.4 1968.5 C
 22.2782 +[0.18 0.18 0 0.78]  vc
 22.2783 +f 
 22.2784 +S 
 22.2785 +n
 22.2786 +1978.4 1968.3 m
 22.2787 +1977.9 1968.7 1977.1 1968.5 1976.4 1968.5 C
 22.2788 +1977.3 1968.8 1978.1 1967.9 1978.8 1968.5 C
 22.2789 +1984 1974.3 1990.1 1979.5 1995.2 1985.6 C
 22.2790 +1995.1 1988.4 1995.3 1985.6 1994.9 1984.8 C
 22.2791 +1989.5 1979.4 1983.9 1973.8 1978.4 1968.3 C
 22.2792 +[0.07 0.06 0 0.58]  vc
 22.2793 +f 
 22.2794 +S 
 22.2795 +n
 22.2796 +1978.6 1968 m
 22.2797 +1977.9 1968 1977.4 1968.6 1978.4 1968 C
 22.2798 +1983.9 1973.9 1990.1 1979.1 1995.2 1985.1 C
 22.2799 +1990.2 1979 1983.8 1974.1 1978.6 1968 C
 22.2800 +[0.4 0.4 0 0]  vc
 22.2801 +f 
 22.2802 +S 
 22.2803 +n
 22.2804 +1991.1 1982.2 m
 22.2805 +1991.2 1982.9 1991.6 1984.2 1993 1984.4 C
 22.2806 +1992.6 1983.5 1992.1 1982.5 1991.1 1982.2 C
 22.2807 +[0 0.33 0.33 0.99]  vc
 22.2808 +f 
 22.2809 +S 
 22.2810 +n
 22.2811 +1990.4 2012.7 m
 22.2812 +1991.4 2011.8 1990.2 2010.9 1989.9 2010.3 C
 22.2813 +1987.7 2010.2 1987.4 2007.6 1985.6 2007.2 C
 22.2814 +1985.1 2006.2 1984.6 2004.5 1984.1 2004.3 C
 22.2815 +1981.7 2004.5 1982.3 2001.2 1979.8 2000.9 C
 22.2816 +1978.8 1999.6 1978.8 1999.1 1977.6 1998.8 C
 22.2817 +1976.1 1997.4 1976.7 1995 1975.2 1994 C
 22.2818 +1975.8 1994 1975 1994 1975 1993.7 C
 22.2819 +1975.7 1993.2 1975.6 1991.8 1976 1991.3 C
 22.2820 +1975.9 1985.7 1976.1 1979.7 1975.7 1974.5 C
 22.2821 +1976.2 1973.3 1976.9 1971.8 1976.2 1971.4 C
 22.2822 +1973.9 1974.3 1972.2 1973.6 1969.5 1975 C
 22.2823 +1967.9 1977.5 1963.8 1977.1 1961.8 1980 C
 22.2824 +1959 1980 1957.6 1983 1954.8 1982.9 C
 22.2825 +1953.8 1984.2 1954.8 1985.7 1955.1 1987.2 C
 22.2826 +1956.2 1989.5 1959.7 1990.1 1959.9 1991.8 C
 22.2827 +1965.9 1998 1971.8 2005.2 1978.1 2011.7 C
 22.2828 +1979.5 2012 1980.9 2012.7 1980.3 2014.6 C
 22.2829 +1980.5 2015.6 1979.4 2016 1979.8 2017 C
 22.2830 +1983 2015.6 1986.8 2014.1 1990.4 2012.7 C
 22.2831 +[0 0.5 0.5 0.2]  vc
 22.2832 +f 
 22.2833 +S 
 22.2834 +n
 22.2835 +1988.7 1979.6 m
 22.2836 +1988.2 1979.9 1988.6 1980.6 1988.9 1981 C
 22.2837 +1991.4 1982.2 1989.6 1979.9 1988.7 1979.6 C
 22.2838 +[0 0.33 0.33 0.99]  vc
 22.2839 +f 
 22.2840 +S 
 22.2841 +n
 22.2842 +1987.2 1978.1 m
 22.2843 +1985 1977.5 1984.6 1974.3 1982.2 1973.6 C
 22.2844 +1982.7 1974.5 1982.8 1975.8 1984.8 1976 C
 22.2845 +1985.7 1976.9 1985 1978.4 1987.2 1978.1 C
 22.2846 +f 
 22.2847 +S 
 22.2848 +n
 22.2849 +1975.5 2084 m
 22.2850 +1975.5 2082 1975.3 2080 1975.7 2078.2 C
 22.2851 +1978.8 2079 1980.9 2085.5 1984.8 2083.5 C
 22.2852 +1993 2078.7 2001.6 2075 2010 2070.8 C
 22.2853 +2010.1 2064 2009.9 2057.2 2010.3 2050.6 C
 22.2854 +2014.8 2046.2 2020.9 2045.7 2025.6 2042 C
 22.2855 +2026.1 2035.1 2025.8 2028 2025.9 2021.1 C
 22.2856 +2025.8 2027.8 2026.1 2034.6 2025.6 2041.2 C
 22.2857 +2022.2 2044.9 2017.6 2046.8 2012.9 2048 C
 22.2858 +2012.5 2049.5 2010.4 2049.4 2009.8 2051.1 C
 22.2859 +2009.9 2057.6 2009.6 2064.2 2010 2070.5 C
 22.2860 +2001.2 2075.4 1992 2079.1 1983.2 2084 C
 22.2861 +1980.3 2082.3 1977.8 2079.2 1975.2 2077.5 C
 22.2862 +1974.9 2079.9 1977.2 2084.6 1973.3 2085.2 C
 22.2863 +1964.7 2088.6 1956.8 2093.7 1948.1 2097.2 C
 22.2864 +1949 2097.3 1949.6 2096.9 1950.3 2096.7 C
 22.2865 +1958.4 2091.9 1967.1 2088.2 1975.5 2084 C
 22.2866 +[0.18 0.18 0 0.78]  vc
 22.2867 +f 
 22.2868 +S 
 22.2869 +n
 22.2870 +vmrs
 22.2871 +1948.6 2094.5 m
 22.2872 +1950.2 2093.7 1951.8 2092.9 1953.4 2092.1 C
 22.2873 +1951.8 2092.9 1950.2 2093.7 1948.6 2094.5 C
 22.2874 +[0 0.87 0.91 0.83]  vc
 22.2875 +f 
 22.2876 +0.4 w
 22.2877 +2 J
 22.2878 +2 M
 22.2879 +S 
 22.2880 +n
 22.2881 +1971.6 2082.3 m
 22.2882 +1971.6 2081.9 1970.7 2081.1 1970.9 2081.3 C
 22.2883 +1970.7 2081.6 1970.6 2081.6 1970.4 2081.3 C
 22.2884 +1970.8 2080.1 1968.7 2081.7 1968.3 2080.8 C
 22.2885 +1966.6 2080.9 1966.7 2078 1964.2 2078.2 C
 22.2886 +1964.8 2075 1960.1 2075.8 1960.1 2072.9 C
 22.2887 +1958 2072.3 1957.5 2069.3 1955.3 2069.3 C
 22.2888 +1953.9 2070.9 1948.8 2067.8 1950 2072 C
 22.2889 +1949 2074 1943.2 2070.6 1944 2074.8 C
 22.2890 +1942.2 2076.6 1937.6 2073.9 1938 2078.2 C
 22.2891 +1936.7 2078.6 1935 2078.6 1933.7 2078.2 C
 22.2892 +1933.5 2080 1936.8 2080.7 1937.3 2082.8 C
 22.2893 +1939.9 2083.5 1940.6 2086.4 1942.6 2088 C
 22.2894 +1945.2 2089.2 1946 2091.3 1948.4 2093.6 C
 22.2895 +1956 2089.5 1963.9 2086.1 1971.6 2082.3 C
 22.2896 +[0 0.01 1 0]  vc
 22.2897 +f 
 22.2898 +S 
 22.2899 +n
 22.2900 +1958.2 2089.7 m
 22.2901 +1956.4 2090 1955.6 2091.3 1953.9 2091.9 C
 22.2902 +1955.6 2091.9 1956.5 2089.7 1958.2 2089.7 C
 22.2903 +[0 0.87 0.91 0.83]  vc
 22.2904 +f 
 22.2905 +S 
 22.2906 +n
 22.2907 +1929.9 2080.4 m
 22.2908 +1929.5 2077.3 1929.7 2073.9 1929.6 2070.8 C
 22.2909 +1929.8 2074.1 1929.2 2077.8 1930.1 2080.8 C
 22.2910 +1935.8 2085.9 1941.4 2091.3 1946.9 2096.9 C
 22.2911 +1941.2 2091 1935.7 2086 1929.9 2080.4 C
 22.2912 +[0.4 0.4 0 0]  vc
 22.2913 +f 
 22.2914 +S 
 22.2915 +n
 22.2916 +1930.1 2080.4 m
 22.2917 +1935.8 2086 1941.5 2090.7 1946.9 2096.7 C
 22.2918 +1941.5 2090.9 1935.7 2085.8 1930.1 2080.4 C
 22.2919 +[0.07 0.06 0 0.58]  vc
 22.2920 +f 
 22.2921 +S 
 22.2922 +n
 22.2923 +1940.9 2087.1 m
 22.2924 +1941.7 2088 1944.8 2090.6 1943.6 2089.2 C
 22.2925 +1942.5 2089 1941.6 2087.7 1940.9 2087.1 C
 22.2926 +[0 0.87 0.91 0.83]  vc
 22.2927 +f 
 22.2928 +S 
 22.2929 +n
 22.2930 +1972.8 2082.8 m
 22.2931 +1973 2075.3 1972.4 2066.9 1973.3 2059.5 C
 22.2932 +1972.5 2058.9 1972.8 2057.3 1973.1 2056.4 C
 22.2933 +1974.8 2055.2 1973.4 2055.5 1972.4 2055.4 C
 22.2934 +1970.1 2053.2 1967.9 2050.9 1965.6 2048.7 C
 22.2935 +1960.9 2049.9 1956.9 2052.7 1952.4 2054.7 C
 22.2936 +1949.3 2052.5 1946.3 2049.5 1943.6 2046.8 C
 22.2937 +1939.9 2047.7 1936.8 2050.1 1933.5 2051.8 C
 22.2938 +1930.9 2054.9 1933.5 2056.2 1932.3 2059.7 C
 22.2939 +1933.2 2059.7 1932.2 2060.5 1932.5 2060.2 C
 22.2940 +1933.2 2062.5 1931.6 2064.6 1932.5 2067.4 C
 22.2941 +1932.9 2069.7 1932.7 2072.2 1932.8 2074.6 C
 22.2942 +1933.6 2070.6 1932.2 2066.3 1933 2062.6 C
 22.2943 +1934.4 2058.2 1929.8 2053.5 1935.2 2051.1 C
 22.2944 +1937.7 2049.7 1940.2 2048 1942.8 2046.8 C
 22.2945 +1945.9 2049.2 1948.8 2052 1951.7 2054.7 C
 22.2946 +1952.7 2054.7 1953.6 2054.6 1954.4 2054.2 C
 22.2947 +1958.1 2052.5 1961.7 2049.3 1965.9 2049.2 C
 22.2948 +1968.2 2052.8 1975.2 2055 1972.6 2060.9 C
 22.2949 +1973.3 2062.4 1972.2 2065.2 1972.6 2067.6 C
 22.2950 +1972.7 2072.6 1972.4 2077.7 1972.8 2082.5 C
 22.2951 +1968.1 2084.9 1963.5 2087.5 1958.7 2089.5 C
 22.2952 +1963.5 2087.4 1968.2 2085 1972.8 2082.8 C
 22.2953 +f 
 22.2954 +S 
 22.2955 +n
 22.2956 +1935.2 2081.1 m
 22.2957 +1936.8 2083.4 1938.6 2084.6 1940.4 2086.6 C
 22.2958 +1938.8 2084.4 1936.7 2083.4 1935.2 2081.1 C
 22.2959 +f 
 22.2960 +S 
 22.2961 +n
 22.2962 +1983.2 2081.3 m
 22.2963 +1984.8 2080.5 1986.3 2079.7 1988 2078.9 C
 22.2964 +1986.3 2079.7 1984.8 2080.5 1983.2 2081.3 C
 22.2965 +f 
 22.2966 +S 
 22.2967 +n
 22.2968 +2006.2 2069.1 m
 22.2969 +2006.2 2068.7 2005.2 2067.9 2005.5 2068.1 C
 22.2970 +2005.3 2068.4 2005.2 2068.4 2005 2068.1 C
 22.2971 +2005.4 2066.9 2003.3 2068.5 2002.8 2067.6 C
 22.2972 +2001.2 2067.7 2001.2 2064.8 1998.8 2065 C
 22.2973 +1999.4 2061.8 1994.7 2062.6 1994.7 2059.7 C
 22.2974 +1992.4 2059.5 1992.4 2055.8 1990.1 2056.8 C
 22.2975 +1985.9 2059.5 1981.1 2061 1976.9 2063.8 C
 22.2976 +1977.2 2067.6 1974.9 2074.2 1978.8 2075.8 C
 22.2977 +1979.6 2077.8 1981.7 2078.4 1982.9 2080.4 C
 22.2978 +1990.6 2076.3 1998.5 2072.9 2006.2 2069.1 C
 22.2979 +[0 0.01 1 0]  vc
 22.2980 +f 
 22.2981 +S 
 22.2982 +n
 22.2983 +vmrs
 22.2984 +1992.8 2076.5 m
 22.2985 +1991 2076.8 1990.2 2078.1 1988.4 2078.7 C
 22.2986 +1990.2 2078.7 1991 2076.5 1992.8 2076.5 C
 22.2987 +[0 0.87 0.91 0.83]  vc
 22.2988 +f 
 22.2989 +0.4 w
 22.2990 +2 J
 22.2991 +2 M
 22.2992 +S 
 22.2993 +n
 22.2994 +1975.5 2073.4 m
 22.2995 +1976.1 2069.7 1973.9 2064.6 1977.4 2062.4 C
 22.2996 +1973.9 2064.5 1976.1 2069.9 1975.5 2073.6 C
 22.2997 +1976 2074.8 1979.3 2077.4 1978.1 2076 C
 22.2998 +1977 2075.7 1975.8 2074.5 1975.5 2073.4 C
 22.2999 +f 
 22.3000 +S 
 22.3001 +n
 22.3002 +2007.4 2069.6 m
 22.3003 +2007.6 2062.1 2007 2053.7 2007.9 2046.3 C
 22.3004 +2007.1 2045.7 2007.3 2044.1 2007.6 2043.2 C
 22.3005 +2009.4 2042 2007.9 2042.3 2006.9 2042.2 C
 22.3006 +2002.2 2037.4 1996.7 2032.4 1992.5 2027.3 C
 22.3007 +1992 2027.3 1991.6 2027.3 1991.1 2027.3 C
 22.3008 +1991.4 2035.6 1991.4 2045.6 1991.1 2054.4 C
 22.3009 +1990.5 2055.5 1988.4 2056.6 1990.6 2055.4 C
 22.3010 +1991.6 2055.4 1991.6 2054.1 1991.6 2053.2 C
 22.3011 +1990.8 2044.7 1991.9 2035.4 1991.6 2027.6 C
 22.3012 +1991.8 2027.6 1992 2027.6 1992.3 2027.6 C
 22.3013 +1997 2032.8 2002.5 2037.7 2007.2 2042.9 C
 22.3014 +2007.3 2044.8 2006.7 2047.4 2007.6 2048.4 C
 22.3015 +2006.9 2055.1 2007.1 2062.5 2007.4 2069.3 C
 22.3016 +2002.7 2071.7 1998.1 2074.3 1993.2 2076.3 C
 22.3017 +1998 2074.2 2002.7 2071.8 2007.4 2069.6 C
 22.3018 +f 
 22.3019 +S 
 22.3020 +n
 22.3021 +2006.7 2069.1 m
 22.3022 +2006.3 2068.6 2005.9 2067.7 2005.7 2066.9 C
 22.3023 +2005.7 2059.7 2005.9 2051.4 2005.5 2045.1 C
 22.3024 +2004.9 2045.3 2004.7 2044.5 2004.3 2045.3 C
 22.3025 +2005.1 2045.3 2004.2 2045.8 2004.8 2046 C
 22.3026 +2004.8 2052.2 2004.8 2059.2 2004.8 2064.5 C
 22.3027 +2005.7 2065.7 2005.1 2065.7 2005 2066.7 C
 22.3028 +2003.8 2067 2002.7 2067.2 2001.9 2066.4 C
 22.3029 +2001.3 2064.6 1998 2063.1 1998 2061.9 C
 22.3030 +1996.1 2062.3 1996.6 2058.3 1994.2 2058.8 C
 22.3031 +1992.6 2057.7 1992.7 2054.8 1989.9 2056.6 C
 22.3032 +1985.6 2059.3 1980.9 2060.8 1976.7 2063.6 C
 22.3033 +1976 2066.9 1976 2071.2 1976.7 2074.6 C
 22.3034 +1977.6 2070.8 1973.1 2062.1 1980.5 2061.2 C
 22.3035 +1984.3 2060.3 1987.5 2058.2 1990.8 2056.4 C
 22.3036 +1991.7 2056.8 1992.9 2057.2 1993.5 2059.2 C
 22.3037 +1994.3 2058.6 1994.4 2060.6 1994.7 2059.2 C
 22.3038 +1995.3 2062.7 1999.2 2061.4 1998.8 2064.8 C
 22.3039 +2001.8 2065.4 2002.5 2068.4 2005.2 2067.4 C
 22.3040 +2004.9 2067.9 2006 2068 2006.4 2069.1 C
 22.3041 +2001.8 2071.1 1997.4 2073.9 1992.8 2075.8 C
 22.3042 +1997.5 2073.8 2002 2071.2 2006.7 2069.1 C
 22.3043 +[0 0.2 1 0]  vc
 22.3044 +f 
 22.3045 +S 
 22.3046 +n
 22.3047 +1988.7 2056.6 m
 22.3048 +1985.1 2058.7 1981.1 2060.1 1977.6 2061.9 C
 22.3049 +1981.3 2060.5 1985.6 2058.1 1988.7 2056.6 C
 22.3050 +[0 0.87 0.91 0.83]  vc
 22.3051 +f 
 22.3052 +S 
 22.3053 +n
 22.3054 +1977.9 2059.5 m
 22.3055 +1975.7 2064.5 1973.7 2054.7 1975.2 2060.9 C
 22.3056 +1976 2060.6 1977.6 2059.7 1977.9 2059.5 C
 22.3057 +f 
 22.3058 +S 
 22.3059 +n
 22.3060 +1989.6 2051.3 m
 22.3061 +1990.1 2042.3 1989.8 2036.6 1989.9 2028 C
 22.3062 +1989.8 2027 1990.8 2028.3 1990.1 2027.3 C
 22.3063 +1988.9 2026.7 1986.7 2026.9 1986.8 2024.7 C
 22.3064 +1987.4 2023 1985.9 2024.6 1985.1 2023.7 C
 22.3065 +1984.1 2021.4 1982.5 2020.5 1980.3 2020.6 C
 22.3066 +1979.9 2020.8 1979.5 2021.1 1979.3 2021.6 C
 22.3067 +1979.7 2025.8 1978.4 2033 1979.6 2038.1 C
 22.3068 +1983.7 2042.9 1968.8 2044.6 1978.8 2042.7 C
 22.3069 +1979.3 2042.3 1979.6 2041.9 1980 2041.5 C
 22.3070 +1980 2034.8 1980 2027 1980 2021.6 C
 22.3071 +1981.3 2020.5 1981.7 2021.5 1982.9 2021.8 C
 22.3072 +1983.6 2024.7 1986.1 2023.8 1986.8 2026.4 C
 22.3073 +1987.1 2027.7 1988.6 2027.1 1989.2 2028.3 C
 22.3074 +1989.1 2036.7 1989.3 2044.8 1988.9 2053.7 C
 22.3075 +1987.2 2054.9 1986.2 2056.8 1983.9 2057.1 C
 22.3076 +1986.3 2055.9 1990.9 2055 1989.6 2051.3 C
 22.3077 +f 
 22.3078 +S 
 22.3079 +n
 22.3080 +1971.6 2078.9 m
 22.3081 +1971.4 2070.5 1972.1 2062.2 1971.6 2055.9 C
 22.3082 +1969.9 2053.7 1967.6 2051.7 1965.6 2049.6 C
 22.3083 +1961.4 2050.4 1957.6 2053.6 1953.4 2055.2 C
 22.3084 +1949.8 2055.6 1948.2 2051.2 1945.5 2049.6 C
 22.3085 +1945.1 2048.8 1944.5 2047.9 1943.6 2047.5 C
 22.3086 +1940.1 2047.8 1937.3 2051 1934 2052.3 C
 22.3087 +1933.7 2052.6 1933.7 2053 1933.2 2053.2 C
 22.3088 +1933.7 2060.8 1933.4 2067.2 1933.5 2074.6 C
 22.3089 +1933.8 2068.1 1934 2060.9 1933.2 2054 C
 22.3090 +1935.3 2050.9 1939.3 2049.6 1942.4 2047.5 C
 22.3091 +1942.8 2047.5 1943.4 2047.4 1943.8 2047.7 C
 22.3092 +1947.1 2050.2 1950.3 2057.9 1955.3 2054.4 C
 22.3093 +1955.4 2054.4 1955.5 2054.3 1955.6 2054.2 C
 22.3094 +1955.9 2057.6 1956.1 2061.8 1955.3 2064.8 C
 22.3095 +1955.4 2064.3 1955.1 2063.8 1955.6 2063.6 C
 22.3096 +1956 2066.6 1955.3 2068.7 1958.7 2069.8 C
 22.3097 +1959.2 2071.7 1961.4 2071.7 1962 2074.1 C
 22.3098 +1964.4 2074.2 1964 2077.7 1967.3 2078.4 C
 22.3099 +1967 2079.7 1968.1 2079.9 1969 2080.1 C
 22.3100 +1971.1 2079.9 1970 2079.2 1970.4 2078 C
 22.3101 +1969.5 2077.2 1970.3 2075.9 1969.7 2075.1 C
 22.3102 +1970.1 2069.8 1970.1 2063.6 1969.7 2058.8 C
 22.3103 +1969.2 2058.5 1970 2058.1 1970.2 2057.8 C
 22.3104 +1970.4 2058.3 1971.2 2057.7 1971.4 2058.3 C
 22.3105 +1971.5 2065.3 1971.2 2073.6 1971.6 2081.1 C
 22.3106 +1974.1 2081.4 1969.8 2084.3 1972.4 2082.5 C
 22.3107 +1971.9 2081.4 1971.6 2080.2 1971.6 2078.9 C
 22.3108 +[0 0.4 1 0]  vc
 22.3109 +f 
 22.3110 +S 
 22.3111 +n
 22.3112 +1952.4 2052 m
 22.3113 +1954.1 2051.3 1955.6 2050.4 1957.2 2049.6 C
 22.3114 +1955.6 2050.4 1954.1 2051.3 1952.4 2052 C
 22.3115 +[0 0.87 0.91 0.83]  vc
 22.3116 +f 
 22.3117 +S 
 22.3118 +n
 22.3119 +1975.5 2039.8 m
 22.3120 +1975.5 2039.4 1974.5 2038.7 1974.8 2038.8 C
 22.3121 +1974.6 2039.1 1974.5 2039.1 1974.3 2038.8 C
 22.3122 +1974.6 2037.6 1972.5 2039.3 1972.1 2038.4 C
 22.3123 +1970.4 2038.4 1970.5 2035.5 1968 2035.7 C
 22.3124 +1968.6 2032.5 1964 2033.3 1964 2030.4 C
 22.3125 +1961.9 2029.8 1961.4 2026.8 1959.2 2026.8 C
 22.3126 +1957.7 2028.5 1952.6 2025.3 1953.9 2029.5 C
 22.3127 +1952.9 2031.5 1947 2028.2 1947.9 2032.4 C
 22.3128 +1946 2034.2 1941.5 2031.5 1941.9 2035.7 C
 22.3129 +1940.6 2036.1 1938.9 2036.1 1937.6 2035.7 C
 22.3130 +1937.3 2037.5 1940.7 2038.2 1941.2 2040.3 C
 22.3131 +1943.7 2041.1 1944.4 2043.9 1946.4 2045.6 C
 22.3132 +1949.1 2046.7 1949.9 2048.8 1952.2 2051.1 C
 22.3133 +1959.9 2047.1 1967.7 2043.6 1975.5 2039.8 C
 22.3134 +[0 0.01 1 0]  vc
 22.3135 +f 
 22.3136 +S 
 22.3137 +n
 22.3138 +vmrs
 22.3139 +1962 2047.2 m
 22.3140 +1960.2 2047.5 1959.5 2048.9 1957.7 2049.4 C
 22.3141 +1959.5 2049.5 1960.3 2047.2 1962 2047.2 C
 22.3142 +[0 0.87 0.91 0.83]  vc
 22.3143 +f 
 22.3144 +0.4 w
 22.3145 +2 J
 22.3146 +2 M
 22.3147 +S 
 22.3148 +n
 22.3149 +2012.4 2046.3 m
 22.3150 +2010.3 2051.3 2008.3 2041.5 2009.8 2047.7 C
 22.3151 +2010.5 2047.4 2012.2 2046.5 2012.4 2046.3 C
 22.3152 +f 
 22.3153 +S 
 22.3154 +n
 22.3155 +1944.8 2044.6 m
 22.3156 +1945.5 2045.6 1948.6 2048.1 1947.4 2046.8 C
 22.3157 +1946.3 2046.5 1945.5 2045.2 1944.8 2044.6 C
 22.3158 +f 
 22.3159 +S 
 22.3160 +n
 22.3161 +1987.2 2054.9 m
 22.3162 +1983.7 2057.3 1979.6 2058 1976 2060.2 C
 22.3163 +1974.7 2058.2 1977.2 2055.8 1974.3 2054.9 C
 22.3164 +1973.1 2052 1970.4 2050.2 1968 2048 C
 22.3165 +1968 2047.7 1968 2047.4 1968.3 2047.2 C
 22.3166 +1969.5 2046.1 1983 2040.8 1972.4 2044.8 C
 22.3167 +1971.2 2046.6 1967.9 2046 1968 2048.2 C
 22.3168 +1970.5 2050.7 1973.8 2052.6 1974.3 2055.6 C
 22.3169 +1975.1 2055 1975.7 2056.7 1975.7 2057.1 C
 22.3170 +1975.7 2058.2 1974.8 2059.3 1975.5 2060.4 C
 22.3171 +1979.3 2058.2 1983.9 2057.7 1987.2 2054.9 C
 22.3172 +[0.18 0.18 0 0.78]  vc
 22.3173 +f 
 22.3174 +S 
 22.3175 +n
 22.3176 +1967.8 2047.5 m
 22.3177 +1968.5 2047 1969.1 2046.5 1969.7 2046 C
 22.3178 +1969.1 2046.5 1968.5 2047 1967.8 2047.5 C
 22.3179 +[0 0.87 0.91 0.83]  vc
 22.3180 +f 
 22.3181 +S 
 22.3182 +n
 22.3183 +1976.7 2040.3 m
 22.3184 +1976.9 2032.8 1976.3 2024.4 1977.2 2017 C
 22.3185 +1976.4 2016.5 1976.6 2014.8 1976.9 2013.9 C
 22.3186 +1978.7 2012.7 1977.2 2013 1976.2 2012.9 C
 22.3187 +1971.5 2008.1 1965.9 2003.1 1961.8 1998 C
 22.3188 +1960.9 1998 1960.1 1998 1959.2 1998 C
 22.3189 +1951.5 2001.1 1944.3 2005.5 1937.1 2009.6 C
 22.3190 +1935 2012.9 1937 2013.6 1936.1 2017.2 C
 22.3191 +1937.1 2017.2 1936 2018 1936.4 2017.7 C
 22.3192 +1937 2020.1 1935.5 2022.1 1936.4 2024.9 C
 22.3193 +1936.8 2027.2 1936.5 2029.7 1936.6 2032.1 C
 22.3194 +1937.4 2028.2 1936 2023.8 1936.8 2020.1 C
 22.3195 +1938.3 2015.7 1933.6 2011 1939 2008.6 C
 22.3196 +1945.9 2004.5 1953.1 2000.3 1960.6 1998.3 C
 22.3197 +1960.9 1998.3 1961.3 1998.3 1961.6 1998.3 C
 22.3198 +1966.2 2003.5 1971.8 2008.4 1976.4 2013.6 C
 22.3199 +1976.6 2015.5 1976 2018.1 1976.9 2019.2 C
 22.3200 +1976.1 2025.8 1976.4 2033.2 1976.7 2040 C
 22.3201 +1971.9 2042.4 1967.4 2045 1962.5 2047 C
 22.3202 +1967.3 2044.9 1972 2042.6 1976.7 2040.3 C
 22.3203 +f 
 22.3204 +S 
 22.3205 +n
 22.3206 +1939 2038.6 m
 22.3207 +1940.6 2040.9 1942.5 2042.1 1944.3 2044.1 C
 22.3208 +1942.7 2041.9 1940.6 2040.9 1939 2038.6 C
 22.3209 +f 
 22.3210 +S 
 22.3211 +n
 22.3212 +2006.2 2065.7 m
 22.3213 +2006 2057.3 2006.7 2049 2006.2 2042.7 C
 22.3214 +2002.1 2038.4 1997.7 2033.4 1993 2030 C
 22.3215 +1992.9 2029.3 1992.5 2028.6 1992 2028.3 C
 22.3216 +1992.1 2036.6 1991.9 2046.2 1992.3 2054.9 C
 22.3217 +1990.8 2056.2 1989 2056.7 1987.5 2058 C
 22.3218 +1988.7 2057.7 1990.7 2054.4 1993 2056.4 C
 22.3219 +1993.4 2058.8 1996 2058.2 1996.6 2060.9 C
 22.3220 +1999 2061 1998.5 2064.5 2001.9 2065.2 C
 22.3221 +2001.5 2066.5 2002.7 2066.7 2003.6 2066.9 C
 22.3222 +2005.7 2066.7 2004.6 2066 2005 2064.8 C
 22.3223 +2004 2064 2004.8 2062.7 2004.3 2061.9 C
 22.3224 +2004.6 2056.6 2004.6 2050.4 2004.3 2045.6 C
 22.3225 +2003.7 2045.3 2004.6 2044.9 2004.8 2044.6 C
 22.3226 +2005 2045.1 2005.7 2044.5 2006 2045.1 C
 22.3227 +2006 2052.1 2005.8 2060.4 2006.2 2067.9 C
 22.3228 +2008.7 2068.2 2004.4 2071.1 2006.9 2069.3 C
 22.3229 +2006.4 2068.2 2006.2 2067 2006.2 2065.7 C
 22.3230 +[0 0.4 1 0]  vc
 22.3231 +f 
 22.3232 +S 
 22.3233 +n
 22.3234 +2021.8 2041.7 m
 22.3235 +2018.3 2044.1 2014.1 2044.8 2010.5 2047 C
 22.3236 +2009.3 2045 2011.7 2042.6 2008.8 2041.7 C
 22.3237 +2004.3 2035.1 1997.6 2030.9 1993 2024.4 C
 22.3238 +1992.1 2024 1991.5 2024.3 1990.8 2024 C
 22.3239 +1993.2 2023.9 1995.3 2027.1 1996.8 2029 C
 22.3240 +2000.4 2032.6 2004.9 2036.9 2008.4 2040.8 C
 22.3241 +2008.2 2043.1 2011.4 2042.8 2009.8 2045.8 C
 22.3242 +2009.8 2046.3 2009.7 2046.9 2010 2047.2 C
 22.3243 +2013.8 2045 2018.5 2044.5 2021.8 2041.7 C
 22.3244 +[0.18 0.18 0 0.78]  vc
 22.3245 +f 
 22.3246 +S 
 22.3247 +n
 22.3248 +2001.6 2034 m
 22.3249 +2000.7 2033.1 1999.9 2032.3 1999 2031.4 C
 22.3250 +1999.9 2032.3 2000.7 2033.1 2001.6 2034 C
 22.3251 +[0 0.87 0.91 0.83]  vc
 22.3252 +f 
 22.3253 +S 
 22.3254 +n
 22.3255 +vmrs
 22.3256 +1989.4 2024.4 m
 22.3257 +1989.5 2025.4 1988.6 2024.3 1988.9 2024.7 C
 22.3258 +1990.5 2025.8 1990.7 2024.2 1992.8 2024.9 C
 22.3259 +1993.8 2025.9 1995 2027.1 1995.9 2028 C
 22.3260 +1994.3 2026 1991.9 2023.4 1989.4 2024.4 C
 22.3261 +[0 0.87 0.91 0.83]  vc
 22.3262 +f 
 22.3263 +0.4 w
 22.3264 +2 J
 22.3265 +2 M
 22.3266 +S 
 22.3267 +n
 22.3268 +1984.8 2019.9 m
 22.3269 +1984.6 2018.6 1986.3 2017.2 1987.7 2016.8 C
 22.3270 +1987.2 2017.5 1982.9 2017.9 1984.4 2020.6 C
 22.3271 +1984.1 2019.9 1984.9 2020 1984.8 2019.9 C
 22.3272 +f 
 22.3273 +S 
 22.3274 +n
 22.3275 +1981.7 2017 m
 22.3276 +1979.6 2022 1977.6 2012.3 1979.1 2018.4 C
 22.3277 +1979.8 2018.1 1981.5 2017.2 1981.7 2017 C
 22.3278 +f 
 22.3279 +S 
 22.3280 +n
 22.3281 +1884.3 2019.2 m
 22.3282 +1884.7 2010.5 1884.5 2000.6 1884.5 1991.8 C
 22.3283 +1886.6 1989.3 1889.9 1988.9 1892.4 1987 C
 22.3284 +1890.8 1988.7 1886 1989.1 1884.3 1992.3 C
 22.3285 +1884.7 2001 1884.5 2011.3 1884.5 2019.9 C
 22.3286 +1891 2025.1 1895.7 2031.5 1902 2036.9 C
 22.3287 +1896.1 2031 1890 2024.9 1884.3 2019.2 C
 22.3288 +[0.07 0.06 0 0.58]  vc
 22.3289 +f 
 22.3290 +S 
 22.3291 +n
 22.3292 +1884 2019.4 m
 22.3293 +1884.5 2010.6 1884.2 2000.4 1884.3 1991.8 C
 22.3294 +1884.8 1990.4 1887.8 1989 1884.8 1990.8 C
 22.3295 +1884.3 1991.3 1884.3 1992 1884 1992.5 C
 22.3296 +1884.5 2001.2 1884.2 2011.1 1884.3 2019.9 C
 22.3297 +1887.9 2023.1 1891.1 2026.4 1894.4 2030 C
 22.3298 +1891.7 2026.1 1887.1 2022.9 1884 2019.4 C
 22.3299 +[0.4 0.4 0 0]  vc
 22.3300 +f 
 22.3301 +S 
 22.3302 +n
 22.3303 +1885 2011.7 m
 22.3304 +1885 2006.9 1885 2001.9 1885 1997.1 C
 22.3305 +1885 2001.9 1885 2006.9 1885 2011.7 C
 22.3306 +[0 0.87 0.91 0.83]  vc
 22.3307 +f 
 22.3308 +S 
 22.3309 +n
 22.3310 +1975.5 2036.4 m
 22.3311 +1975.2 2028 1976 2019.7 1975.5 2013.4 C
 22.3312 +1971.1 2008.5 1965.6 2003.6 1961.6 1999 C
 22.3313 +1958.8 1998 1956 2000 1953.6 2001.2 C
 22.3314 +1948.2 2004.7 1941.9 2006.5 1937.1 2010.8 C
 22.3315 +1937.5 2018.3 1937.3 2024.7 1937.3 2032.1 C
 22.3316 +1937.6 2025.6 1937.9 2018.4 1937.1 2011.5 C
 22.3317 +1937.3 2011 1937.6 2010.5 1937.8 2010 C
 22.3318 +1944.6 2005.7 1951.9 2002.3 1959.2 1999 C
 22.3319 +1960.1 1998.5 1960.1 1999.8 1960.4 2000.4 C
 22.3320 +1959.7 2006.9 1959.7 2014.2 1959.4 2021.1 C
 22.3321 +1959 2021.1 1959.2 2021.9 1959.2 2022.3 C
 22.3322 +1959.2 2021.9 1959 2021.3 1959.4 2021.1 C
 22.3323 +1959.8 2024.1 1959.2 2026.2 1962.5 2027.3 C
 22.3324 +1963 2029.2 1965.3 2029.2 1965.9 2031.6 C
 22.3325 +1968.3 2031.8 1967.8 2035.2 1971.2 2036 C
 22.3326 +1970.8 2037.2 1971.9 2037.5 1972.8 2037.6 C
 22.3327 +1974.9 2037.4 1973.9 2036.7 1974.3 2035.5 C
 22.3328 +1973.3 2034.7 1974.1 2033.4 1973.6 2032.6 C
 22.3329 +1973.9 2027.3 1973.9 2021.1 1973.6 2016.3 C
 22.3330 +1973 2016 1973.9 2015.6 1974 2015.3 C
 22.3331 +1974.3 2015.9 1975 2015.3 1975.2 2015.8 C
 22.3332 +1975.3 2022.8 1975.1 2031.2 1975.5 2038.6 C
 22.3333 +1977.9 2039 1973.7 2041.8 1976.2 2040 C
 22.3334 +1975.7 2039 1975.5 2037.8 1975.5 2036.4 C
 22.3335 +[0 0.4 1 0]  vc
 22.3336 +f 
 22.3337 +S 
 22.3338 +n
 22.3339 +1991.1 2012.4 m
 22.3340 +1987.5 2014.8 1983.4 2015.6 1979.8 2017.7 C
 22.3341 +1978.5 2015.7 1981 2013.3 1978.1 2012.4 C
 22.3342 +1973.6 2005.8 1966.8 2001.6 1962.3 1995.2 C
 22.3343 +1961.4 1994.7 1960.8 1995 1960.1 1994.7 C
 22.3344 +1962.5 1994.6 1964.6 1997.8 1966.1 1999.7 C
 22.3345 +1969.7 2003.3 1974.2 2007.6 1977.6 2011.5 C
 22.3346 +1977.5 2013.8 1980.6 2013.5 1979.1 2016.5 C
 22.3347 +1979.1 2017 1979 2017.6 1979.3 2018 C
 22.3348 +1983.1 2015.7 1987.8 2015.2 1991.1 2012.4 C
 22.3349 +[0.18 0.18 0 0.78]  vc
 22.3350 +f 
 22.3351 +S 
 22.3352 +n
 22.3353 +1970.9 2004.8 m
 22.3354 +1970 2003.9 1969.2 2003 1968.3 2002.1 C
 22.3355 +1969.2 2003 1970 2003.9 1970.9 2004.8 C
 22.3356 +[0 0.87 0.91 0.83]  vc
 22.3357 +f 
 22.3358 +S 
 22.3359 +n
 22.3360 +1887.9 1994.9 m
 22.3361 +1888.5 1992.3 1891.4 1992.2 1893.2 1990.8 C
 22.3362 +1898.4 1987.5 1904 1984.8 1909.5 1982.2 C
 22.3363 +1909.7 1982.7 1910.3 1982.1 1910.4 1982.7 C
 22.3364 +1909.5 1990.5 1910.1 1996.4 1910 2004.5 C
 22.3365 +1909.1 2003.4 1909.7 2005.8 1909.5 2006.4 C
 22.3366 +1910.4 2006 1909.7 2008 1910.2 2007.9 C
 22.3367 +1911.3 2010.6 1912.5 2012.6 1915.7 2013.4 C
 22.3368 +1915.8 2013.7 1915.5 2014.4 1916 2014.4 C
 22.3369 +1916.3 2015 1915.4 2016 1915.2 2016 C
 22.3370 +1916.1 2015.5 1916.5 2014.5 1916 2013.6 C
 22.3371 +1913.4 2013.3 1913.1 2010.5 1910.9 2009.8 C
 22.3372 +1910.7 2008.8 1910.4 2007.9 1910.2 2006.9 C
 22.3373 +1911.1 1998.8 1909.4 1990.7 1910.7 1982.4 C
 22.3374 +1910 1982.1 1908.9 1982.1 1908.3 1982.4 C
 22.3375 +1901.9 1986.1 1895 1988.7 1888.8 1993 C
 22.3376 +1888 1993.4 1888.4 1994.3 1887.6 1994.7 C
 22.3377 +1888.1 2001.3 1887.8 2008.6 1887.9 2015.1 C
 22.3378 +1887.3 2017.5 1887.9 2015.4 1888.4 2014.4 C
 22.3379 +1887.8 2008 1888.4 2001.3 1887.9 1994.9 C
 22.3380 +[0.07 0.06 0 0.58]  vc
 22.3381 +f 
 22.3382 +S 
 22.3383 +n
 22.3384 +vmrs
 22.3385 +1887.9 2018.4 m
 22.3386 +1887.5 2016.9 1888.5 2016 1888.8 2014.8 C
 22.3387 +1890.1 2014.8 1891.1 2016.6 1892.4 2015.3 C
 22.3388 +1892.4 2014.4 1893.8 2012.9 1894.4 2012.4 C
 22.3389 +1895.9 2012.4 1896.6 2013.9 1897.7 2012.7 C
 22.3390 +1898.4 2011.7 1898.6 2010.4 1899.6 2009.8 C
 22.3391 +1901.7 2009.9 1902.9 2010.4 1904 2009.1 C
 22.3392 +1904.3 2007.4 1904 2007.6 1904.9 2007.2 C
 22.3393 +1906.2 2007 1907.6 2006.5 1908.8 2006.7 C
 22.3394 +1910.6 2008.2 1909.8 2011.5 1912.6 2012 C
 22.3395 +1912.4 2013 1913.8 2012.7 1914 2013.2 C
 22.3396 +1911.5 2011.1 1909.1 2007.9 1909.2 2004.3 C
 22.3397 +1909.5 2003.5 1909.9 2004.9 1909.7 2004.3 C
 22.3398 +1909.9 1996.2 1909.3 1990.5 1910.2 1982.7 C
 22.3399 +1909.5 1982.6 1909.5 1982.6 1908.8 1982.7 C
 22.3400 +1903.1 1985.7 1897 1987.9 1891.7 1992 C
 22.3401 +1890.5 1993 1888.2 1992.9 1888.1 1994.9 C
 22.3402 +1888.7 2001.4 1888.1 2008.4 1888.6 2014.8 C
 22.3403 +1888.3 2016 1887.2 2016.9 1887.6 2018.4 C
 22.3404 +1892.3 2023.9 1897.6 2027.9 1902.3 2033.3 C
 22.3405 +1898 2028.2 1892.1 2023.8 1887.9 2018.4 C
 22.3406 +[0.4 0.4 0 0]  vc
 22.3407 +f 
 22.3408 +0.4 w
 22.3409 +2 J
 22.3410 +2 M
 22.3411 +S 
 22.3412 +n
 22.3413 +1910.9 1995.2 m
 22.3414 +1910.4 1999.8 1911 2003.3 1910.9 2008.1 C
 22.3415 +1910.9 2003.8 1910.9 1999.2 1910.9 1995.2 C
 22.3416 +[0.18 0.18 0 0.78]  vc
 22.3417 +f 
 22.3418 +S 
 22.3419 +n
 22.3420 +1911.2 2004.3 m
 22.3421 +1911.2 2001.9 1911.2 1999.7 1911.2 1997.3 C
 22.3422 +1911.2 1999.7 1911.2 2001.9 1911.2 2004.3 C
 22.3423 +[0 0.87 0.91 0.83]  vc
 22.3424 +f 
 22.3425 +S 
 22.3426 +n
 22.3427 +1958.7 1995.2 m
 22.3428 +1959 1995.6 1956.2 1995 1956.5 1996.8 C
 22.3429 +1955.8 1997.6 1954.2 1998.5 1953.6 1997.3 C
 22.3430 +1953.6 1990.8 1954.9 1989.6 1953.4 1983.9 C
 22.3431 +1953.4 1983.3 1953.3 1982.1 1954.4 1982 C
 22.3432 +1955.5 1982.6 1956.5 1981.3 1957.5 1981 C
 22.3433 +1956.3 1981.8 1954.7 1982.6 1953.9 1981.5 C
 22.3434 +1951.4 1983 1954.7 1988.8 1952.9 1990.6 C
 22.3435 +1953.8 1990.6 1953.2 1992.7 1953.4 1993.7 C
 22.3436 +1953.8 1994.5 1952.3 1996.1 1953.2 1997.8 C
 22.3437 +1956.3 1999.4 1957.5 1994 1959.9 1995.6 C
 22.3438 +1962 1994.4 1963.7 1997.7 1965.2 1998.8 C
 22.3439 +1963.5 1996.7 1961.2 1994.1 1958.7 1995.2 C
 22.3440 +f 
 22.3441 +S 
 22.3442 +n
 22.3443 +1945 2000.7 m
 22.3444 +1945.4 1998.7 1945.4 1997.9 1945 1995.9 C
 22.3445 +1944.5 1995.3 1944.2 1992.6 1945.7 1993.2 C
 22.3446 +1946 1992.2 1948.7 1992.5 1948.4 1990.6 C
 22.3447 +1947.5 1990.3 1948.1 1988.7 1947.9 1988.2 C
 22.3448 +1948.9 1987.8 1950.5 1986.8 1950.5 1984.6 C
 22.3449 +1951.5 1980.9 1946.7 1983 1947.2 1979.8 C
 22.3450 +1944.5 1979.9 1945.2 1976.6 1943.1 1976.7 C
 22.3451 +1941.8 1975.7 1942.1 1972.7 1939.2 1973.8 C
 22.3452 +1938.2 1974.6 1939.3 1971.6 1938.3 1970.9 C
 22.3453 +1938.8 1969.2 1933.4 1970.3 1937.3 1970 C
 22.3454 +1939.4 1971.2 1937.2 1973 1937.6 1974.3 C
 22.3455 +1937.2 1976.3 1937.1 1981.2 1937.8 1984.1 C
 22.3456 +1938.8 1982.3 1937.9 1976.6 1938.5 1973.1 C
 22.3457 +1938.9 1975 1938.5 1976.4 1939.7 1977.2 C
 22.3458 +1939.5 1983.5 1938.9 1991.3 1940.2 1997.3 C
 22.3459 +1939.4 1999.1 1938.6 1997.1 1937.8 1997.1 C
 22.3460 +1937.4 1996.7 1937.6 1996.1 1937.6 1995.6 C
 22.3461 +1936.5 1998.5 1940.1 1998.4 1940.9 2000.7 C
 22.3462 +1942.1 2000.4 1943.2 2001.3 1943.1 2002.4 C
 22.3463 +1943.6 2003.1 1941.1 2004.6 1942.8 2003.8 C
 22.3464 +1943.9 2002.5 1942.6 2000.6 1945 2000.7 C
 22.3465 +[0.65 0.65 0 0.42]  vc
 22.3466 +f 
 22.3467 +S 
 22.3468 +n
 22.3469 +1914.5 2006.4 m
 22.3470 +1914.1 2004.9 1915.2 2004 1915.5 2002.8 C
 22.3471 +1916.7 2002.8 1917.8 2004.6 1919.1 2003.3 C
 22.3472 +1919 2002.4 1920.4 2000.9 1921 2000.4 C
 22.3473 +1922.5 2000.4 1923.2 2001.9 1924.4 2000.7 C
 22.3474 +1925 1999.7 1925.3 1998.4 1926.3 1997.8 C
 22.3475 +1928.4 1997.9 1929.5 1998.4 1930.6 1997.1 C
 22.3476 +1930.9 1995.4 1930.7 1995.6 1931.6 1995.2 C
 22.3477 +1932.8 1995 1934.3 1994.5 1935.4 1994.7 C
 22.3478 +1936.1 1995.8 1936.9 1996.2 1936.6 1997.8 C
 22.3479 +1938.9 1999.4 1939.7 2001.3 1942.4 2002.4 C
 22.3480 +1942.4 2002.5 1942.2 2003 1942.6 2002.8 C
 22.3481 +1942.9 2000.4 1939.2 2001.8 1939.2 1999.7 C
 22.3482 +1936.2 1998.6 1937 1995.3 1935.9 1993.5 C
 22.3483 +1937.1 1986.5 1935.2 1977.9 1937.6 1971.2 C
 22.3484 +1937.6 1970.3 1936.6 1971 1936.4 1970.4 C
 22.3485 +1930.2 1973.4 1924 1976 1918.4 1980 C
 22.3486 +1917.2 1981 1914.9 1980.9 1914.8 1982.9 C
 22.3487 +1915.3 1989.4 1914.7 1996.4 1915.2 2002.8 C
 22.3488 +1914.9 2004 1913.9 2004.9 1914.3 2006.4 C
 22.3489 +1919 2011.9 1924.2 2015.9 1928.9 2021.3 C
 22.3490 +1924.6 2016.2 1918.7 2011.8 1914.5 2006.4 C
 22.3491 +[0.4 0.4 0 0]  vc
 22.3492 +f 
 22.3493 +S 
 22.3494 +n
 22.3495 +1914.5 1982.9 m
 22.3496 +1915.1 1980.3 1918 1980.2 1919.8 1978.8 C
 22.3497 +1925 1975.5 1930.6 1972.8 1936.1 1970.2 C
 22.3498 +1939.4 1970.6 1936.1 1974.2 1936.6 1976.4 C
 22.3499 +1936.5 1981.9 1936.8 1987.5 1936.4 1992.8 C
 22.3500 +1935.9 1992.8 1936.2 1993.5 1936.1 1994 C
 22.3501 +1937.1 1993.6 1936.2 1995.9 1936.8 1995.9 C
 22.3502 +1937 1998 1939.5 1999.7 1940.4 2000.7 C
 22.3503 +1940.1 1998.6 1935 1997.2 1937.6 1993.7 C
 22.3504 +1938.3 1985.7 1935.9 1976.8 1937.8 1970.7 C
 22.3505 +1936.9 1969.8 1935.4 1970.3 1934.4 1970.7 C
 22.3506 +1928.3 1974.4 1921.4 1976.7 1915.5 1981 C
 22.3507 +1914.6 1981.4 1915.1 1982.3 1914.3 1982.7 C
 22.3508 +1914.7 1989.3 1914.5 1996.6 1914.5 2003.1 C
 22.3509 +1913.9 2005.5 1914.5 2003.4 1915 2002.4 C
 22.3510 +1914.5 1996 1915.1 1989.3 1914.5 1982.9 C
 22.3511 +[0.07 0.06 0 0.58]  vc
 22.3512 +f 
 22.3513 +S 
 22.3514 +n
 22.3515 +1939.2 1994.9 m
 22.3516 +1939.3 1995 1939.4 1995.1 1939.5 1995.2 C
 22.3517 +1939.1 1989 1939.3 1981.6 1939 1976.7 C
 22.3518 +1938.6 1976.3 1938.6 1974.6 1938.5 1973.3 C
 22.3519 +1938.7 1976.1 1938.1 1979.4 1939 1981.7 C
 22.3520 +1937.3 1986 1937.7 1991.6 1938 1996.4 C
 22.3521 +1937.3 1994.3 1939.6 1996.2 1939.2 1994.9 C
 22.3522 +[0.18 0.18 0 0.78]  vc
 22.3523 +f 
 22.3524 +S 
 22.3525 +n
 22.3526 +1938.3 1988.4 m
 22.3527 +1938.5 1990.5 1937.9 1994.1 1938.8 1994.7 C
 22.3528 +1937.9 1992.6 1939 1990.6 1938.3 1988.4 C
 22.3529 +[0 0.87 0.91 0.83]  vc
 22.3530 +f 
 22.3531 +S 
 22.3532 +n
 22.3533 +1938.8 1985.8 m
 22.3534 +1938.5 1985.9 1938.4 1985.7 1938.3 1985.6 C
 22.3535 +1938.4 1986.2 1938 1989.5 1938.8 1987.2 C
 22.3536 +1938.8 1986.8 1938.8 1986.3 1938.8 1985.8 C
 22.3537 +f 
 22.3538 +S 
 22.3539 +n
 22.3540 +vmrs
 22.3541 +1972.8 2062.1 m
 22.3542 +1971.9 2061 1972.5 2059.4 1972.4 2058 C
 22.3543 +1972.2 2063.8 1971.9 2073.7 1972.4 2081.3 C
 22.3544 +1972.5 2074.9 1971.9 2067.9 1972.8 2062.1 C
 22.3545 +[0 1 1 0.36]  vc
 22.3546 +f 
 22.3547 +0.4 w
 22.3548 +2 J
 22.3549 +2 M
 22.3550 +S 
 22.3551 +n
 22.3552 +1940.2 2071.7 m
 22.3553 +1941.3 2072 1943.1 2072.3 1944 2071.5 C
 22.3554 +1943.6 2069.9 1945.2 2069.1 1946 2068.8 C
 22.3555 +1950 2071.1 1948.7 2065.9 1951.7 2066.2 C
 22.3556 +1953.5 2063.9 1956.9 2069.4 1955.6 2063.8 C
 22.3557 +1955.5 2064.2 1955.7 2064.8 1955.3 2065 C
 22.3558 +1954.3 2063.7 1956.2 2063.6 1955.6 2062.1 C
 22.3559 +1954.5 2060 1958.3 2050.3 1952.2 2055.6 C
 22.3560 +1949.1 2053.8 1946 2051 1943.8 2048 C
 22.3561 +1940.3 2048 1937.5 2051.3 1934.2 2052.5 C
 22.3562 +1933.1 2054.6 1934.4 2057.3 1934 2060 C
 22.3563 +1934 2065.1 1934 2069.7 1934 2074.6 C
 22.3564 +1934.4 2069 1934.1 2061.5 1934.2 2054.9 C
 22.3565 +1934.6 2054.5 1935.3 2054.7 1935.9 2054.7 C
 22.3566 +1937 2055.3 1935.9 2056.1 1935.9 2056.8 C
 22.3567 +1936.5 2063 1935.6 2070.5 1935.9 2074.6 C
 22.3568 +1936.7 2074.4 1937.3 2075.2 1938 2074.6 C
 22.3569 +1937.9 2073.6 1939.1 2072.1 1940.2 2071.7 C
 22.3570 +[0 0.2 1 0]  vc
 22.3571 +f 
 22.3572 +S 
 22.3573 +n
 22.3574 +1933.2 2074.1 m
 22.3575 +1933.2 2071.5 1933.2 2069 1933.2 2066.4 C
 22.3576 +1933.2 2069 1933.2 2071.5 1933.2 2074.1 C
 22.3577 +[0 1 1 0.36]  vc
 22.3578 +f 
 22.3579 +S 
 22.3580 +n
 22.3581 +2007.4 2048.9 m
 22.3582 +2006.5 2047.8 2007.1 2046.2 2006.9 2044.8 C
 22.3583 +2006.7 2050.6 2006.5 2060.5 2006.9 2068.1 C
 22.3584 +2007.1 2061.7 2006.5 2054.7 2007.4 2048.9 C
 22.3585 +f 
 22.3586 +S 
 22.3587 +n
 22.3588 +1927.2 2062.4 m
 22.3589 +1925.8 2060.1 1928.1 2058.2 1927 2056.4 C
 22.3590 +1927.3 2055.5 1926.5 2053.5 1926.8 2051.8 C
 22.3591 +1926.8 2052.8 1926 2052.5 1925.3 2052.5 C
 22.3592 +1924.1 2052.8 1925 2050.5 1924.4 2050.1 C
 22.3593 +1925.3 2050.2 1925.4 2048.8 1926.3 2049.4 C
 22.3594 +1926.5 2052.3 1928.4 2047.2 1928.4 2051.1 C
 22.3595 +1928.9 2050.5 1929 2051.4 1928.9 2051.8 C
 22.3596 +1928.9 2052 1928.9 2052.3 1928.9 2052.5 C
 22.3597 +1929.4 2051.4 1928.9 2049 1930.1 2048.2 C
 22.3598 +1928.9 2047.1 1930.5 2047.1 1930.4 2046.5 C
 22.3599 +1931.9 2046.2 1933.1 2046.1 1934.7 2046.5 C
 22.3600 +1934.6 2046.9 1935.2 2047.9 1934.4 2048.4 C
 22.3601 +1936.9 2048.1 1933.6 2043.8 1935.9 2043.9 C
 22.3602 +1935.7 2043.9 1934.8 2041.3 1933.2 2041.7 C
 22.3603 +1932.5 2041.6 1932.4 2039.6 1932.3 2041 C
 22.3604 +1930.8 2042.6 1929 2040.6 1927.7 2042 C
 22.3605 +1927.5 2041.4 1927.1 2040.9 1927.2 2040.3 C
 22.3606 +1927.8 2040.6 1927.4 2039.1 1928.2 2038.6 C
 22.3607 +1929.4 2038 1930.5 2038.8 1931.3 2037.9 C
 22.3608 +1931.7 2039 1932.5 2038.6 1931.8 2037.6 C
 22.3609 +1930.9 2037 1928.7 2037.8 1928.2 2037.9 C
 22.3610 +1926.7 2037.8 1928 2039 1927 2038.8 C
 22.3611 +1927.4 2040.4 1925.6 2040.8 1925.1 2041 C
 22.3612 +1924.3 2040.4 1923.2 2040.5 1922.2 2040.5 C
 22.3613 +1921.4 2041.7 1921 2043.9 1919.3 2043.9 C
 22.3614 +1918.8 2043.4 1917.2 2043.3 1916.4 2043.4 C
 22.3615 +1915.9 2044.4 1915.7 2046 1914.3 2046.5 C
 22.3616 +1913.1 2046.6 1912 2044.5 1911.4 2046.3 C
 22.3617 +1912.8 2046.5 1913.8 2047.4 1915.7 2047 C
 22.3618 +1916.9 2047.7 1915.6 2048.8 1916 2049.4 C
 22.3619 +1915.4 2049.3 1913.9 2050.3 1913.3 2051.1 C
 22.3620 +1913.9 2054.1 1916 2050.2 1916.7 2053 C
 22.3621 +1916.9 2053.8 1915.5 2054.1 1916.7 2054.4 C
 22.3622 +1917 2054.7 1920.2 2054.3 1919.3 2056.6 C
 22.3623 +1918.8 2056.1 1920.2 2058.6 1920.3 2057.6 C
 22.3624 +1921.2 2057.9 1922.1 2057.5 1922.4 2059 C
 22.3625 +1922.3 2059.1 1922.2 2059.3 1922 2059.2 C
 22.3626 +1922.1 2059.7 1922.4 2060.3 1922.9 2060.7 C
 22.3627 +1923.2 2060.1 1923.8 2060.4 1924.6 2060.7 C
 22.3628 +1925.9 2062.6 1923.2 2062 1925.6 2063.6 C
 22.3629 +1926.1 2063.1 1927.3 2062.5 1927.2 2062.4 C
 22.3630 +[0.21 0.21 0 0]  vc
 22.3631 +f 
 22.3632 +S 
 22.3633 +n
 22.3634 +1933.2 2063.3 m
 22.3635 +1933.2 2060.7 1933.2 2058.2 1933.2 2055.6 C
 22.3636 +1933.2 2058.2 1933.2 2060.7 1933.2 2063.3 C
 22.3637 +[0 1 1 0.36]  vc
 22.3638 +f 
 22.3639 +S 
 22.3640 +n
 22.3641 +1965.2 2049.2 m
 22.3642 +1967.1 2050.1 1969.9 2053.7 1972.1 2056.4 C
 22.3643 +1970.5 2054 1967.6 2051.3 1965.2 2049.2 C
 22.3644 +f 
 22.3645 +S 
 22.3646 +n
 22.3647 +1991.8 2034.8 m
 22.3648 +1991.7 2041.5 1992 2048.5 1991.6 2055.2 C
 22.3649 +1990.5 2056.4 1991.9 2054.9 1991.8 2054.4 C
 22.3650 +1991.8 2047.9 1991.8 2041.3 1991.8 2034.8 C
 22.3651 +f 
 22.3652 +S 
 22.3653 +n
 22.3654 +1988.9 2053.2 m
 22.3655 +1988.9 2044.3 1988.9 2036.6 1988.9 2028.3 C
 22.3656 +1985.7 2028.2 1987.2 2023.5 1983.9 2024.2 C
 22.3657 +1983.9 2022.4 1982 2021.6 1981 2021.3 C
 22.3658 +1980.6 2021.1 1980.6 2021.7 1980.3 2021.6 C
 22.3659 +1980.3 2027 1980.3 2034.8 1980.3 2041.5 C
 22.3660 +1979.3 2043.2 1977.6 2043 1976.2 2043.6 C
 22.3661 +1977.1 2043.8 1978.5 2043.2 1978.8 2044.1 C
 22.3662 +1978.5 2045.3 1979.9 2045.3 1980.3 2045.8 C
 22.3663 +1980.5 2046.8 1980.7 2046.2 1981.5 2046.5 C
 22.3664 +1982.4 2047.1 1982 2048.6 1982.7 2049.4 C
 22.3665 +1984.2 2049.6 1984.6 2052.2 1986.8 2051.6 C
 22.3666 +1987.1 2048.6 1985.1 2042.7 1986.5 2040.5 C
 22.3667 +1986.3 2036.7 1986.9 2031.7 1986 2029.2 C
 22.3668 +1986.3 2027.1 1986.9 2028.6 1987.7 2027.6 C
 22.3669 +1987.7 2028.3 1988.7 2028 1988.7 2028.8 C
 22.3670 +1988.1 2033 1988.7 2037.5 1988.2 2041.7 C
 22.3671 +1987.8 2041.4 1988 2040.8 1988 2040.3 C
 22.3672 +1988 2041 1988 2042.4 1988 2042.4 C
 22.3673 +1988 2042.4 1988.1 2042.3 1988.2 2042.2 C
 22.3674 +1989.3 2046 1988 2050.2 1988.4 2054 C
 22.3675 +1987.8 2054.4 1987.1 2054.7 1986.5 2055.4 C
 22.3676 +1987.4 2054.4 1988.4 2054.6 1988.9 2053.2 C
 22.3677 +[0 1 1 0.23]  vc
 22.3678 +f 
 22.3679 +S 
 22.3680 +n
 22.3681 +1950.8 2054.4 m
 22.3682 +1949.7 2053.4 1948.7 2052.3 1947.6 2051.3 C
 22.3683 +1948.7 2052.3 1949.7 2053.4 1950.8 2054.4 C
 22.3684 +[0 1 1 0.36]  vc
 22.3685 +f 
 22.3686 +S 
 22.3687 +n
 22.3688 +vmrs
 22.3689 +2006.7 2043.2 m
 22.3690 +2004.5 2040.8 2002.4 2038.4 2000.2 2036 C
 22.3691 +2002.4 2038.4 2004.5 2040.8 2006.7 2043.2 C
 22.3692 +[0 1 1 0.36]  vc
 22.3693 +f 
 22.3694 +0.4 w
 22.3695 +2 J
 22.3696 +2 M
 22.3697 +S 
 22.3698 +n
 22.3699 +1976.7 2019.6 m
 22.3700 +1975.8 2018.6 1976.4 2016.9 1976.2 2015.6 C
 22.3701 +1976 2021.3 1975.8 2031.2 1976.2 2038.8 C
 22.3702 +1976.4 2032.4 1975.8 2025.5 1976.7 2019.6 C
 22.3703 +f 
 22.3704 +S 
 22.3705 +n
 22.3706 +1988.4 2053.5 m
 22.3707 +1988.6 2049.2 1988.1 2042.8 1988 2040 C
 22.3708 +1988.4 2040.4 1988.1 2041 1988.2 2041.5 C
 22.3709 +1988.3 2037.2 1988 2032.7 1988.4 2028.5 C
 22.3710 +1987.6 2027.1 1987.2 2028.6 1986.8 2028 C
 22.3711 +1985.9 2028.5 1986.5 2029.7 1986.3 2030.4 C
 22.3712 +1986.9 2029.8 1986.6 2031 1987 2031.2 C
 22.3713 +1987.4 2039.6 1985 2043 1987.2 2050.4 C
 22.3714 +1987.2 2051.6 1985.9 2052.3 1984.6 2051.3 C
 22.3715 +1981.9 2049.7 1982.9 2047 1980.3 2046.5 C
 22.3716 +1980.3 2045.2 1978.1 2046.2 1978.6 2043.9 C
 22.3717 +1975.6 2043.3 1979.3 2045.6 1979.6 2046.5 C
 22.3718 +1980.8 2046.6 1981.5 2048.5 1982.2 2049.9 C
 22.3719 +1983.7 2050.8 1984.8 2052.8 1986.5 2053 C
 22.3720 +1986.7 2053.5 1987.5 2054.1 1987 2054.7 C
 22.3721 +1987.4 2053.9 1988.3 2054.3 1988.4 2053.5 C
 22.3722 +[0 1 1 0.23]  vc
 22.3723 +f 
 22.3724 +S 
 22.3725 +n
 22.3726 +1988 2038.1 m
 22.3727 +1988 2036.7 1988 2035.4 1988 2034 C
 22.3728 +1988 2035.4 1988 2036.7 1988 2038.1 C
 22.3729 +[0 1 1 0.36]  vc
 22.3730 +f 
 22.3731 +S 
 22.3732 +n
 22.3733 +1999.7 2035.7 m
 22.3734 +1997.6 2033.5 1995.4 2031.2 1993.2 2029 C
 22.3735 +1995.4 2031.2 1997.6 2033.5 1999.7 2035.7 C
 22.3736 +f 
 22.3737 +S 
 22.3738 +n
 22.3739 +1944 2029.2 m
 22.3740 +1945.2 2029.5 1946.9 2029.8 1947.9 2029 C
 22.3741 +1947.4 2027.4 1949 2026.7 1949.8 2026.4 C
 22.3742 +1953.9 2028.6 1952.6 2023.4 1955.6 2023.7 C
 22.3743 +1957.4 2021.4 1960.7 2027 1959.4 2021.3 C
 22.3744 +1959.3 2021.7 1959.6 2022.3 1959.2 2022.5 C
 22.3745 +1958.1 2021.2 1960.1 2021.1 1959.4 2019.6 C
 22.3746 +1959.1 2012.7 1959.9 2005.1 1959.6 1999.2 C
 22.3747 +1955.3 2000.1 1951.3 2003.1 1947.2 2005 C
 22.3748 +1943.9 2006 1941.2 2008.7 1938 2010 C
 22.3749 +1936.9 2012.1 1938.2 2014.8 1937.8 2017.5 C
 22.3750 +1937.8 2022.6 1937.8 2027.3 1937.8 2032.1 C
 22.3751 +1938.2 2026.5 1938 2019 1938 2012.4 C
 22.3752 +1938.5 2012 1939.2 2012.3 1939.7 2012.2 C
 22.3753 +1940.8 2012.8 1939.7 2013.6 1939.7 2014.4 C
 22.3754 +1940.4 2020.5 1939.4 2028 1939.7 2032.1 C
 22.3755 +1940.6 2031.9 1941.2 2032.7 1941.9 2032.1 C
 22.3756 +1941.7 2031.2 1943 2029.7 1944 2029.2 C
 22.3757 +[0 0.2 1 0]  vc
 22.3758 +f 
 22.3759 +S 
 22.3760 +n
 22.3761 +1937.1 2031.6 m
 22.3762 +1937.1 2029.1 1937.1 2026.5 1937.1 2024 C
 22.3763 +1937.1 2026.5 1937.1 2029.1 1937.1 2031.6 C
 22.3764 +[0 1 1 0.36]  vc
 22.3765 +f 
 22.3766 +S 
 22.3767 +n
 22.3768 +1991.8 2028 m
 22.3769 +1992.5 2027.8 1993.2 2029.9 1994 2030.2 C
 22.3770 +1992.9 2029.6 1993.1 2028.1 1991.8 2028 C
 22.3771 +[0 1 1 0.23]  vc
 22.3772 +f 
 22.3773 +S 
 22.3774 +n
 22.3775 +1991.8 2027.8 m
 22.3776 +1992.4 2027.6 1992.6 2028.3 1993 2028.5 C
 22.3777 +1992.6 2028.2 1992.2 2027.6 1991.6 2027.8 C
 22.3778 +1991.6 2028.5 1991.6 2029.1 1991.6 2029.7 C
 22.3779 +1991.6 2029.1 1991.4 2028.3 1991.8 2027.8 C
 22.3780 +[0 1 1 0.36]  vc
 22.3781 +f 
 22.3782 +S 
 22.3783 +n
 22.3784 +1985.8 2025.4 m
 22.3785 +1985.3 2025.2 1984.8 2024.7 1984.1 2024.9 C
 22.3786 +1983.3 2025.3 1983.6 2027.3 1983.9 2027.6 C
 22.3787 +1985 2028 1986.9 2026.9 1985.8 2025.4 C
 22.3788 +[0 1 1 0.23]  vc
 22.3789 +f 
 22.3790 +S 
 22.3791 +n
 22.3792 +vmrs
 22.3793 +1993.5 2024.4 m
 22.3794 +1992.4 2023.7 1991.3 2022.9 1990.1 2023.2 C
 22.3795 +1990.7 2023.7 1989.8 2023.8 1989.4 2023.7 C
 22.3796 +1989.1 2023.7 1988.6 2023.9 1988.4 2023.5 C
 22.3797 +1988.5 2023.2 1988.3 2022.7 1988.7 2022.5 C
 22.3798 +1989 2022.6 1988.9 2023 1988.9 2023.2 C
 22.3799 +1989.1 2022.8 1990.4 2022.3 1990.6 2021.3 C
 22.3800 +1990.4 2021.8 1990 2021.3 1990.1 2021.1 C
 22.3801 +1990.1 2020.9 1990.1 2020.1 1990.1 2020.6 C
 22.3802 +1989.9 2021.1 1989.5 2020.6 1989.6 2020.4 C
 22.3803 +1989.6 2019.8 1988.7 2019.6 1988.2 2019.2 C
 22.3804 +1987.5 2018.7 1987.7 2020.2 1987 2019.4 C
 22.3805 +1987.5 2020.4 1986 2021.1 1987.5 2021.8 C
 22.3806 +1986.8 2023.1 1986.6 2021.1 1986 2021.1 C
 22.3807 +1986.1 2020.1 1985.9 2019 1986.3 2018.2 C
 22.3808 +1986.7 2018.4 1986.5 2019 1986.5 2019.4 C
 22.3809 +1986.5 2018.7 1986.4 2017.8 1987.2 2017.7 C
 22.3810 +1986.5 2017.2 1985.5 2019.3 1985.3 2020.4 C
 22.3811 +1986.2 2022 1987.3 2023.5 1989.2 2024.2 C
 22.3812 +1990.8 2024.3 1991.6 2022.9 1993.2 2024.4 C
 22.3813 +1993.8 2025.4 1995 2026.6 1995.9 2027.1 C
 22.3814 +1995 2026.5 1994.1 2025.5 1993.5 2024.4 C
 22.3815 +[0 1 1 0.36]  vc
 22.3816 +f 
 22.3817 +0.4 w
 22.3818 +2 J
 22.3819 +2 M
 22.3820 +[0 0.5 0.5 0.2]  vc
 22.3821 +S 
 22.3822 +n
 22.3823 +2023 2040.3 m
 22.3824 +2023.2 2036 2022.7 2029.6 2022.5 2026.8 C
 22.3825 +2022.9 2027.2 2022.7 2027.8 2022.8 2028.3 C
 22.3826 +2022.8 2024 2022.6 2019.5 2023 2015.3 C
 22.3827 +2022.2 2013.9 2021.7 2015.4 2021.3 2014.8 C
 22.3828 +2020.4 2015.3 2021 2016.5 2020.8 2017.2 C
 22.3829 +2021.4 2016.6 2021.1 2017.8 2021.6 2018 C
 22.3830 +2022 2026.4 2019.6 2029.8 2021.8 2037.2 C
 22.3831 +2021.7 2038.4 2020.5 2039.1 2019.2 2038.1 C
 22.3832 +2016.5 2036.5 2017.5 2033.8 2014.8 2033.3 C
 22.3833 +2014.9 2032 2012.6 2033 2013.2 2030.7 C
 22.3834 +2011.9 2030.8 2011.2 2030.1 2010.8 2029.2 C
 22.3835 +2010.8 2029.1 2010.8 2028.2 2010.8 2028.8 C
 22.3836 +2010 2028.8 2010.4 2026.5 2008.6 2027.3 C
 22.3837 +2007.9 2026.6 2007.3 2025.9 2007.9 2027.1 C
 22.3838 +2009.7 2028 2010 2030.1 2012.2 2030.9 C
 22.3839 +2012.9 2032.1 2013.7 2033.6 2015.1 2033.6 C
 22.3840 +2015.7 2035.1 2016.9 2036.7 2018.4 2038.4 C
 22.3841 +2019.8 2039.3 2022 2039.4 2021.6 2041.5 C
 22.3842 +2021.9 2040.7 2022.9 2041.1 2023 2040.3 C
 22.3843 +[0 1 1 0.23]  vc
 22.3844 +f 
 22.3845 +S 
 22.3846 +n
 22.3847 +2022.5 2024.9 m
 22.3848 +2022.5 2023.5 2022.5 2022.2 2022.5 2020.8 C
 22.3849 +2022.5 2022.2 2022.5 2023.5 2022.5 2024.9 C
 22.3850 +[0 1 1 0.36]  vc
 22.3851 +f 
 22.3852 +S 
 22.3853 +n
 22.3854 +1983.2 2022.8 m
 22.3855 +1982.4 2022.5 1982.1 2021.6 1981.2 2022.3 C
 22.3856 +1981.1 2022.9 1980.5 2024 1981 2024.2 C
 22.3857 +1981.8 2024.6 1982.9 2024.4 1983.2 2022.8 C
 22.3858 +[0 1 1 0.23]  vc
 22.3859 +f 
 22.3860 +S 
 22.3861 +n
 22.3862 +1931.1 2019.9 m
 22.3863 +1929.6 2017.7 1932 2015.7 1930.8 2013.9 C
 22.3864 +1931.1 2013 1930.3 2011 1930.6 2009.3 C
 22.3865 +1930.6 2010.3 1929.8 2010 1929.2 2010 C
 22.3866 +1928 2010.3 1928.8 2008.1 1928.2 2007.6 C
 22.3867 +1929.1 2007.8 1929.3 2006.3 1930.1 2006.9 C
 22.3868 +1930.3 2009.8 1932.2 2004.8 1932.3 2008.6 C
 22.3869 +1932.7 2008 1932.8 2009 1932.8 2009.3 C
 22.3870 +1932.8 2009.6 1932.8 2009.8 1932.8 2010 C
 22.3871 +1933.2 2009 1932.7 2006.6 1934 2005.7 C
 22.3872 +1932.7 2004.6 1934.3 2004.6 1934.2 2004 C
 22.3873 +1935.8 2003.7 1937 2003.6 1938.5 2004 C
 22.3874 +1938.5 2004.5 1939.1 2005.4 1938.3 2006 C
 22.3875 +1940.7 2005.7 1937.4 2001.3 1939.7 2001.4 C
 22.3876 +1939.5 2001.4 1938.6 1998.8 1937.1 1999.2 C
 22.3877 +1936.3 1999.1 1936.2 1997.1 1936.1 1998.5 C
 22.3878 +1934.7 2000.1 1932.9 1998.2 1931.6 1999.5 C
 22.3879 +1931.3 1998.9 1930.9 1998.5 1931.1 1997.8 C
 22.3880 +1931.6 1998.2 1931.3 1996.6 1932 1996.1 C
 22.3881 +1933.2 1995.5 1934.3 1996.4 1935.2 1995.4 C
 22.3882 +1935.5 1996.5 1936.3 1996.1 1935.6 1995.2 C
 22.3883 +1934.7 1994.5 1932.5 1995.3 1932 1995.4 C
 22.3884 +1930.5 1995.3 1931.9 1996.5 1930.8 1996.4 C
 22.3885 +1931.2 1997.9 1929.5 1998.3 1928.9 1998.5 C
 22.3886 +1928.1 1997.9 1927.1 1998 1926 1998 C
 22.3887 +1925.3 1999.2 1924.8 2001.4 1923.2 2001.4 C
 22.3888 +1922.6 2000.9 1921 2000.9 1920.3 2000.9 C
 22.3889 +1919.7 2001.9 1919.6 2003.5 1918.1 2004 C
 22.3890 +1916.9 2004.1 1915.8 2002 1915.2 2003.8 C
 22.3891 +1916.7 2004 1917.6 2004.9 1919.6 2004.5 C
 22.3892 +1920.7 2005.2 1919.4 2006.3 1919.8 2006.9 C
 22.3893 +1919.2 2006.9 1917.7 2007.8 1917.2 2008.6 C
 22.3894 +1917.8 2011.6 1919.8 2007.8 1920.5 2010.5 C
 22.3895 +1920.8 2011.3 1919.3 2011.6 1920.5 2012 C
 22.3896 +1920.8 2012.3 1924 2011.8 1923.2 2014.1 C
 22.3897 +1922.6 2013.6 1924.1 2016.1 1924.1 2015.1 C
 22.3898 +1925.1 2015.4 1925.9 2015 1926.3 2016.5 C
 22.3899 +1926.2 2016.6 1926 2016.8 1925.8 2016.8 C
 22.3900 +1925.9 2017.2 1926.2 2017.8 1926.8 2018.2 C
 22.3901 +1927.1 2017.6 1927.7 2018 1928.4 2018.2 C
 22.3902 +1929.7 2020.1 1927.1 2019.5 1929.4 2021.1 C
 22.3903 +1929.9 2020.7 1931.1 2020 1931.1 2019.9 C
 22.3904 +[0.21 0.21 0 0]  vc
 22.3905 +f 
 22.3906 +S 
 22.3907 +n
 22.3908 +1937.1 2020.8 m
 22.3909 +1937.1 2018.3 1937.1 2015.7 1937.1 2013.2 C
 22.3910 +1937.1 2015.7 1937.1 2018.3 1937.1 2020.8 C
 22.3911 +[0 1 1 0.36]  vc
 22.3912 +f 
 22.3913 +S 
 22.3914 +n
 22.3915 +2020.4 2012.2 m
 22.3916 +2019.8 2012 2019.3 2011.5 2018.7 2011.7 C
 22.3917 +2017.9 2012.1 2018.1 2014.1 2018.4 2014.4 C
 22.3918 +2019.6 2014.8 2021.4 2013.7 2020.4 2012.2 C
 22.3919 +[0 1 1 0.23]  vc
 22.3920 +f 
 22.3921 +S 
 22.3922 +n
 22.3923 +1976 2013.9 m
 22.3924 +1973.8 2011.5 1971.6 2009.1 1969.5 2006.7 C
 22.3925 +1971.6 2009.1 1973.8 2011.5 1976 2013.9 C
 22.3926 +[0 1 1 0.36]  vc
 22.3927 +f 
 22.3928 +S 
 22.3929 +n
 22.3930 +1995.4 2012.7 m
 22.3931 +1996.1 2010.3 1993.8 2006.2 1997.3 2005.7 C
 22.3932 +1998.9 2005.4 2000 2003.7 2001.4 2003.1 C
 22.3933 +2003.9 2003.1 2005.3 2001.3 2006.9 1999.7 C
 22.3934 +2004.5 2003.5 2000 2002.2 1997.6 2005.7 C
 22.3935 +1996.5 2005.9 1994.8 2006.1 1995.2 2007.6 C
 22.3936 +1995.7 2009.4 1995.2 2011.6 1994.7 2012.9 C
 22.3937 +1992 2015.8 1987.8 2015.7 1985.3 2018.7 C
 22.3938 +1988.3 2016.3 1992.3 2015.3 1995.4 2012.7 C
 22.3939 +[0.18 0.18 0 0.78]  vc
 22.3940 +f 
 22.3941 +S 
 22.3942 +n
 22.3943 +1995.6 2012.4 m
 22.3944 +1995.6 2011.2 1995.6 2010 1995.6 2008.8 C
 22.3945 +1995.6 2010 1995.6 2011.2 1995.6 2012.4 C
 22.3946 +[0 1 1 0.36]  vc
 22.3947 +f 
 22.3948 +S 
 22.3949 +n
 22.3950 +vmrs
 22.3951 +2017.7 2009.6 m
 22.3952 +2016.9 2009.3 2016.7 2008.4 2015.8 2009.1 C
 22.3953 +2014.2 2010.6 2016 2010.6 2016.5 2011.5 C
 22.3954 +2017.2 2010.9 2018.1 2010.8 2017.7 2009.6 C
 22.3955 +[0 1 1 0.23]  vc
 22.3956 +f 
 22.3957 +0.4 w
 22.3958 +2 J
 22.3959 +2 M
 22.3960 +S 
 22.3961 +n
 22.3962 +2014.4 2006.4 m
 22.3963 +2013.5 2006.8 2012.1 2005.6 2012 2006.7 C
 22.3964 +2013 2007.3 2011.9 2009.2 2012.9 2008.4 C
 22.3965 +2014.2 2008.3 2014.6 2007.8 2014.4 2006.4 C
 22.3966 +f 
 22.3967 +S 
 22.3968 +n
 22.3969 +1969 2006.4 m
 22.3970 +1966.5 2003.8 1964 2001.2 1961.6 1998.5 C
 22.3971 +1964 2001.2 1966.5 2003.8 1969 2006.4 C
 22.3972 +[0 1 1 0.36]  vc
 22.3973 +f 
 22.3974 +S 
 22.3975 +n
 22.3976 +2012 2005.2 m
 22.3977 +2012.2 2004.2 2011.4 2003.3 2010.3 2003.3 C
 22.3978 +2009 2003.6 2010 2004.7 2009.6 2004.8 C
 22.3979 +2009.3 2005.7 2011.4 2006.7 2012 2005.2 C
 22.3980 +[0 1 1 0.23]  vc
 22.3981 +f 
 22.3982 +S 
 22.3983 +n
 22.3984 +1962.8 1995.2 m
 22.3985 +1961.7 1994.4 1960.6 1993.7 1959.4 1994 C
 22.3986 +1959.5 1994.9 1957.5 1994.1 1956.8 1994.7 C
 22.3987 +1955.9 1995.5 1956.7 1997 1955.1 1997.3 C
 22.3988 +1956.9 1996.7 1956.8 1994 1959.2 1994.7 C
 22.3989 +1961.1 1991 1968.9 2003.2 1962.8 1995.2 C
 22.3990 +[0 1 1 0.36]  vc
 22.3991 +f 
 22.3992 +S 
 22.3993 +n
 22.3994 +1954.6 1995.6 m
 22.3995 +1955.9 1994.7 1955.1 1989.8 1955.3 1988 C
 22.3996 +1954.5 1988.3 1954.9 1986.6 1954.4 1986 C
 22.3997 +1955.7 1989.2 1953.9 1991.1 1954.8 1994.2 C
 22.3998 +1954.5 1995.9 1953.5 1995.3 1953.9 1997.3 C
 22.3999 +1955.3 1998.3 1953.2 1995.5 1954.6 1995.6 C
 22.4000 +f 
 22.4001 +S 
 22.4002 +n
 22.4003 +1992.3 2011 m
 22.4004 +1992.5 2006.7 1992 2000.3 1991.8 1997.6 C
 22.4005 +1992.2 1997.9 1992 1998.5 1992 1999 C
 22.4006 +1992.1 1994.7 1991.9 1990.2 1992.3 1986 C
 22.4007 +1991.4 1984.6 1991 1986.1 1990.6 1985.6 C
 22.4008 +1989.7 1986 1990.3 1987.2 1990.1 1988 C
 22.4009 +1990.7 1987.4 1990.4 1988.5 1990.8 1988.7 C
 22.4010 +1991.3 1997.1 1988.9 2000.6 1991.1 2007.9 C
 22.4011 +1991 2009.1 1989.8 2009.9 1988.4 2008.8 C
 22.4012 +1985.7 2007.2 1986.8 2004.5 1984.1 2004 C
 22.4013 +1984.2 2002.7 1981.9 2003.7 1982.4 2001.4 C
 22.4014 +1981.2 2001.5 1980.5 2000.8 1980 2000 C
 22.4015 +1980 1999.8 1980 1998.9 1980 1999.5 C
 22.4016 +1979.3 1999.5 1979.7 1997.2 1977.9 1998 C
 22.4017 +1977.2 1997.3 1976.6 1996.7 1977.2 1997.8 C
 22.4018 +1979 1998.7 1979.3 2000.8 1981.5 2001.6 C
 22.4019 +1982.2 2002.8 1983 2004.3 1984.4 2004.3 C
 22.4020 +1985 2005.8 1986.2 2007.5 1987.7 2009.1 C
 22.4021 +1989 2010 1991.3 2010.2 1990.8 2012.2 C
 22.4022 +1991.2 2011.4 1992.2 2011.8 1992.3 2011 C
 22.4023 +[0 1 1 0.23]  vc
 22.4024 +f 
 22.4025 +S 
 22.4026 +n
 22.4027 +1991.8 1995.6 m
 22.4028 +1991.8 1994.3 1991.8 1992.9 1991.8 1991.6 C
 22.4029 +1991.8 1992.9 1991.8 1994.3 1991.8 1995.6 C
 22.4030 +[0 1 1 0.36]  vc
 22.4031 +f 
 22.4032 +S 
 22.4033 +n
 22.4034 +1959.2 1994.2 m
 22.4035 +1958.8 1993.3 1960.7 1993.9 1961.1 1993.7 C
 22.4036 +1961.5 1993.9 1961.2 1994.4 1961.8 1994.2 C
 22.4037 +1960.9 1994 1960.8 1992.9 1959.9 1992.5 C
 22.4038 +1959.6 1993.5 1958.3 1993.5 1958.2 1994.2 C
 22.4039 +1958.1 1994.1 1958 1994 1958 1994 C
 22.4040 +1957.2 1994.9 1958 1993.4 1956.8 1993 C
 22.4041 +1955.6 1992.5 1956 1991 1956.3 1989.9 C
 22.4042 +1956.5 1989.8 1956.6 1990 1956.8 1990.1 C
 22.4043 +1957.1 1989 1956 1989.1 1955.8 1988.2 C
 22.4044 +1955.1 1990.4 1956.2 1995 1954.8 1995.9 C
 22.4045 +1954.1 1995.5 1954.5 1996.5 1954.4 1997.1 C
 22.4046 +1955 1996.8 1954.8 1997.4 1955.6 1996.8 C
 22.4047 +1956 1996 1956.3 1993.2 1958.7 1994.2 C
 22.4048 +1958.9 1994.2 1959.7 1994.2 1959.2 1994.2 C
 22.4049 +[0 1 1 0.23]  vc
 22.4050 +f 
 22.4051 +S 
 22.4052 +n
 22.4053 +1958.2 1994 m
 22.4054 +1958.4 1993.5 1959.7 1993.1 1959.9 1992 C
 22.4055 +1959.7 1992.5 1959.3 1992 1959.4 1991.8 C
 22.4056 +1959.4 1991.6 1959.4 1990.8 1959.4 1991.3 C
 22.4057 +1959.2 1991.8 1958.8 1991.3 1958.9 1991.1 C
 22.4058 +1958.9 1990.5 1958 1990.3 1957.5 1989.9 C
 22.4059 +1956.8 1989.5 1956.9 1991 1956.3 1990.1 C
 22.4060 +1956.7 1991 1955.4 1992.1 1956.5 1992.3 C
 22.4061 +1956.8 1993.5 1958.3 1992.9 1957.2 1994 C
 22.4062 +1957.8 1994.3 1958.1 1992.4 1958.2 1994 C
 22.4063 +[0 0.5 0.5 0.2]  vc
 22.4064 +f 
 22.4065 +S 
 22.4066 +n
 22.4067 +vmrs
 22.4068 +1954.4 1982.7 m
 22.4069 +1956.1 1982.7 1954.1 1982.5 1953.9 1982.9 C
 22.4070 +1953.9 1983.7 1953.7 1984.7 1954.1 1985.3 C
 22.4071 +1954.4 1984.2 1953.6 1983.6 1954.4 1982.7 C
 22.4072 +[0 1 1 0.36]  vc
 22.4073 +f 
 22.4074 +0.4 w
 22.4075 +2 J
 22.4076 +2 M
 22.4077 +S 
 22.4078 +n
 22.4079 +1989.6 1982.9 m
 22.4080 +1989.1 1982.7 1988.6 1982.3 1988 1982.4 C
 22.4081 +1987.2 1982.8 1987.4 1984.8 1987.7 1985.1 C
 22.4082 +1988.9 1985.6 1990.7 1984.4 1989.6 1982.9 C
 22.4083 +[0 1 1 0.23]  vc
 22.4084 +f 
 22.4085 +S 
 22.4086 +n
 22.4087 +1987 1980.3 m
 22.4088 +1986.2 1980 1986 1979.1 1985.1 1979.8 C
 22.4089 +1983.5 1981.4 1985.3 1981.4 1985.8 1982.2 C
 22.4090 +1986.5 1981.7 1987.4 1981.5 1987 1980.3 C
 22.4091 +f 
 22.4092 +S 
 22.4093 +n
 22.4094 +1983.6 1977.2 m
 22.4095 +1982.7 1977.5 1981.4 1976.3 1981.2 1977.4 C
 22.4096 +1982.3 1978 1981.2 1979.9 1982.2 1979.1 C
 22.4097 +1983.5 1979 1983.9 1978.5 1983.6 1977.2 C
 22.4098 +f 
 22.4099 +S 
 22.4100 +n
 22.4101 +1981.2 1976 m
 22.4102 +1981.5 1974.9 1980.6 1974 1979.6 1974 C
 22.4103 +1978.3 1974.3 1979.3 1975.4 1978.8 1975.5 C
 22.4104 +1978.6 1976.4 1980.7 1977.4 1981.2 1976 C
 22.4105 +f 
 22.4106 +S 
 22.4107 +n
 22.4108 +1972.1 2082.3 m
 22.4109 +1971.8 2081.8 1971.3 2080.9 1971.2 2080.1 C
 22.4110 +1971.1 2072.9 1971.3 2064.6 1970.9 2058.3 C
 22.4111 +1970.3 2058.5 1970.1 2057.7 1969.7 2058.5 C
 22.4112 +1970.6 2058.5 1969.7 2059 1970.2 2059.2 C
 22.4113 +1970.2 2065.4 1970.2 2072.4 1970.2 2077.7 C
 22.4114 +1971.1 2078.9 1970.6 2078.9 1970.4 2079.9 C
 22.4115 +1969.2 2080.2 1968.2 2080.4 1967.3 2079.6 C
 22.4116 +1966.8 2077.8 1963.4 2076.3 1963.5 2075.1 C
 22.4117 +1961.5 2075.5 1962 2071.5 1959.6 2072 C
 22.4118 +1959.2 2070 1956.5 2069.3 1955.8 2067.6 C
 22.4119 +1956 2068.4 1955.3 2069.7 1956.5 2069.8 C
 22.4120 +1958.6 2068.9 1958.1 2073.5 1960.1 2072.4 C
 22.4121 +1960.7 2075.9 1964.7 2074.6 1964.2 2078 C
 22.4122 +1967.2 2078.6 1967.9 2081.6 1970.7 2080.6 C
 22.4123 +1970.3 2081.1 1971.5 2081.2 1971.9 2082.3 C
 22.4124 +1967.2 2084.3 1962.9 2087.1 1958.2 2089 C
 22.4125 +1962.9 2087 1967.4 2084.4 1972.1 2082.3 C
 22.4126 +[0 0.2 1 0]  vc
 22.4127 +f 
 22.4128 +S 
 22.4129 +n
 22.4130 +1971.9 2080.1 m
 22.4131 +1971.9 2075.1 1971.9 2070 1971.9 2065 C
 22.4132 +1971.9 2070 1971.9 2075.1 1971.9 2080.1 C
 22.4133 +[0 1 1 0.23]  vc
 22.4134 +f 
 22.4135 +S 
 22.4136 +n
 22.4137 +2010.8 2050.6 m
 22.4138 +2013.2 2049 2010.5 2050.1 2010.5 2051.3 C
 22.4139 +2010.5 2057.7 2010.5 2064.1 2010.5 2070.5 C
 22.4140 +2008.7 2072.4 2006 2073.3 2003.6 2074.4 C
 22.4141 +2016.4 2073.7 2008 2058.4 2010.8 2050.6 C
 22.4142 +[0.4 0.4 0 0]  vc
 22.4143 +f 
 22.4144 +S 
 22.4145 +n
 22.4146 +2006.4 2066.9 m
 22.4147 +2006.4 2061.9 2006.4 2056.8 2006.4 2051.8 C
 22.4148 +2006.4 2056.8 2006.4 2061.9 2006.4 2066.9 C
 22.4149 +[0 1 1 0.23]  vc
 22.4150 +f 
 22.4151 +S 
 22.4152 +n
 22.4153 +1971.9 2060.7 m
 22.4154 +1972.2 2060.3 1971.4 2068.2 1972.4 2061.9 C
 22.4155 +1971.8 2061.6 1972.4 2060.9 1971.9 2060.7 C
 22.4156 +f 
 22.4157 +S 
 22.4158 +n
 22.4159 +vmrs
 22.4160 +1986.5 2055.2 m
 22.4161 +1987.5 2054.3 1986.3 2053.4 1986 2052.8 C
 22.4162 +1983.8 2052.7 1983.6 2050.1 1981.7 2049.6 C
 22.4163 +1981.2 2048.7 1980.8 2047 1980.3 2046.8 C
 22.4164 +1978.5 2047 1978 2044.6 1976.7 2043.9 C
 22.4165 +1974 2044.4 1972 2046.6 1969.2 2047 C
 22.4166 +1969 2047.2 1968.8 2047.5 1968.5 2047.7 C
 22.4167 +1970.6 2049.6 1973.1 2051.3 1974.3 2054.2 C
 22.4168 +1975.7 2054.5 1977 2055.2 1976.4 2057.1 C
 22.4169 +1976.7 2058 1975.5 2058.5 1976 2059.5 C
 22.4170 +1979.2 2058 1983 2056.6 1986.5 2055.2 C
 22.4171 +[0 0.5 0.5 0.2]  vc
 22.4172 +f 
 22.4173 +0.4 w
 22.4174 +2 J
 22.4175 +2 M
 22.4176 +S 
 22.4177 +n
 22.4178 +1970.2 2054.2 m
 22.4179 +1971.5 2055.3 1972.5 2056.8 1972.1 2058.3 C
 22.4180 +1972.8 2056.5 1971.6 2055.6 1970.2 2054.2 C
 22.4181 +[0 1 1 0.23]  vc
 22.4182 +f 
 22.4183 +S 
 22.4184 +n
 22.4185 +1992 2052.5 m
 22.4186 +1992 2053.4 1992.2 2054.4 1991.8 2055.2 C
 22.4187 +1992.2 2054.4 1992 2053.4 1992 2052.5 C
 22.4188 +f 
 22.4189 +S 
 22.4190 +n
 22.4191 +1957.2 2053 m
 22.4192 +1958.1 2052.6 1959 2052.2 1959.9 2051.8 C
 22.4193 +1959 2052.2 1958.1 2052.6 1957.2 2053 C
 22.4194 +f 
 22.4195 +S 
 22.4196 +n
 22.4197 +2006.4 2047.5 m
 22.4198 +2006.8 2047.1 2006 2055 2006.9 2048.7 C
 22.4199 +2006.4 2048.4 2007 2047.7 2006.4 2047.5 C
 22.4200 +f 
 22.4201 +S 
 22.4202 +n
 22.4203 +2004.8 2041 m
 22.4204 +2006.1 2042.1 2007.1 2043.6 2006.7 2045.1 C
 22.4205 +2007.3 2043.3 2006.2 2042.4 2004.8 2041 C
 22.4206 +f 
 22.4207 +S 
 22.4208 +n
 22.4209 +1976 2039.8 m
 22.4210 +1975.6 2039.3 1975.2 2038.4 1975 2037.6 C
 22.4211 +1974.9 2030.4 1975.2 2022.1 1974.8 2015.8 C
 22.4212 +1974.2 2016 1974 2015.3 1973.6 2016 C
 22.4213 +1974.4 2016 1973.5 2016.5 1974 2016.8 C
 22.4214 +1974 2022.9 1974 2030 1974 2035.2 C
 22.4215 +1974.9 2036.4 1974.4 2036.4 1974.3 2037.4 C
 22.4216 +1973.1 2037.7 1972 2037.9 1971.2 2037.2 C
 22.4217 +1970.6 2035.3 1967.3 2033.9 1967.3 2032.6 C
 22.4218 +1965.3 2033 1965.9 2029.1 1963.5 2029.5 C
 22.4219 +1963 2027.6 1960.4 2026.8 1959.6 2025.2 C
 22.4220 +1959.8 2025.9 1959.2 2027.2 1960.4 2027.3 C
 22.4221 +1962.5 2026.4 1961.9 2031 1964 2030 C
 22.4222 +1964.6 2033.4 1968.5 2032.1 1968 2035.5 C
 22.4223 +1971 2036.1 1971.8 2039.1 1974.5 2038.1 C
 22.4224 +1974.2 2038.7 1975.3 2038.7 1975.7 2039.8 C
 22.4225 +1971 2041.8 1966.7 2044.6 1962 2046.5 C
 22.4226 +1966.8 2044.5 1971.3 2041.9 1976 2039.8 C
 22.4227 +[0 0.2 1 0]  vc
 22.4228 +f 
 22.4229 +S 
 22.4230 +n
 22.4231 +1975.7 2037.6 m
 22.4232 +1975.7 2032.6 1975.7 2027.6 1975.7 2022.5 C
 22.4233 +1975.7 2027.6 1975.7 2032.6 1975.7 2037.6 C
 22.4234 +[0 1 1 0.23]  vc
 22.4235 +f 
 22.4236 +S 
 22.4237 +n
 22.4238 +1992 2035.5 m
 22.4239 +1992 2034.2 1992 2032.9 1992 2031.6 C
 22.4240 +1992 2032.9 1992 2034.2 1992 2035.5 C
 22.4241 +f 
 22.4242 +S 
 22.4243 +n
 22.4244 +2015.3 2036 m
 22.4245 +2015.4 2034.1 2013.3 2034 2012.9 2033.3 C
 22.4246 +2011.5 2031 2009.3 2029.4 2007.4 2028 C
 22.4247 +2006.9 2027.1 2006.6 2023.8 2005 2024.9 C
 22.4248 +2004 2024.9 2002.9 2024.9 2001.9 2024.9 C
 22.4249 +2001.4 2026.5 2001 2028.4 2003.8 2028.3 C
 22.4250 +2006.6 2030.4 2008.9 2033.7 2011.2 2036.2 C
 22.4251 +2011.8 2036.4 2012.9 2035.8 2012.9 2036.7 C
 22.4252 +2013 2035.5 2015.3 2037.4 2015.3 2036 C
 22.4253 +[0 0 0 0]  vc
 22.4254 +f 
 22.4255 +S 
 22.4256 +n
 22.4257 +vmrs
 22.4258 +2009.1 2030.4 m
 22.4259 +2009.1 2029 2007.5 2029.4 2006.9 2028.3 C
 22.4260 +2007.2 2027.1 2006.5 2025.5 2005.7 2024.7 C
 22.4261 +2004.6 2025.1 2003.1 2024.9 2001.9 2024.9 C
 22.4262 +2001.8 2026.2 2000.9 2027 2002.4 2028 C
 22.4263 +2004.5 2027.3 2004.9 2029.4 2006.9 2029 C
 22.4264 +2007 2030.2 2007.6 2030.7 2008.4 2031.4 C
 22.4265 +2008.8 2031.5 2009.1 2031.1 2009.1 2030.4 C
 22.4266 +[0 0 0 0.18]  vc
 22.4267 +f 
 22.4268 +0.4 w
 22.4269 +2 J
 22.4270 +2 M
 22.4271 +S 
 22.4272 +n
 22.4273 +2003.8 2029.5 m
 22.4274 +2003 2029.4 2001.9 2029.1 2002.4 2030.4 C
 22.4275 +2003.1 2031.3 2005.2 2030.3 2003.8 2029.5 C
 22.4276 +[0 1 1 0.23]  vc
 22.4277 +f 
 22.4278 +S 
 22.4279 +n
 22.4280 +1999.2 2025.2 m
 22.4281 +1999.1 2025.6 1998 2025.7 1998.8 2026.6 C
 22.4282 +2000.9 2028.5 1999.5 2023.4 1999.2 2025.2 C
 22.4283 +f 
 22.4284 +S 
 22.4285 +n
 22.4286 +2007.6 2024.2 m
 22.4287 +2007.6 2022.9 2008.4 2024.2 2007.6 2022.8 C
 22.4288 +2007.6 2017.5 2007.8 2009.1 2007.4 2003.8 C
 22.4289 +2007.9 2003.7 2008.7 2002.8 2009.1 2002.1 C
 22.4290 +2009.6 2000.8 2008.3 2000.8 2007.9 2000.2 C
 22.4291 +2004.9 2000 2008.9 2001.3 2007.2 2002.1 C
 22.4292 +2006.7 2007.7 2007 2015.1 2006.9 2021.1 C
 22.4293 +2006.7 2022.1 2005.4 2022.8 2006.2 2023.5 C
 22.4294 +2006.6 2023.1 2008 2025.9 2007.6 2024.2 C
 22.4295 +f 
 22.4296 +S 
 22.4297 +n
 22.4298 +1989.9 2023.5 m
 22.4299 +1989.5 2022.6 1991.4 2023.2 1991.8 2023 C