(* Content-type: application/vnd.wolfram.mathematica *)

(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)

(* CreatedBy='Mathematica 8.0' *)

(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[       157,          7]
NotebookDataLength[     64211,       1484]
NotebookOptionsPosition[     58661,       1296]
NotebookOutlinePosition[     59989,       1340]
CellTagsIndexPosition[     59827,       1333]
WindowFrame->Normal*)

(* Beginning of Notebook Content *)
Notebook[{

Cell[CellGroupData[{
Cell["PwM`Chap12Optimizing`", "Section",
 InitializationGroup->True],

Cell[TextData[{
 StyleBox["From",
  FontWeight->"Bold"],
 ": ",
 StyleBox[ButtonBox["Programming with Mathematica: An Introduction",
  BaseStyle->"Hyperlink",
  ButtonData->{
    URL["http://www.cambridge.org/wellin"], None},
  ButtonNote->"http://www.cambridge.org/wellin"],
  FontSlant->"Italic",
  FontVariations->{"Underline"->True}]
}], "Text",
 CellMargins->{{28, 10}, {7, 7}},
 FontSize->14],

Cell[CellGroupData[{

Cell["Metadata", "Subsection"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{":", 
   RowBox[{"Name", ":", " ", "PwM`Chap12Optimizing`"}]}], " ", 
  "*)"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{":", 
   RowBox[{"Book", ":", " ", 
    RowBox[{"Programming", " ", "with", " ", 
     RowBox[{"Mathematica", ":", " ", 
      RowBox[{"An", " ", "Introduction"}]}]}]}]}], " ", "*)"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{":", 
   RowBox[{"Author", ":", " ", 
    RowBox[{"Paul", " ", "Wellin"}]}]}], " ", "*)"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{
   RowBox[{":", 
    RowBox[{"Summary", ":", " ", 
     RowBox[{
     "This", " ", "package", " ", "contains", " ", "the", " ", "functions", 
      " ", "defined", " ", "in", " ", "Chapter", " ", "12"}]}]}], ",", " ", 
   RowBox[{"Optimizing", " ", "Mathematica", " ", 
    RowBox[{"programs", "."}]}]}], " ", "*)"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{":", 
   RowBox[{"Context", ":", " ", "PwM`Chap12Optimizing`"}]}], " ", 
  "*)"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{":", 
   RowBox[{"Package", " ", 
    RowBox[{"Version", ":", " ", "1.0"}]}]}], " ", "*)"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{
   RowBox[{":", 
    RowBox[{"Copyright", ":", " ", 
     RowBox[{"Copyright", " ", "2012"}]}]}], ",", " ", 
   RowBox[{"Cambridge", " ", "University", " ", "Press"}]}], " ", 
  "*)"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{
   RowBox[{":", 
    RowBox[{"History", ":", " ", 
     RowBox[{
     "Version", " ", "1.0", " ", "by", " ", "Paul", " ", "Wellin"}]}]}], ",", 
   " ", 
   RowBox[{"Dec", " ", "2012"}]}], " ", "*)"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{
   RowBox[{":", 
    RowBox[{"Keywords", ":", " ", "timing"}]}], ",", " ", "blanagrams", ",", 
   " ", 
   RowBox[{"Mandebrot", " ", "set"}], ",", " ", 
   RowBox[{"sieving", " ", "algorithms"}]}], " ", "*)"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{":", 
   RowBox[{"Source", ":", " ", 
    RowBox[{"Chap12Optimizing", ".", "nb"}]}]}], " ", "*)"}]], "Input"],

Cell[BoxData[
 RowBox[{"(*", " ", 
  RowBox[{":", 
   RowBox[{"Mathematica", " ", 
    RowBox[{"Version", ":", " ", 
     RowBox[{"8.0", ".4"}]}]}]}], " ", "*)"}]], "Input"]
}, Closed]],

Cell[CellGroupData[{

Cell["BeginPackage", "Subsection"],

Cell[BoxData[
 RowBox[{"Remove", "[", "Sieve", "]"}]], "Input"],

Cell[BoxData[
 RowBox[{"BeginPackage", "[", 
  RowBox[{"\"\<PwM`Chap12Optimizing`\>\"", ",", 
   RowBox[{"{", "\"\<PwM`Chap09Strings`\>\"", "}"}]}], "]"}]], "Input"]
}, Closed]],

Cell[CellGroupData[{

Cell["Usage messages for public functions", "Subsection"],

Cell[BoxData[
 RowBox[{
  RowBox[{
   RowBox[{"AverageTiming", "::", "usage"}], "=", "\"\<AverageTiming[\!\(\*
StyleBox[\"expr\", \"TI\"]\), \!\(\*
StyleBox[\"trials\", \"TI\"]\)] evaluates \!\(\*
StyleBox[\"expr\", \"TI\"]\) a number of times given by \!\(\*
StyleBox[\"trials\", \"TI\"]\) and averages the evaluation timings.\>\""}], 
  ";"}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{
   RowBox[{"BlanagramsParallel", "::", "usage"}], "=", 
   "\"\<BlanagramsParallel[\\\"\!\(\*
StyleBox[\"word\", \"TI\"]\)\\\"] finds all blanagrams of the string, \!\(\*
StyleBox[\"word\", \"TI\"]\), running the computation in parallel. It \
requires the package PwM`Chap09Strings` to be installed.\>\""}], 
  ";"}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{
   RowBox[{"Mandelbrot", "::", "usage"}], "=", "\"\<Mandelbrot[\!\(\*
StyleBox[\"c\", \"TI\"]\)] iterates the function \!\(\*SuperscriptBox[
StyleBox[\"z\", \"TI\"], \"2\"]\) + \!\(\*
StyleBox[\"c\", \"TI\"]\) until its absolute value is greater than two. It \
returns the length of the iteration; if unbounded, it returns the iteration \
limit, which is, by default, equal to 250.\>\""}], ";"}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{
   RowBox[{"Sieve", "::", "usage"}], "=", "\"\<Sieve[\!\(\*
StyleBox[\"n\", \"TI\"]\)] uses a sieving algorithm due to Eratosthenes to \
find all prime numbers less than \!\(\*
StyleBox[\"n\", \"TI\"]\).\>\""}], ";"}]], "Input"]
}, Closed]],

Cell["Options", "Subsection"],

Cell[CellGroupData[{

Cell["Private context", "Subsection"],

Cell[BoxData[
 RowBox[{"Begin", "[", "\"\<`Private`\>\"", "]"}]], "Input"]
}, Closed]],

Cell[CellGroupData[{

Cell["Function definitions (public and private)", "Subsection"],

Cell[BoxData[
 RowBox[{"SetAttributes", "[", 
  RowBox[{"AverageTiming", ",", "HoldAll"}], "]"}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{"AverageTiming", "[", 
   RowBox[{"expr_", ",", "trials_"}], "]"}], ":=", 
  RowBox[{"Mean", "[", 
   RowBox[{"Table", "[", 
    RowBox[{
     RowBox[{"First", "[", 
      RowBox[{"AbsoluteTiming", "[", "expr", "]"}], "]"}], ",", 
     RowBox[{"{", "trials", "}"}]}], "]"}], "]"}]}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{"BlanagramsParallel", "[", "word_String", "]"}], ":=", 
  RowBox[{"Module", "[", 
   RowBox[{
    RowBox[{"{", "blana", "}"}], ",", "\[IndentingNewLine]", 
    RowBox[{
     RowBox[{"ParallelNeeds", "[", "\"\<PwM`Chap09Strings`\>\"", "]"}], ";", 
     "\[IndentingNewLine]", 
     RowBox[{"blana", "=", 
      RowBox[{"Table", "[", "\[IndentingNewLine]", 
       RowBox[{
        RowBox[{"Map", "[", 
         RowBox[{
          RowBox[{
           RowBox[{"StringReplacePart", "[", 
            RowBox[{"word", ",", "ch", ",", 
             RowBox[{"{", 
              RowBox[{"#", ",", "#"}], "}"}]}], "]"}], "&"}], ",", 
          RowBox[{"Range", "[", 
           RowBox[{"StringLength", "[", "word", "]"}], "]"}]}], "]"}], ",", 
        "\[IndentingNewLine]", 
        RowBox[{"{", 
         RowBox[{"ch", ",", 
          RowBox[{"CharacterRange", "[", 
           RowBox[{"\"\<a\>\"", ",", "\"\<z\>\""}], "]"}]}], "}"}]}], "]"}]}],
      ";", "\[IndentingNewLine]", 
     RowBox[{"DeleteDuplicates", "@", 
      RowBox[{"Flatten", "[", 
       RowBox[{"ParallelMap", "[", 
        RowBox[{"PwM`Chap09Strings`Anagrams", ",", "blana", ",", 
         RowBox[{"{", "2", "}"}]}], "]"}], "]"}]}]}]}], "\[IndentingNewLine]",
    "]"}]}]], "Input"],

Cell[BoxData[
 RowBox[{
  RowBox[{"Mandelbrot", "[", 
   RowBox[{"c_Complex", ",", 
    RowBox[{"iter_:", "250"}]}], "]"}], ":=", 
  RowBox[{"Length", "[", 
   RowBox[{"NestWhileList", "[", 
    RowBox[{
     RowBox[{
      RowBox[{
       RowBox[{"#", "^", "2"}], "+", "c"}], "&"}], ",", "0", ",", 
     RowBox[{
      RowBox[{
       RowBox[{"Abs", "[", "#", "]"}], "<", "2"}], "&"}], ",", "1", ",", 
     "iter"}], "]"}], "]"}]}]], "Input", "ExerciseMR",
 CellTags->"12.3 Exercises"],

Cell[BoxData[
 RowBox[{
  RowBox[{"Sieve", "[", "n_Integer", "]"}], ":=", 
  RowBox[{"Module", "[", 
   RowBox[{
    RowBox[{"{", 
     RowBox[{"ints", "=", 
      RowBox[{"Range", "[", "n", "]"}]}], "}"}], ",", "\[IndentingNewLine]", 
    RowBox[{
     RowBox[{"Do", "[", 
      RowBox[{
       RowBox[{
        RowBox[{"ints", "[", 
         RowBox[{"[", 
          RowBox[{
           RowBox[{"2", " ", "p"}], ";;", 
           RowBox[{"-", "1"}], ";;", "p"}], "]"}], "]"}], "=", "1"}], ",", 
       "\[IndentingNewLine]", 
       RowBox[{"{", 
        RowBox[{"p", ",", "2", ",", 
         SqrtBox["n"]}], "}"}]}], "]"}], ";", "\[IndentingNewLine]", 
     RowBox[{"DeleteCases", "[", 
      RowBox[{"ints", ",", "1"}], "]"}]}]}], "]"}]}]], "Input"]
}, Closed]],

Cell[CellGroupData[{

Cell["End private context", "Subsection"],

Cell[BoxData[
 RowBox[{"End", "[", "]"}]], "Input"]
}, Closed]],

Cell[CellGroupData[{

Cell["EndPackage", "Subsection"],

Cell[BoxData[
 RowBox[{"EndPackage", "[", "]"}]], "Input"]
}, Closed]]
}, Open  ]],

Cell[CellGroupData[{

Cell["Examples", "Section"],

Cell[CellGroupData[{

Cell["Load package", "Subsection"],

Cell["Quit current session:", "Text"],

Cell[BoxData["Quit"], "Input"],

Cell[TextData[{
 "Load package (do ",
 StyleBox["not",
  FontSlant->"Italic"],
 " say \[OpenCurlyDoubleQuote]Yes\[CloseCurlyDoubleQuote] to evaluate init \
cells dialog)."
}], "Text"],

Cell[BoxData[
 RowBox[{"<<", "PWM`Chap12Optimizing`"}]], "Input"]
}, Closed]],

Cell[CellGroupData[{

Cell["Test usage messages", "Subsection"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"?", "AverageTiming"}]], "Input"],

Cell[BoxData[
 StyleBox["\<\"AverageTiming[\!\(\*\\nStyleBox[\\\"expr\\\", \\\"TI\\\"]\), \
\!\(\*\\nStyleBox[\\\"trials\\\", \\\"TI\\\"]\)] evaluates \!\(\*\\nStyleBox[\
\\\"expr\\\", \\\"TI\\\"]\) a number of times given by \
\!\(\*\\nStyleBox[\\\"trials\\\", \\\"TI\\\"]\) and averages the evaluation \
timings.\"\>", "MSG"]], "Print", "PrintUsage",
 CellTags->"Info3563779584-8201795"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"?", "BlanagramsParallel"}]], "Input"],

Cell[BoxData[
 StyleBox["\<\"BlanagramsParallel[\\\"\!\(\*\\nStyleBox[\\\"word\\\", \
\\\"TI\\\"]\)\\\"] finds all blanagrams of the string, \
\!\(\*\\nStyleBox[\\\"word\\\", \\\"TI\\\"]\), running the computation in \
parallel. It requires the package PwM`Chap09Strings` to be installed.\"\>", 
  "MSG"]], "Print", "PrintUsage",
 CellTags->"Info3563779585-8201795"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"?", "Mandelbrot"}]], "Input"],

Cell[BoxData[
 StyleBox["\<\"Mandelbrot[\!\(\*\\nStyleBox[\\\"c\\\", \\\"TI\\\"]\)] \
iterates the function \!\(\*SuperscriptBox[\\nStyleBox[\\\"z\\\", \
\\\"TI\\\"], \(2\)]\) + \!\(\*\\nStyleBox[\\\"c\\\", \\\"TI\\\"]\) until its \
absolute value is greater than two. It returns the length of the iteration; \
if unbounded, it returns the iteration limit, which is, by default, equal to \
250.\"\>", "MSG"]], "Print", "PrintUsage",
 CellTags->"Info3563779585-8201795"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"?", "Sieve"}]], "Input"],

Cell[BoxData[
 StyleBox["\<\"Sieve[\!\(\*\\nStyleBox[\\\"n\\\", \\\"TI\\\"]\)] uses a \
sieving algorithm due to Eratosthenes to find all prime numbers less than \
\!\(\*\\nStyleBox[\\\"n\\\", \\\"TI\\\"]\).\"\>", "MSG"]], "Print", \
"PrintUsage",
 CellTags->"Info3563779585-8201795"]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell["Exercise the functions and options", "Subsection"],

Cell[CellGroupData[{

Cell["AverageTiming", "Subsubsection"],

Cell[CellGroupData[{

Cell[BoxData[{
 RowBox[{
  RowBox[{"mat", "=", 
   RowBox[{"RandomReal", "[", 
    RowBox[{"1", ",", 
     RowBox[{"{", 
      RowBox[{"1000", ",", "1000"}], "}"}]}], "]"}]}], 
  ";"}], "\[IndentingNewLine]", 
 RowBox[{"AbsoluteTiming", "[", 
  RowBox[{
   RowBox[{"mat", ".", "mat"}], ";"}], "]"}]}], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0.152022`5.6334514353040746", ",", "Null"}], "}"}]], "Output"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"AverageTiming", "[", 
  RowBox[{
   RowBox[{"mat", ".", "mat"}], ",", "5"}], "]"}]], "Input"],

Cell[BoxData["0.1501352`5.628027520339805"], "Output"]
}, Open  ]],

Cell["\<\
For a compound expression, you could either enclose the subexpressions in a \
list or separate them with semicolons.\
\>", "TextFirst"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"AverageTiming", "[", 
  RowBox[{
   RowBox[{"{", "\[IndentingNewLine]", 
    RowBox[{
     RowBox[{"mat", ".", "mat"}], ",", "\[IndentingNewLine]", 
     RowBox[{"Inverse", "[", "mat", "]"}], ",", "\[IndentingNewLine]", 
     RowBox[{"Det", "[", "mat", "]"}]}], "\[IndentingNewLine]", "}"}], ",", 
   "3"}], "]"}]], "Input"],

Cell[BoxData["0.408417`6.062648804414598"], "Output"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"AverageTiming", "[", "\[IndentingNewLine]", 
  RowBox[{
   RowBox[{
    RowBox[{"mat", ".", "mat"}], ";", "\[IndentingNewLine]", 
    RowBox[{"Inverse", "[", "mat", "]"}], ";", "\[IndentingNewLine]", 
    RowBox[{"Det", "[", "mat", "]"}], ";"}], ",", "\[IndentingNewLine]", 
   "3"}], "]"}]], "Input"],

Cell[BoxData["0.41289633333333333333333333333333333333`6.067386019697942"], \
"Output"]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell["BlanagramsParallel", "Subsubsection"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{
  RowBox[{"BlanagramsParallel", "[", "\"\<strand\>\"", "]"}], "//", 
  "AbsoluteTiming"}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"6.936485`7.292684444956594", ",", 
   RowBox[{"{", 
    RowBox[{"\<\"strand\"\>", ",", "\<\"brands\"\>", ",", "\<\"ardent\"\>", 
     ",", "\<\"ranted\"\>", ",", "\<\"sander\"\>", ",", "\<\"snared\"\>", 
     ",", "\<\"trends\"\>", ",", "\<\"daters\"\>", ",", "\<\"stared\"\>", 
     ",", "\<\"trades\"\>", ",", "\<\"treads\"\>", ",", "\<\"astern\"\>", 
     ",", "\<\"drafts\"\>", ",", "\<\"grands\"\>", ",", "\<\"grants\"\>", 
     ",", "\<\"dinars\"\>", ",", "\<\"drains\"\>", ",", "\<\"nadirs\"\>", 
     ",", "\<\"triads\"\>", ",", "\<\"strain\"\>", ",", "\<\"trains\"\>", 
     ",", "\<\"adorns\"\>", ",", "\<\"stands\"\>", ",", "\<\"tundra\"\>", 
     ",", "\<\"daunts\"\>"}], "}"}]}], "}"}]], "Output"]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell["Mandelbrot", "Subsubsection"],

Cell[BoxData[
 RowBox[{
  RowBox[{"data", "=", 
   RowBox[{"With", "[", 
    RowBox[{
     RowBox[{"{", 
      RowBox[{"n", "=", "200"}], "}"}], ",", "\[IndentingNewLine]", 
     RowBox[{"Table", "[", 
      RowBox[{
       RowBox[{"Mandelbrot", "[", 
        RowBox[{"x", "+", 
         RowBox[{"I", " ", "y"}]}], "]"}], ",", 
       RowBox[{"{", 
        RowBox[{"y", ",", 
         RowBox[{"-", "0.5"}], ",", "0.5", ",", 
         FractionBox["1", "n"]}], "}"}], ",", 
       RowBox[{"{", 
        RowBox[{"x", ",", 
         RowBox[{"-", "1.75"}], ",", 
         RowBox[{"-", "0.75"}], ",", 
         FractionBox["1", "n"]}], "}"}]}], "]"}]}], "]"}]}], ";"}]], "Input", \
"ExerciseMR",
 CellTags->"12.3 Exercises"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"ArrayPlot", "[", 
  RowBox[{"data", ",", 
   RowBox[{"ColorFunction", "\[Rule]", "\"\<GreenPinkTones\>\""}]}], 
  "]"}]], "Input", "ExerciseMR",
 CellTags->"12.3 Exercises"],

Cell[BoxData[
 GraphicsBox[RasterBox[CompressedData["
1:eJzsvQl0Tff6x61VgkjUPFeFqrG0iSGoR6uqpppSQUOJ1FTzEKohhjS0MYRL
gkqEEEkREjJHRBASSUhIiBCZ53MOSQ3V4O27et+13rW6Hv/+evdxfuec712r
a12fddbOPnvvs/fv+exnaG+/aPy3NWvUqJHw3//+3/////3vtzGLgw7Vvkar
Pig+0fSKJ4GDg4ODg4PrL7/f8ei2t10KBu20pbajJ14nS/W2U43N9oIbFP9t
UNdN8blfdEkl9Yk+pxuO3wcODg4ODq6X/MuwZ+kt4l8MOh862u+z6lTyX5Ad
0sDzF3Dwf8RlW4eDg4ODg4ODw1MZJ5cnvgAHBwcHB4enAtcXLtu6HRwcHBwc
3Bi4nF4FHJ4KHBwcHBwc/gpcv7hs63xwcHBwcHB95HJ6FXB4KnBwcHBwcHgq
cMPgf123b9HkopvzBl9Lo5k9XMPN7u6XLi4ABwcHBweHjwKHpwIHBwcHB4e/
AjdOzvkreC1wcHBwcGPgcvoTcHgqcHBwcHBweCpw4+SingpeCxwcHBzckLic
/gQcngocHBwcHBz+Chz8dforeC1wcHBwcBm4nP4EHP4K8cXrX/fKcx7BwcHB
8RwBB5fHU8FrgYODg4PDR4HDUyGOAIdPAwcHx/MFHNyQ/BW8Fjg4ODg4PBW4
vnsq2daB4ODwZuDghsFlu5+Agxuzp4LXAgcHBzdsLqf3ANcvjjgCHFwfuWy/
X3Bwmblsv19wcHgqeC1wcHBwfedy+g1ww+DyxBGi8YVs6yKOy7a+BQeHNwM3
VC7b7wIcHJ5KHt5cPTa4yZG69LCpXc+Bh27QO6oeUabtvaWL+8DBwcH1hcvp
N8ANm+tv3MGtT1bXdfLZ2aQ5jb256pNu6gx6y7Eob/2+g//djjn9NDS/qu+K
m5R5PP1s3VkH2PWMbOsu2dbP4OAyc9nub+DwS+Dg8FFy+it4LXBwcHD4KHDZ
uDzxi7bjGtF1y5DBaU7bqtrTF3FtWjQzy6JJ6T+VVscf/u92mlD44YdOPVtn
0PseO3PffOrz3883pPYr5oVbfpFOI0IH5Wz8ykc6Dybb+hwcHBwcHNwYuGze
Bvzf+St4LXBwcH3ncnoJcHD98lS68lei65m/tv/3fK2/+DvUYqb59ndmZ5JX
07yiF+t9/4/P//O8L6U4fBc4ODg4ODh8FDi8Fjg4uGFwOf0DODj8lQzrT1Gv
9dfnW1JJzRq13z9/i/K+6l9Q4+NDbB6XbL4LHgwcHBwc3JC4bJ4EXE6u7XWU
bPEvODi4PFxOnwAODk8lg796Pevbv3uqR8nFy0Yfe5dO7dw9oVX/O7T6Ue+S
NR0Ps326uO1wdYtK+TGlOHwXODg4OLg8z2VwcN36K3gtcHDj4XJ6A3BwGbg8
3gle65/4Gc7z/N079fIc5DbkjQHUYM2Mstbb7tHcGV9MeiPB77+f70gr23c7
aHb6LjXa/WHFM1M/MrnTdnx9d3eqvbr7b9lbiyitetSal3+cph3B0T9eG9CB
7j/0vdswJ4t6h9wr+2HuEdaDiXLOv/WdvNM8K9+RmkXO8gs5lE+9Rt+afqD4
pGK+Cx4MHBwcXM7nHTi4PnJd+St4LXBw+bmcHgAcXGYuj0cyNn+l7XW+aH2i
aP7Vq+cw/r1/V3Daexc9erehdZabEi123aZzvbcVOt8/xG6H40rVUWq7zlHb
XLbrFhzcmLls9wdwcHB5uGz+Cl4LHBzeCRxcfi6PL5KNyxYHyea1RH0Xxzl/
9dd+/j3vi/Ng3DxHzmtx+6OU19IX3wUODg4ODg4OfwWvBQ4OHwUOLj+Xxxfp
C5fNX+nKaymVxyWa38X5Lq5uUal+X9r2WvBd4ODg4ODgxsNl81HwWuDGwOWM
x8HBweGp4K9k81rarlvk8qw4ryVabyib14LvAjdmru37D3cfwO8dHBxctvuY
vnDZPAa4YXA5425wcHD4K/m5bJ4KXuvVXoubz/jXdv5et8htX1+8FuJfcH3k
2r7+Re8zXP0yd98Qrb/GfQAc3Hi4bOsBeC1wGbiccTQ4ODj8leFx2XwUvNar
+2tx/qpG32/zXXOnUuCHnYMGtMqhbsuSmoQPDWA/L1t/LcS/4PrIdXXdivol
rh6Zm9/Kfd5Q7w+yXVfg4DJz2X6/snHZvAo4fBQ4ODg8lTFw2XyUrnyXruLQ
v/bnn+dltXZ4vmTa+nmUfrjdgrkLcknlMjZ1Ydwxsr4+ZEHrz69RvQcberT+
9Fda5F3m/ktuCtW3ndS6dcUo6tIuaHb/xdn0a3TCJ4O8jrJ1i9z+6HvcijgX
3JDiOKXyPzmvxd0fON9uqL4L9wdwY+ay/e70hcvmZ4yNyxn/goOD6y+Xx9uA
G6e/0pXXEs2j4OLNV+dL/H2+Ice5OFTf+8kjngU3hnhN23MoROuaubrFf7cd
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
qnPRVZzOxeNcvMbF3e5zLR1cNqaRZcqOdLclatr62YhadS7dYOPu+raTWreu
GEVd2gXN7r84m36NTvhkkNdRYT/AxY8j27uPbPN9ML3luudiiXs5nR64JLko
PJb9XlycK1p3Kco5v8HtJ+cZ9GXOpq78lba9FndeuPPI1edynLvOIwucK1dq
NlNe0YJA64+KyKp2rx+ya52mSxa10s70vUkr75o1b+qmpg4ZDRvOHZvO5iNx
16Fo/pKu5mVwf5fz7QHn//jVzn8XdTUrt3YpLaIFVXOd3608wx5n7v4g+l5D
qd8pfJdxctl8FLwWODg4/BU4OLyWvvgrffFdsq0PZYvrReNxziNxcXrHU9Ym
11wOUfTkwrEtJ5VQXvK9TYcTw9m4kovfOQ/Gccce7dv9Nv8URX7T2to7s4y6
bvH3cPvxHBufis4LEM1X4TgXF3NeQjRe1rZP0Hd/JVsdIueRuOuc+91x/btc
fSsHW164TFbXrWfPmaai1fcLb5pPTaI3v7lSHV6/hMofL3xTXa2m3jf8gw7V
LKE+uy0u337jPF0pC1G96VFBvh5BHdwex1OiZ/Pp7bz8qNY6+7szG5RSq6jm
W4pCI4V9r67Oo+hcAKXuD0r9TkV/X7ryErL5H33nsnmn17Muki2+BgcHh78C
B4e/gteS32tpez0pmwcQ7U/FxeNcHR8XX4v2EeLyvri4nou7uT5CXJ6YaPyr
VF9xrl5SqXhZqXpJXeXbyOavlPJa3HXIXbecB+a88bwvV7f+3CaThppsyDp1
S00VP8+x2lKZSSuaXhx8K2YdxUw4OWdXRiHtadD4+7MNgtnrUNTziNbPavs8
cvvP1RVy9yvu+HDnV1/qiOG74KlkeK8nZ9wNDg4OfwUODq9lDP7KUL2Wvvgu
jovma3H9ZLj4WrTPFfd5Lk7n4k1uP19Qm06N2ibQKc/IYCdXFS21ebBj+5Jk
dp6jaD4Mt/+i/bq57XD9wEXjZdnyZLjjoFT9plL96JQ6v5yn4vKyOE/CeSru
Og/8cNTxsK/j6LPgPtbNYypov2l0jqnpFRpRfShmimsBdV4amho5QEP+KeOf
DnIpoMXOj8IXhfxKo/3uzw6MLyUb/3HunX2j2d+daH0id99Qqp5X1EOK5kly
Xp07X41MEr62mRtP4XUiWtv0UZHLvKzm2764yt7fdJXHpS8eTDY/Jpsvko0r
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
bm0c96LzzRK2DvTliowAB3s1FR9pV13yuJzCpzycaD9ZrfX95PL9uPs855lF
8zO5z4vWdXJ+m9uOtvO7tJ33pW0/JpuP0nbfAzk9Azg4/BU4ODi8ljFz9NFS
tt6QW8//tZ1/Pv9LtD8S17cq8MNRx8O+jqPPgvtYN4+poP2m0TmmplfYeIfz
JFx+xQPLjOYje1WQ5dTR3bcNVNPqtXuufNvFcOsKleKcp+o7ead5Vr4jNYuc
5RdyKJ96jb41/UAxn0e3as3RjkkvcujTd8L6bXtfQ3Va3zl2yCyXjbtlOw7g
4DJz2+MFU99YoKHd3UtaLLlaQiGHlick2GnYvDLu98v9Hrn7P5d/xX2e82nc
3+X6yHH98znfxXktpfKTdVX/aKhcqXk0cvoHcHD4K3BwY+OyeSr4K8PwWrJ5
Km3PPRRdN4r27+XmanFei/Nm3HZE599x8RrXj0u2+FRXfNKpGY8nXLtO6nNN
d705SU1VwRt+97NOY+cDBm7u89Rsch75/efCmMjp5yjYprdm6Fd5bF8p2b4v
OLgxc66e17t0Xa1nWyto3NwHX3plqainb/XPka4VNP3tdzZOzdHQgoW5nzl+
XUjLPh27uMNlDVsnfrzbes/GsWqqFRz3ztPd5TTf+auWYaFqep6VQYXl6RRd
9tMk78Nqip6d2SbxT2bfdG96YNdk6qgeuDvihYpOZG4q2Gx7na1DnOFoZRoZ
VExpQ4auyqynIY+KAbUX+Rez+8PlD4v2exTNT9OXfDDZPJVS/Tzl9BLg4PBX
4ODGxuGvwI3Baynlr0S9lmgel2gfeNH6RI5z8QWXJ8DFTVx8xMVxssWh2uZc
PeCt2LZP/KLvUkqH1dMu/Bk/tgl8MvLLuvek239wcHDtce7+ydWJc3mb3PaT
0sgv+IMy2tBlLs0NUNOD/n1Cb3cqYz/P5XFxebzcc4Sbm8n5MdE5mNqufzQ2
Dq8FbnhcnrgbHBwc/gpcTq+lL55KNq+l1HqSW8+L+i4uHuHem3Nzwbh+XO2f
1Zi3rpWK1v5R8KbVCBUNurMzMKKRSrq4EhwcHFw23me3xeXbb5ynK2Uhqjc9
KsjXI6iD2+N4rc/l5OaKcnWOXD5VstmRfdXrzpBdrY+WeyWXU9LoNUtN3M+z
Ho97n8LlMytV5yibX5LNX8FrgcvP5Ym7wcHBDc9fwWvJyWXLy9K2p1LKX2nb
a4muP0X7mXBei3v/ztUhcu/TOe7qWznY8sJlsrpuPXvONBWtvl9403xqEjtH
TLa4EhwcHNzY+GLnR+GLQn6l0X73ZwfGl5KN/zj3zr7RrNcS7QPG1cVzcyi4
9y/cexzkcSnrr7jjKaffADdsLk/cDQ4ObjxeSzafY2wc/kpZf2WoXouLF7j3
7xzn4pcDbq5bhgX4U5fG7S3qfldK4UFW20xORLH1NRWttzx4maqhK50GpI9q
WkQNp6f13BmJuYrg4ODg/5aPqD4UM8W1gDovDU2NHKAh/5TxTwe5FLD5VFw/
fG5+ouj7Dq4Osd+Grfu33NLQKPOOB967mEuhQ1tNHhKqYd+/iOZx6Xt+l1Ke
Cl4LXH4uT3wNDg4OfwWuX15LXzyVrvyVqNfS9jpWqTpELi7gfBdXn8i9r+fi
GqejD9euLLtGSeG2VR+PVFPnMu9lj5elsr6L60vP1T9yfV1kizfBwcHBZeP7
5h1wXNHgEg38pN91MlfRz4+uTzGzSmQ/z9233+o2c/y0D+7QbPPBTisK1BQ+
YVTkwPA7tKLpxcG3YtZRzISTc3ZlFNKeBo2/P9sgmH0Pcshk1E+OdbLo56Yv
2vR/qCbXNr0Gq9ZksfNTRPvYc1xXHkk2f/Xq/v+y+RBw/eLyxNfg4ODwV+D6
5a9EvZaxeSpD9Vei+Voc5/K1uPnvXN0KV4fCzQfk+rHIFg+Cg4ODGxvnfBT3
eZNvVvyQ/r6KvG6fmDGh6zUyL0n/yKuJih7v9dx08FMNPZ3424q3ZtyiLt57
Kt9/R0NO0av6nPUpok1dr2T+YqWh8H6Pat70KBKen8i9B/lot/+Jpj63qMbv
tfa9H6OmCb/7dO42+7ZidY6ycdF8NngtcPgrcHBw+CtwXXkqUX/FeRtRzyPK
9d1faXudyfkiLs9KqfwrLi7gfBTHuTlWHefn7Rj1pICO2GU4DB6koTaFuesb
VRUI5wmAg4ODgxs2r3YPs3t+ez8tt5xzKcWnmPxzfDfaZ4ey9e8B5//41c5/
F3U1K7d2KS2iBVVznd+tPMPWM3LPO1Gvpe9cNJ9NTn8CDn8FDg4OfyWn5zFU
rit/JZofxXmJDWfDtnU+7kQDe0yzz39UQN+fPGHe7aMg1p9wXkgpP6btuYTc
99L2epL7u9z6nPNUnB/rMbXT1ZM5uTSw6vG0vd019HDY05jh5blsnhX3dz3a
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
XDafY2xc3/2VtvO1lMrj4jjnZ7jnJue7OM55D23niSlVTyfqZ0S/r7b9kra3
L9rPjbtOOL8au9WnZdTEYopwb62+2EJDT2pdmzJgdDG73pNtvQoODg4ODg4O
LsrtOvzkNn9lLiWtmDVi4M2ztDYpuP+mpblsP1KOc3N54KnAweXnsnkbcN16
LW37K115LdF+XKJ1i5y34fKXuHwbzgtp2/OIctF+UFw/+YDzf/xq57+LupqV
W7uUFtGCqrnO71aeYbfPHX9Rj8R5HtHti9YVcue31ewbDWOTA8kjya7q6Zoy
2r7bbde87TFUlb0wwnPvWhr+otbBylmF1Grqwo3D9wexeX3cHMNu/sFj9t/U
0CfqgtkhO3LIYv/Ucb6nNOy8IdnWq+Dg4ODg4ODgHLcY1mlyM18NPcs8fdv0
zbvUuUuoY6SThl1Hcf6K69sATwUOLg+Xzc+AG6e/ks1ric774zwP56+4PC7u
ucl5GM6TiPolzquI+hmu3yZXB8d5G85rcfsp6ou4/VTqOItyzn9y+1Oj77f5
rrlTKfDDzkEDWuVQt2VJTcKHBrCesM9ui8u33zhPV8pCVG96VJCvR1AHt8fx
0q0/wcHBwcHBwcG1zS9Z1Eo70/cmrbxr1rypm5o6ZDRsOHdsOrsON7nTdnx9
d3eqvbr7b9lbiyitetSal3+chqcCB4e/Atex15LNX+m71xLNC+L6UnIejNsO
50M4ztWvcZ/nvBDHuf0cusyh0PP8cVpq7X1igkUZVXov3Dl871n2OHAeTKnj
o9R2RI+PaD2mqNfi+sNz7yWX3R1q+tAxkbp/M+CFe6CK5iY8+/JtV/nWn+Dg
4ODg4ODgSvEeUztdPZmTSwOrHk/b211DD4c9jRlensv6q2r3MLvnt/fTcss5
l1J8isk/x3ejfXaodPE+OLg+ctl8Czj81ev0Wkr5K9E6RNG8IM4/cF6F60vJ
bYfrp8R9nvNL3Oc5v8T5Ma6OkstP4/KLEj2bT2/n5Ue11tnfndmglFpFNd9S
FBrJfp47Dtxxnn50Uu86y4LofmXm2iG9y8nhvP2ojI9j2e2I9r9SinN5Zdz3
4vzVxocPL1SNOUejOvQ+pF5QQcfbH51VL++SdOtMcHBwcHBwcHBdcc5fdTxl
bXLN5RBFTy4c23JSCeUl39t0ODFcsbhPNs8ADg5/BQ5/pV9eS7RvvGgdIufB
RP0P52G4er3AD0cdD/s6jj4L7mPdPKaC9ptG55iaXmH9Bjf/hdsO51W4fCHO
13F8ZHv3kW2+D6a3XPdcLHEvp9MDlyQXhcdSp5QVOzxCLlDs92Eu3YoqaNe6
eK8t7RLYdQi3/VVrjnZMepFDn74T1m/b+xqq0/rOsUNmuez+c96P807c+RWd
FyDqG7l12ojqQzFTXAuo89LQ1MgBGvJPGf900J/HQ7b1JDg4ODg4ODi4rjjX
p/SAm+uWYQH+1KVxe4u635VSeJDVNpMTUdLFlfBs4PBU4PBXxumvtO21ROcD
itadcc9Zznd5m80Zd2drDl2y9DxS5z0N7X5rpMU17xxy9a0cbHnhMlldt549
Z5qKVt8vvGk+NYkce7Rv99v8UxT5TWtr78wy6rrF38Ptx3Ns/eD1JTsKeqy+
TR1qXOxfkaim9nEugVndM1m/xPk60XUI9325fHLOm3202/9EU59bVOP3Wvve
j1HThN99OnebfZudjyOa98WdR1HOeS2u3yn3fWVbT4KDg4ODg4OD64pzdQ1c
P1jZ4k194bL5GXD4K3D4K6X8lajXEvVUov5KlIt6LdG+7lz+D+c3uL6XXJ4S
93zvVnbszOkbpTTXkUJswtQ03iah3pGrpWx+1L55BxxXNLhEAz/pd53MVfTz
o+tTzKwSaYajlWlkUDGlDRm6KrOehjwqBtRe5F8svD+i/HlWBhWWp1N02U+T
vA+rKXp2ZpvEPxn3+dL585qEeFWQw7xpHeoWJFGL3razB2yvYL/vgTFBJ1Zm
aSgo32JQlF0+pb7/3cwLZzVsHhfnnbj8N45z+XVrOx2N8/64iCYdf/+S48cX
qGmHx238/vy3bOtGcHBwcHBwcHDZuJ/zyJ6rSiLIZpelaXzbCorqu7OiTsQF
SjY7sq963Rmyq/XRcq/kckoavWapift56eJQY+Oy+R994bKdR3A5fZSxeSql
/BXni2TzV6J940Xn4nH5OZzH4PopcXlHSj33J52a8XjCteukPtd015uT1FQV
vOF3P+s06dYnuuJ7ws85Pr+UQdkPh/1uH6Smzb3OHlp98BZbZ8rlv3F1kdz1
oG1PCA4ODg4ODg5ubJybK83FfbLFueCG7cdkO57a9irgr8dTcflFop5H37lo
nhXnizjPw+VHcdtRinP+isvP+es4/O/zCrnjwPmQ6M+fOkRahVFmUvC5oEfl
dDFuU8/Nh+PoeLf1no1j1VQrOO6dp7vLab7zVy3DQtXSrR8MlXP57VxeGXd+
OT/G9YWQ7TiAg4ODg4ODg+sL5/p1wGuB6yOXzauA6zZvivM5nA/hfI5sPkq2
Pu2c5+Hq9TjfpRQX7ZclWl8m6q+4vlWxW31aRk0spgj31uqLLTT0pNa1KQNG
F1P08YLPfrTMp+DgiS26WmlolNuRry/2zZdu/WCo/HC99Sm1j6ro2NbM0MTw
ChrdsEtauLeK7dvA5eNx9Yy2xwumvrFAQ7u7l7RYcrWEQg4tT0iw00h3HMDB
wcHBwcHB9YVXbRnRY35AKr19+YbVZQc1xfwwy9n2Zdr/kecgj8fQdy6bTwAH
l8FH6aqejvMh3OeV8ki64tru0871m+L8Enf8leqLxf1dzstxeTtcf3Lu81zf
8qQ08gv+oIw2dJlLcwPU9KB/n9DbncqkWyeAv5rnDDyy5D9xedT7Sp8fD3+o
odvLm6U9uJLH9sN3Ovpw7cqya5QUblv18Ug1dS7zXvZ4Wap03wscHBwcHBwc
XF84NxeJix8NNY9LNj8gGxf1DFz9DucZlPIbsh03feGy9X1Syl9xnPMhnN8Q
ze+SzV/pymtxx5m7P3D5XVzeFOepROcYcuedm5fH1ZcFfjjqeNjXcfRZcB/r
5jEVtN80OsfU9Ip0z31wZblHm44tVh7Op55ejsdO9tFQ7EGrQk+/fNQbgoOD
g4ODg4O/Jj5eVfTk7KJcOlfn1tXGXTXk9OHc3o5Ouf8y/+Gfx9HwUYbhMbjr
QTTe15Unke28yHZ+9d1fcdcb52c4H8LVnSnVL11f/JWo1+LyrLjjzPW/4o6/
qKfitiNaV8h5LS5fS7bnPvjr4dxcnltBcZFbXVLIJ+RsTnInNXVuYjYkIfe6
dPsPDg4ODg4ODq4vnOvvIRofifZhhn8wDL/BnXfRPs/azuPSdw8m23GQzWsp
5XNE69q465nzP0p5MF3NGeS4aP8rLl+L80tcfyoun4rbzs9vtLhwZlUpjb3Q
tNvgS2o6vcDumyWLS6m1w/Ml09bPo/TD7RbMXZBLKpexqQvjjrFeK+D8H7/a
+e+irmbl1i6lRbSgaq7zu5VnpHu+g4ODg4ODg4ODgxsD5/qjir6XV2q+mGzx
tWx+Q1feQzQvi8uj0Jd+3bJdb/rO9aX/uWh+Efd5bXskzr+J+mSl/JW2+1xx
3omr/zrg5rplWIA/dWnc3qLud6UUHmS1zeREFI2JTrzjt8qH9sR3Ml1eXUyf
3Yr9cePNMNabcbzj/Lwdo54U0BG7DIfBgzTUpjB3faOqAume7+Dg4ODg4ODg
4ODGwIfazSl1uqMh2w9mZux+nEcjNBnT86M0rJcQ7Z8Mz/DvPJiu6raUyocR
jfeVqs+SbQ7dq/sLybP/SnFd1d8plafEXbdcn3DRPuei3onjSvVdF+WcdxLt
czU+ILPmidg9NMYnwLnL0GIyLXNd/0lJCJtn9dTvu8sD7RZS3orLx1Zl59IH
OamRxzyOs3VeXD92rv/VsrtDTR86JlL3bwa8cA9U0dyEZ1++7ZpCk07NeDzh
2nVSn2u6681JaqoK3vC7n3UaOxdPtuc7uJz8atEbbm8fuUd92ozpH/dBBMXM
ntjfY9c96fYTHBwcHBwcHFxf+JePs5+dbllCO9zXD4xyukRl6Y1M7jcrYT/P
xTX67rt05T20nf+m7TwZpeqSRI+Dtn2XUl6Fq7fSlcfTtkcSPb9K9XES5aL5
RZxv4c4v52GUmvcn6pG47SiVZ8XlNYn2ueLmBnL9rLi8LG0/Ny9Z1Eo70/cm
rbxr1rypm5o6ZDRsOHdsunTPd3BwcHBwcHBwcHDwv3PRPC5t52+I5mlo25OI
7icXJyp1PLW9HS7+5eJ6bq4Ztx1R7yG6/1xcr9TxEfXA/+56/ufeTNt9mUT9
jLZ9FLc/3Oe5vuVcnyUuj0upvCbu/Ir2lRKdP8h9nvte3HHjfu/c/YE7ntGf
P3WItAqjzKTgc0GPyuli3Kaemw/HkX3TvemBXZOpo3rg7ogXKjqRualgsy36
b4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODGxZHvhbytZCvhXwt5Gsh
Xwv5WuDg4ODg4ODg4ODg+sjRXwv9tdBfC/210F8L/bXQXwv9tcDBwcHBwcHB
wcFl5piHiHmImIeIeYiYh4h5iJiHiHmI4MpyzEMEBwcHBwcHB1eWc/MQRfMl
lIrTZfNRSnkqbXNtf19Rj8F5Ue764bajKz8j2/Wm71y2vDJRr8X5GVF/qxRX
qq5T23WmonlfnDdr7fB8ybT18yj9cLsFcxfkksplbOrCuGPk0aZji5WH86mn
l+Oxk300FHvQqtDTL5/N4xoTnXjHb5UP7YnvZLq8upg+uxX748abYWy+Gcc7
zs/bMepJAR2xy3AYPEhDbQpz1zeqKpDu+Q4ODg4ODg4ODg5uDHyo3ZxSpzsa
sv1gZsbux3k0QpMxPT9K8y/rrf6519J3j6QvXNu+QrS+kuP64pcM9TzKxrWd
T8hxUT8j6ouU6num7T5pSvkujnP1m1y+FueXRPuM/fxGiwtnVpXS2AtNuw2+
pKbTC+y+WbK4lPVmXF+1gPN//Grnv4u6mpVbu5QW0YKquc7vVp6R7vkODg4O
Dg4ODg4Obgz8cL31KbWPqujY1szQxPAKGt2wS1q4t0o4rhSN0/+Ka96iyUU3
5w2+lkYze7iGm93dL8xl80j6wnWVx8X5B2PzVPpyfvXFa4n6Ls7PcHlEnCdR
yjsplZ+mlN9Tqu+ZaP4b13+eO/5cXqhoXy+Oc16L6/c1dJlDoef547TU2vvE
BIsyqvReuHP43rPSPffBXw/n6mRvBcVFbnVJIZ+QsznJndTUuYnZkIRczDsA
BwcHBwcHB/+3PHarT8uoicUU4d5afbGFhp7UujZlwOhiYQ+glKfSFZfNS8jG
/10e19/zMbSdlyXbcdMXLpvX0rbv4vKyOB8iWj+rbU8lm+8S7c8vOp+Rm6so
2tdL1INx+WCc1+L6d8n23AdXlnP1sL/7+ls+cT9MuRW+HjGnS8j54rOfLsVG
SLf/4ODg4ODg4OD6zserip6cXZRL5+rcutq4q4acPpzb29Ep9//wFfL4KH3n
svkNcHB99GP/Lr/0n/etEp2XoS9c217r86DN/RK7TaQh52sUThp/n8qbj+z2
wxJ/xfrea7uvF5d/xc0R4D7PzXnk+tvLtk4AfzXPGXhkyX/i8qj3lT4/Hv5Q
Q7eXN0t7cCWPTO60HV/f3Z1qr+7+W/bWIkqrHrXm5R+nyenow7Ury65RUrht
1ccj1dS5zHvZ42Wp0n0vcHBwcHBwcHB94deX7Cjosfo2dahxsX9Foprax7kE
ZnXPNNi8LHDD5rJ5HnA562T1ZX6BvvTb57wQlx+l1HxGUd/FeS0uH4zjonWL
XH8wLl86+njBZz9a5lNw8MQWXa00NMrtyNcX++ZLt34wVM71Z+DmYFZlL4zw
3LuWhr+odbByViG1mrpw4/D9QbThbNi2zsedaGCPafb5jwro+5MnzLt9FES2
xwumvrFAQ7u7l7RYcrWEQg4tT0iw00h3HMDBwcHBwcHB9YVXbRnRY35AKr19
+YbVZQc1xfwwy9n2ZRq8loHwv+K+F4POh472+6w6lfwXZIc08PxFb7hsx1M2
/wP+7/yYUvNb9Z2Lei3OB3Keh/NOonMlRDnntbj+XVxdJMdF+3dxviv686cO
kVZhlJkUfC7oUTldjNvUc/PhODrebb1n41g11QqOe+fp7nKa7/xVy7BQtXTr
B0PlXN7d86wMKixPp+iynyZ5H1ZT9OzMNol/MtE+bKhPBAcHBwcHBwdXlrv6
Vg62vHCZrK5bz54zTUWr7xfeNJ+aJJ1PMDYum1/SFy7beQTXL68oWz8xfanf
lG1uo6jv4uoWOc75q4S+WfnfPV5OdUtjZvt9mE8PHn610r7xSTaf56Pd/iea
+tyiGr/X2vd+jJom/O7Tudvs24o93yedmvF4wrXrpD7XdNebk9RUFbzhdz/r
NOnWIbrie8LPOT6/lEHZD4f9bh+kps29zh5affAW66M4f/XU77vLA+0WUt6K
y8dWZefSBzmpkcc8jrPXw6o1RzsmvcihT98J67ftfQ3VaX3n2CGzXOmODzg4
ODg4ODi4vvA+uy0u337jPF0pC1G96VFBvh5BHdwex0sXz+oLl83zgMODgWvP
j8nmqXTlu0TzvnTlu5Tq08XVV3L9xFo7PF8ybf08Sj/cbsHcBbmkchmbujDu
GK1oenHwrZh1FDPh5JxdGYW0p0Hj7882CBb2Ht3Kjp05faOU5jpSiE2Ymsbb
JNQ7crWUqt3D7J7f3k/LLedcSvEpJv8c34322aG0b94BxxUNLtHAT/pdJ3MV
/fzo+hQzq0Sa4WhlGhlUTGlDhq7KrKchj4oBtRf5F2vdw3B5UNznS+fPaxLi
VUEO86Z1qFuQRC16284esL2C/b4HxgSdWJmloaB8i0FRdvmU+v53My+c1bD5
e1z9oGi9Kue11nY6Guf9cRFNOv7+JcePL1DTDo/b+P35b9nWh+Dg4ODg4ODg
snE/55E9V5VEkM0uS9P4thUU1XdnRZ2IC+wcatniUHgncPgucPguOX0X57VE
ubb72CvVj4vzWlwe1wE31y3DAvypS+P2FnW/K6XwIKttJieiKOD8H7/a+e+i
rmbl1i6lRbSgaq7zu5VnyNtszrg7W3PokqXnkTrvaWj3WyMtrnnnsPnVjj3a
t/tt/imK/Ka1tXdmGXXd4u/h9uM5Nr+I66vJ9QHj+t6LrkO478v1Vx/Z3n1k
m++D6S3XPRdL3Mvp9MAlyUXhsWyeG9fPn9t/bt4ldx5FOeczOW/GfV/Z1pPg
4ODg4ODg4LriXL8Irg8qPBI4ODwYOHyXzL5LKa/F5WVx+VdcnRrnTzifE/jh
qONhX8fRZ8F9rJvHVNB+0+gcU9MrtPHhwwtVY87RqA69D6kXVNDx9kdn1cu7
xOb/cNvh8oi4ujnOa3Gc8zCdUlbs8Ai5QLHfh7l0K6qgXevivba0S2Dzqbjt
c3li3P5zfonLy+LOL9c/TbSvGue1uHXaiOpDMVNcC6jz0tDUyAEa8k8Z/3TQ
n8dDtvUkODg4ODg4OLiuONenlHuPLJs3AAfXRy6bnwGH79JHr8VxzmtxnorL
v+K8BOeFOA/DbUc0L4h7DyXqTzgPI+rrIgucK1dqNlNe0YJA64+KyKp2rx+y
a52mRM/m09t5+VGtdfZ3ZzYopVZRzbcUhUayn+eOA3ecRfOsuDw6bXPOm3Hf
i+u3xvlM2daT4ODg4ODg4OC64tx70o6nrE2uuRyi6MmFY1tOKqG85HubDieG
/zeO+G1Q103xuV90SSX1iT6nG47fx3LZfAI4uD5y2bwNOHzX6+zHpVQel2jf
eM5XcHV8nK/gtvPX/v/v8xa5z3O+TrSOkvNp3HHgfJpSx0ep7YgeH45z2xet
S+XyzTjftezuUNOHjonU/ZsBL9wDVTQ34dmXb7vKt84EBwcHBwcHB1eK95ja
6erJnFwaWPV42t7uGno47GnM8PJctn8F57tEvRY8GDg4fBe4sl5LX3yXvngt
rg6R8ydc/hLX753zG6LzFrntcL5FtO89l1/EeSquXwFXX8ntp2geHbefSh1n
Ua6U1+Ly2bg5PrKtM8HBwcHBwcHBtc0vWdRKO9P3Jq28a9a8qZuaOmQ0bDh3
bDq7Dud8l7a9FjwYODh8l7FxQ/VduvJaovMQOf8jmi/E1fFxfobzabrioj6N
8zCc1+K2zx1/0Ty68QGZNU/E7qExPgHOXYYWk2mZ6/pPSkKEty/qA7nzy3k/
Lv+K6wsx/aWqTnLDdNqbfzUs01NNau9HHi2bZVA3/+Ax+29q6BN1weyQHTlk
sX/qON9TGhpYYBW7LS+LjreJPvviuZrGFTaO9xpyV7p1KTg4ODg4ODg4xy2G
dZrczFdDzzJP3zZ98y517hLqGOmkYddR3Pwdznf9tc4vGLTTltqOnnidLNXb
TjU22/t/cHgwcHCZuWyex9i4tr2WrnyXtr2WaN940b5bXF6WaP9wzpNwfonL
KxP9Xtqe/8h5P9HvqxTX9t8V9Wwc564Trj9Y7FafllETiynCvbX6YgsNPal1
bcqA0cWsx5NtXQoODg4ODg4OLsrtOvzkNn9lLiWtmDVi4M2ztDYpuP+mpbns
nGuOc77r33kt+X0XPBg4OHyXbFzffZeo1+I4569EvRbnKzifwPkHUR/C5eEo
5a+U8l2ct+Hy0zgfKHp8uP0RPT6i29G27xL1gVy+H1cHys3BNEn+1vvguDwK
v9es8p2eGnKYtumLtlPypFuvgoODg4ODg4OPj+0WHfKWmq7sdcrMtK2gmn22
7jKrVrHv77j3zty6iJvrpKzXggcDBzckLpsX0ndubF5LqbwszjNwfkDbeVMc
F/V1Svk9Uc/D9TPnvI1SnkpXfk8pryXaj4vzqNzx5/LqX1CbTo3aJtApz8hg
J1cVLbV5sGP7kmSycOh3dN0BDQUGNHwybXExzVzvW33CTSPd+hYcHBwcHBzc
ePi+eQccVzS4RAM/6XedzFX086PrU8ysEll/xc0t4ji3Hd16Lf31XfBg4MbM
ZfNF+sJ15bVEfZdSeVmi/bI4L8H5K84/iPoWUb+kVN8wUe8nyrm8LK5Pu1LH
UzavpVT9pmi/Mu69ZKJn8+ntvPyo1jr7uzMblFKrqOZbikIjaVHUDc+gn8ro
l7s7E9b8oib39r4z6m8ok269Cg4ODg4ODg5+69OJyVHP1fSsrfuqHY1u0h7/
pPB9d9R0osuWZ7OzNRRd035Ft+0FNCv1/e9mXtCw60/ufR/3ec53yem1DM93
wYOBGzOXzS/Jxg3Va3G+hfMJ3HNKtN+RUl5I2/5K276L8zlcf3juvOgqD01X
eVyieVncuovrC9Gt7NiZ0zdKaa4jhdiEqWm8TUK9I1dL6cvH2c9OtyyhHe7r
B0Y5XaKy9EYm95uVCK8zry/ZUdBj9W3qUONi/4pENbWPcwnM6p4p3XoYHBwc
HBwcXH95p5QVOzxCLlDs92Eu3YoqaNe6eK8t7RJoTHTiHb9VPrQnvpPp8upi
+uxW7I8bb4ax/op7f81xw/BaxuO74MfAjZnL5p0M1WtxXKm6QlGvVe0eZvf8
9n5abjnnUopPMfnn+G60zw7V+/wrXXFRz6Ntf6UrD8Z936HLHAo9zx+npdbe
JyZYlFGl98Kdw/eeZfPcuL5t3Oe5vqY7V2RM33RbQ34X8muP7JpHH68N/LpD
uIadc106ZMTiRu9r6Fn9vW8vNs+g6DrD/C1qati5igfcXLcMC/CnLo3bW9T9
rpTCg6y2mZyIkm49DA4ODg4ODi4/f2qTkWM7XEVb1/fZFdVSRXsrLjZw+ETF
zmvm/BW3XhLl3Pbl9FTwXfBj4ODG47v0xWsp1ReLy2/h+mxz2+H+rlJeSKm8
Ndm4bP5NV3lr3PXG5QFyeVyi+V01+n6b75o7lQI/7Bw0oFUOdVuW1CR8aAAd
rrc+pfZRFR3bmhmaGF5Boxt2SQv3Vgn3neDmGsi2TgYHBwcHBweXn3/gtWzx
kRgNPe3QYJCPzT3aHWNy/pynhlx9KwdbXrhMVtetZ8+ZpqLV9wtvmk9NYvOs
uPeDopzbvpw+Cr5L37lsPgTcOLls/kpffBfnQ0TnEnJ+QKk+Tsbmo7RdN6rv
Hkzb/faV6sfFeV3Od3Gc2w5XF+B09OHalWXXKCncturjkWrqXOa97PGyVKpo
veXBy1QNXek0IH1U0yJqOD2t585I9J8HBwcHBwc3Jt7Pa5OTqbma0pYu3D57
dSpVR0/IKqtUUdWWET3mB6TS25dvWF12UFPMD7OcbV+msXlTousZUc7lccnp
neC7wOHNwOHBZPNaoj5B1GuJ5uHoi3fSF26oHkwp36WUB+PmTnL5XdxcRe49
Jue7uLpI2dbV4ODg4ODg4PJwbr7h9KOTetdZFkT3KzPXDuldTg7n7UdlfBzL
+iguT16Uw2vBd4HDs4HDd/0vfeM5b8D5AS5fhYv3RftfwVPBd2nDa2k7v4v7
XXC+i1vXcV6Lq0/seMra5JrLIYqeXDi25aQSyku+t+lwYjglmx3ZV73uDNnV
+mi5V3I5JY1es9TE/Ty7jpVtvQ0ODg4ODg7+z/kLatOpUdsEOuUZGezkqqKl
Ng92bF+STKpVix5cu36V/DtFDz+SoSKHQbXq79h3ja3749Yn3Ps4Uc5tn/Nm
cnokfeHyeBVwcHg2ebihei3OD3DxOMe5PC5t1xvK5ov0neuL79L2HEal6hO5
fC1uXdf2SP3O0X8Ukc+9hzNPddKQbTv7kyaVRdRq9o2GscmB5JFkV/V0TRlt
3+22a972GHYdK9t6GxwcHBwcHPx/5zMcrUwjg4opbcjQVZn1NORRMaD2Iv9i
dl4ht37g3qOJeipu/S+6HXgt+C5wcPg0+K5/4rVE87JE6wpf7am4vtzwVPrC
9cVraTuPi/NUHOfWe5zXEq0LkG29DQ4ODg4ODv76ecrJY7Y9V6lov8nm94aU
VlDVi8eLzRer2D4Gy+4ONX3omEjdvxnwwj1QRXMTnn35tmsKu27RNufWRXJ6
IUPl8vgHcHB95LJ5Kn3xYKJeS7R/u7br/mSbFymbR5KNy5bHpW2vJdpHi1uP
cXMMD7i5bhkW4E9dGre3qPtdKYUHWW0zORHF9stK9Gw+vZ2XH9VaZ393ZoNS
ahXVfEtRaKTW18nZdXPjDmRryNz10qjNMYV0trn3wJHx6D8PDg4ODg6uC17t
Hmb3/PZ+Wm4551KKTzH55/hutM8OpUYmCV/bzI2n8DoRrW36qMhlXlbzbV9c
Fc6zEn1/p9T7Pm4/5fQ/xsbl8Qbg4MbAZfNXuvJdr/ZIXPz+v3sP2TwV/Jhx
ei1t99fi8g+jP3/qEGkVRplJweeCHpXTxbhNPTcfjqO+k3eaZ+U7UrPIWX4h
h/Kp1+hb0w8Un2TrAkzutB1f392daq/u/lv21iJKqx615uUfp2n6S1Wd5Ibp
tDf/alimp5rU3o88WjbL0Pr6+cbXaV+pbO9T0jRb5+ftNDT55OR3xm64L906
HxwcHBwc3JB4wPk/frXz30VdzcqtXUqLaEHVXOd3K8/QBa/Oa0va5NAXw1c2
2mihoXfVUXv+6JlDCX2z8r97vJzqlsbM9vswnx48/GqlfeOT/4cv+uc+SrQ/
iej24bX0kcvjAcDBwfXXjynlu+Cp4MFk9l1K5WVpe+4htx7j+rJyeVyOPdq3
+23+KYr8prW1d2YZdd3i7+H24zm2XuBWbNsnftF3KaXD6mkX6mmoTeCTkV/W
vSecZ9VjaqerJ3NyaWDV42l7u2vo4bCnMcPLcymywLlypWYz5RUtCLT+qIis
avf6IbvWaXb/ZYsLwMHBwcHBZeBHwgcNqnxeQF6Oqp6tasbROFV0/Q1//pv7
vM2K7fMD95VT0aMGc6KWqGlheunMo/8pZ+cGvlyREeBgr6biI+2qSx6XU/iU
hxPtJ6vZ/ChRT6Vt/ur8Mdl8Djh8Fzi44XF9912yeR5w/fJgsnktUX8l2gee
e3/KzSXk6gI4L/TmN1eqw+uXUPnjhW+qq9XU+4Z/0KGaJaxf4uoWxwdk1jwR
u4fG+AQ4dxlaTKZlrus/KQlh+9L7OY/suaokgmx2WZrGt62gqL47K+pEXGD7
cnDbjz5e8NmPlvkUHDyxRVcrDY1yO/L1xb750sUX4ODg4ODgr5ObDM4bGRuu
oQFzOhWlxxVR5IP+zd711bDPU26O4av7UP3zPKtX97/937my+V2yeRtw+C5w
cOPh+u674MH0ixuq1xLNvzqyerj1iNRVZOFmXnixcQH1s+n+nnrqKXbODrc+
nNSsY0R1nWVU3bx5F8/YPDrpcXPrexTIvifl/BL3d7l6Q65ucbHzo/BFIb/S
aL/7swPjS8nGf5x7Z99oeur33eWBdgspb8XlY6uyc+mDnNTIYx7H2Twxrq8X
5+W4eUnc322yv4ZDRMxq6mkX2uGmSwFlvqHaW//KKfS9BwcHBwc3KB671adl
1MRiinBvrb7YQkNPal2bMmB0Mfu85p6PVdkLIzz3rqXhL2odrJxVSK2mLtw4
fH8Q+15MNP9K2/5KKd8Fr2XMXJ74HRwcHB4M3ky/uGxei8u/4vpFcOsizi9x
fobL1xLN7+LWmdy6jlu/cZ6Ne5/LeTauLlJ0rje3P1we14qmFwffillHMRNO
ztmVUUh7GjT+/myDYDJJ/tb74Lg8Cr/XrPKdnhpymLbpi7ZT8qSLU8DBwcHB
wf//fFHUDc+gn8rol7s7E9b8oib39r4z6m8oYz9v33RvemDXZOqoHrg74oWK
TmRuKthse519X8bNheHe03HPZVG/xK1nlOKi+wOvZcxcnngcHBwcvgvcMLyc
rnyXaF0ht67jvAq37uK2Lzo/VKn6R25dx+Vfcflgou9tub/L+S7uvfNG14nm
5Wo1NenX5JTzt+V0Zcem1TMK1VTZaGHuuasVlGCdktfeL5maxGd8FRRVQeNj
u0WHvKWmK3udMjNtK6hmn627zKpV9ILadGrUNoFOeUYGO7mqaKnNgx3blyRL
F++Ag4ODgxsGH2o3p9TpjoZsP5iZsftxHo3QZEzPj9LwfS+v9484P0FDdRbe
6PJsVSlNs7x30naohvbNO+C4osElGvhJv+tkrqKfH12fYmaVSM+zMqiwPJ2i
y36a5H1YTdGzM9sk/sm492KieVna9lTa9l2vzuOSzcOAw3eBg4PDd4HrozdT
ymv99b3+eR8trt6N8zmi/kp0fqK25y1y73OVet8qup7kvFanlBU7PEIuUOz3
YS7diipo17p4ry3tEijZ7Mi+6nVnyK7WR8u9ksspafSapSbu59k+IaJ9w2SL
g8DBwcHBDYMHbflj9Ukqp+RPi+75OaspRe0UvqxfOQ0ssIrdlpdFx9tEn33x
XE3jChvHew25y77f4eYIc8870fdQonnm2uba9l1y+hZw+C5wcHD4Ljl9kaFy
XfkuUa/F5dtzfuOv7fw9v4jzS6L955Xior6L+17aXn9yf5erN+R8F+cbuXmL
XB4a93c92nRssfJwPvX0cjx2so+GYg9aFXr65dNyr9ofnPO4Rw+69nu5qbmG
yhyzUl+k3GPrQWSLp8DBwcHBXw/vOD9vx6gnBXTELsNh8CANtSnMXd+oqoD2
hJ9zfH4pg7IfDvvdPkhNm3udPbT64C32ecT1w+T6Z3LPWX3xV9r2XfBa4PBd
4ODg8F3g+uK7OP/D+S6l/BK3fV1xpTyYKOfWn6L1jKJ9X0X7d3F5axznvCgX
v3B1IrLFX+Dg4ODgr4dXu4fZPb+9n5ZbzrmU4lNM/jm+G+2zQ9k+ltx8ZM6D
cc87ffdX2vZdcvoTcP3i8sTj4ODg8F3ghuHBtN1/Xqk5jPriu7RdF/l6+sH+
8/75nH/j8r44D8a9T+f698oWf4GDg4MbG+fm+XKfN/lmxQ/p76vI6/aJGRO6
XiPzkvSPvJqo6PH/096ZRkdRbmtYGSQyBBABBRQBBwYRNBCIoBsZ9EgCyKBM
gojRgEcmwYhcFAROUCEYEQJ4MGDAkCgEghJCDCHMgxDmhBDmjGToZhBERbiu
xb2/WC/H71ht7+p++fmsrKa6q+rrep/ee38L5k3/qqNTrrz00zvlXs2UJlHz
Lzxyv1Mmpoz3X784X6Y33ZH171ZOSWp7qeyhyHzj32UCG0QE1ntvtZQLm7+l
MKJYvms/Zk9+Upo8MTd2Rc3FmXLbL+W/eCTVIb1/Wdy4WcgRY69l1e9crubW
1pNr8yTknsH15HFycnL6LnJ7+S537bdodw9md99lVX0X2s8RzWGbuOz8B+8W
7ZXdSX0vPhXokMZFUWMvj90P91XvkbLraMz4xTJ/28OVxl0tkM6Zaf+aemgt
zCmcb09OTk7+33HTulm0bpdr9lqvwY8dlRDfDhPfyXVIUu+g5PZJR+E+MsiP
RVcI+jjUJ1s+qXmt3pPnHRJWr2WH0vezjfc7Nq1H0uaj3OW76LXI9XA9eZyc
nJy+i1yn19K2D6NdfJdVc72s8lqIm9Zrod+7EUf9ICinoBxUUnfmuev7nbLj
4XaHg2rmS/UhB1rMTnaqy33k5OTkduFdr0anDgjLlcZvJ+5PbueU2PReV56e
lgv3E0Fz1CvseT3qq55nJOl4rQv3t3BK8ODp/7hvwBn4+wXiO9tk5/zz8ji5
82xqSMzjOXLu/IvvDq2xUtpOCV84M9MpQb4PLnpoy2lJ7FKnf6dEJ+wfRL/L
mH4/WrX/srv2u3GX79LpPci9k+vJ4+Tk5J7ntei7dHL6Lmt9l929FsoLyFOZ
5pewJRc6+G3eLq32BYQMG1wqE07mHfIdtFt6pTVLWVPOITsWTMzK6lsiZf3D
51S5WqouD5KTk5N7Gx896VLSqDXfSLeYkyHx285Kn9ieEY2XpMC+clSvi75H
UB96aPMG9X96a5Ukv1I3ICqrSJrOjI2c8a8N8PcXq/oE3eWp7OLB6LXI7cv1
5HRycnLP813aPA/539O3aBcP5i6v5ep+AdN6LdRvOPX8+c0Xe2yQoEatox0j
SmR5g2VvVDyzFfYDNvj1tjcn1ymVD37LLdOqa6k8fXR2/Lq76K/IycnJ/xP3
n9tw+5HbN8qOojWlZSJLZElkQqMZl7dJ9sHczqld8mXku1E9pnd0Sp1eH/Vb
3C7fsv83qsqwnkfDT8lWv3lf+zzklLnlAhvujToFvRaq40X1YGheIvJjpnVZ
dqm/srvv0ukxyMnpu8jJvY3Td5FrruNylwdztdcyfW60aj9uU6+F8sXv2RmS
V3xYUoo+7he11CEpIVn1dv3BUE6JOju5/K/hJdJz+LnuX2aXSoslVz9JDitR
lx9dzYcs69faZ2yCnLyQ9UGn1sUSvHFoUMZTaZKZdt/PMSnHJL3RhMGbKzql
XvzPgd3vPK7u+MnJyV3H0fqJ+rUfXBVQYe+0aEnpn/fCvf0K5cye49OX7kqC
r7/7gMSsfqxIpjQZLsPjHHLuSf/EIw8Xwb/vMjY4b97G5fJ2QNSK3g2L5ELU
yNnPL1gP63vR9wiac4j6EFHdL9pXl3VZ7vVdOn0FOTl9Fzm5t3FtXou+i17L
jr7LtC4L1UGh36NRvwaal4vyBXoddDyof6RN/9m+2TmhUiv5jZg10TnSslvm
kEUFK+Fcd2350V2836pXL/feu08cG2rOKdPPIRdXT/klJuAA3P8x/iP/K1X6
n5GYzzf3SB6yQVb3ae3s8uIZqT+x98o7Q09Ij3FtSt69zyljp7SrFLf0hLr3
S07uzfxqxNqXfz+yUMb5DduavrhAYk8tmTr0RCL0/EOq3T910CmnjBh5unPo
wDwZ2/GF0Y22O6H/Wd7sw3k10hxSfvWm+6/MLZa3Jr1479pEB/zdYWjNBYfj
m+6RBx3t5667ViorsqbnftR3H/Rpr4a2qpScUCAHOnUZn1XRKZEl7e4YFVsA
j8d0Tjv6njLd39Aqf2X6+5Q2Tq9FTk7fRU5OTt9Fbq3X8lTfZeq1bv0cePPz
PPJIyF8hnvLsleDkVmsla/fqDQmXimXLpuktPlq6SeIfD1q+duAm6bzaP6B2
aoksrJRyqlKlHfD3cfS7fMykwBbjC9dJnzl+lbbdVyI/tJld4rNus5zzy6gd
2LJE/AZ1e3RWe4dM+GD+jtebeF9dlimfsn7trMbLJ0r75oOH5lzKlfdWrvBt
9kQC9IeoTmP8+8se3H3tlHS8f23bWY84xafu0W+jq5yWX5bE+v0csVROlyyJ
TP2uUCZt+fXjrWnr1H0O5OSaed/luYNuH+GUuY8W3jPmx0JZEz1u586XnXC+
Orp/0f2I1n/TuVWoTxD9v6guq1dcVtkVafOlx+K4SU26FEilorAPnylcI7e1
eT0n7PSgP75PGie0q3NKmo3dfXdSlziXz2k39VfavJM2bpXv0ukfyMnpu8jJ
yem1yFnHZVrHhfwP6ptAuQPVa5n2G6Lfu9Fxoj4XNC9ryPVSnz3VD8uCnB/X
Zs1ziCPqUuS9tTLkbKeuo+96xCm/Vl5QbbRvhqT4PBfbsCz3Mfx/fnev8Pce
WO6Uyz4LR35xb4FUDRh1Z8g8J7xOkG9EHgydX9T/mDf1ZMkLwYflRN2qZY/U
WC1hbx36vFmHw8bvC8151vb5k9uLL5rY+ETDI4Uivd5elDF0m2RO7Xmt8aFC
mXwmL7/Bc07Z7Pv86tS9Z2X1/1RfEhXglOvvZMQFD3VIwdf1rxZeLpakAedf
Gtrf4fLjRL4IrfNzkqJ+ab0wRfYN/P6lo11K5PvlC+M+3rMF1iOZ1i8h74TW
E7S/IXod9HuKq/sBXe150O9Wplybv3K179LpGcjJNXA9uZ6cnJy+i5xe6894
LdPnQ6t+vzbd9xD97o/6SlBdEPIqd1XYObDP8G2S5LOubh//Upn2ZnbtWf/4
UVKW53b+l1+OrF790j1NWzklaMbXA7e0yVGXo13Nkf+5lt3g9aeH5UnD5y7/
vLWDUz79bXSl/Ffz4PlCeRPVb6AcjfIs6p+6e+FtwetSJ0iLlxMbHZqWK1m3
ly6ovGOVPJz+zmeRazZL2ntrpzXLL5E5k7d9ObP+TnWfv6fykrozz13f75Qd
D7c7HFQzX6oPOdBidrI+n3ylT8apvs+XSviH/nN+uLdUFpRsqRr8TCms/0R1
UHEbf/vm5dg50rRKccC0s/ky4uLwSQ9c+F6qPvtE4ob3nPJr0Tcdmt9xVMrt
bDf9iT7WfQ6R87vHja1zQF7083umdFK8fHVXVH1x7If7uqL7EXmqG9+/N9fx
Io+EXgetG8hroT5E9D2Cvnes6oNzl49yF9fmtUyfZ3T6BHJyzVxPricn92au
zV/Rd9FrafBdVj2vWjXvwnSeyfykDaG/b82QE+ef+2VogkM+ark+esJXmXBe
FspHqO6rzzufvhX/RbHkX6o67IcxDhl5+Oxryz4vlgt3jTy94ccS2RmQfqZB
zB65e1vGiwk/eG7fYmS9B+95d2mOtPgy9NuV/k5J+6pV3ryYHPh5mtZvIO+E
PBjiKBejerB9Yz7LbT7hiDS6bcuTJbsc0mDTtPjsR7NkacUP0+9YVirfhmcl
7koqkW7VmxxIiiqVrlejUweE5UrjtxP3J7dzSmx6rytP/3G8sM4NvC80Zwzt
44Y8Caq3Qf7E1fvQWeVLkZ9En0PQ3LwtU3Ydk12T5z3w+egkWZ/YfcGkpGPw
vh496VLSqDXfSLeYkyHx285Kn9ieEY2XpMDjLNfstV6DHzsqIb4dJr6T65Ck
3kHJ7ZOOwnpF0zrYiOF+wdOmHhC/9M8Oz/hjnQnv3LW8z9aDln3OaB9Y5IXQ
fY08FarXReu2aT0nOk5X119pq6eyO6fXIif3VK4n75OTewPX5qnou+zltezu
u9y1f6Lp792mXgvlIORVTOsB3qm5pUNm6mRJ7b1y2JyMPJlftcZ766uuhnPA
tPkoxLfP+nZWw1dKpGNO1PqalR1yKGJXk2r9SmCd28Rl5z94t2iv7E7qe/Gp
QIc0Looae3nsfvj5W1XXYcpR/1R0haCPQ32y5ZOa1+o9ed4hYfVadih9P1su
zuza/K24/VJt+8FW24Mdkvo/b0zqe/2AZAW+2rZlVp4serzWjMBOTil3121z
1+3LkzohB6un7YmXyN0vX7zyfpF8OnfGnDc/TTXu20VeBXkwdH2iekU0dwj1
wWm7PpGXQ+8XeSTE0T536Hie9K0dOHTDQdk04FDPgrhVEiHr+reed9C4bw5d
J+h6CFtyoYPf5u3Sal9AyLDBpTLhZN4h30G7oWdDx39pUKPBK/5Yp67HBlzY
+5pDqqS8VDXbUQx/F0DvC/kr031s91T5+ourk7+Xl8s/Me7LPcWyu9v7b1eI
2GhcJ4aOx9Rr0V95p+/S6QfIyT2J6/EA5OTewLV5Knotei0N+yS6y2uZ1nGh
3IT8CfJdyD8gz4Dmd2nzA4ijvifk8VC/Fcrv6PM3zcWmdSCm+2Mif4L8D9r/
EdXDoOsN+Q3kE0yvT+S1tF2HiB/JbXugXu+j0vSVDbW+6Zko/S8+1NG33VH4
OZj2t6I6LlOvgji6X9DxIz+M7kf092he+rgv73hsQ+RxOde07fXptZ1SFJq9
/1r6cZmYMt5//eJ8md50R9a/Wzklqe2lsoci8+H+s6b9faa/UyBvjH6PQJ8P
4uwftBen1yIn91SuxwOQk3sS1+ap6LvotTR7LdPnT6u8lmluQrkV5aNqS0M+
XpVbJN9/mtJ7drhDWvhUq9LheBH0GGXP5Ua1HOyU3xb3yJ7/3RGZ51fUvvl/
UfdSxpETvPLJHNncL6LpwtA0KTq2dkm5tjnS9YuAll+955TsGW9HLB9XKK8O
6JAxZZhTSsePOrd3348S+3DK819nlErw0+Urf/bFXphnxx7rUul86C559JV2
1yLiS2X4zl+7VwtLl76vlekZciJPpgaurDF81yZ5YPdLDW4/mQf7v5A3QF4I
1VOZ1nWY+i7kkVBOz0y77+eYlGOS3mjC4M0VnVIv/ufA7nceN54PtmhG2Mzn
4mKlSY0GDe/851lJSmg1q8KKH2B+N/Vypv2VbaeEL5yZ6ZQg3wcXPbTltCR2
qdO/U6K+uqzXUz+d8eoQp3TbM+ir1g3PSsXi2JRqPZ3wuurt38l/xHGnDO0e
XeWOJrlycv7nw6ZudBrPJzftszM9j1b5MXTe0fWMfDvq40PrG+rjRuutVfsD
ovOO+k9N67jorzyD02uRk3sq1+MHyMntyLX5KHotnf6KXsteXgvlGpRbTedu
IY+B8nu/duHxJ3aekcDqAXETa6RJ+vzQ57/edgbW+aB6nva5rdJmncmW5fVS
1l/73SE982ps+7LTMZhz0eugnIv6vFC+Nt0HE51Hq+o9UB2L6VwgU27q5Uy9
FvJpyGshz6nNa/Uqzf95/ajTssEn88caTZ0y8fHhrUMnnjaeM2bqnUyvB6u8
q+nxoPljyDuh+xpdJ6gfEB2/VfsDWsVR/RtaT1ztr0y/f+3O7e67dOZ6cnJy
+i5ycvoub/Zd3ua1tD1/WjVP3tRvWJUrUV0HyoOorgnVU6E6BPT3yFOhHIe8
E+rrQf4H1Xugug7TviSrODq/yHu4y7+hzwd5DHRe0HWI9otE1yfqj8tM2JQc
Pi1dFq9Zf2rPww5pfHeVTjtP7zP2VLH3FIzq2MAp587FBVY+VCSr+sRPHFvL
CefRoX4x5HvR52Dqo9D5MuWu9l1oXUJeC/Wlmvbnmu4bqG3/O/oonZxei5yc
nL6LnJxei77LO72W3Z8nUT6yqh/NND9aVQ+D5k4jr4JeB9VXoLyJfIjpHCfk
Jaza78yqviRT/2l6/K72b8iHoPOFrkPTPjW0T2LGvm8faP+ZQy41GxM+elux
1BjRKKnyRw5jz2nqu1B9I/K3pnPgXe0trfKZ6H4xva/RuoG46fGg92WXPj5t
Pofcvc8t9Frk5N7G9fgEcnINXJt3otei19LwfIg4+h0f5UGUZ1FON517Y9pv
iOqg0HEir4XqmpCvQH1/VvXNoddBfWro8zTdX8zV/Ufo/zXtn7KLfzP1tMiH
IF+KvBa6zuMfD1q+duAm6bzaP6B2aoksrJRyqlKlHdL1anTqgLBcafx24v7k
dk6JTe915elpuXC/P3TfmdZPonXD9Lp1dR808t4Rw/2Cp009IH7pnx2eMcYh
4Z27lvfZehCer7sq7BzYZ/g2SfJZV7ePf6lMezO79qx//AjXN9P7lJ7qBrdL
Pba3cWuvN215nJycnL6LnJxey5t9l929lrbnPav2PTTd3xB5FdRfg+ZfIY+E
XgflSuSdUF0EytfIPyC/gfK7Vf2YKC+bzoW2ylO5q1/JXf7N1JNYVRdkWveF
PAnyYG92n1D32T5Z0qXClOxVmQ4p+WRYq5kXsmC/oWldomnfq7vOIzp+q/Zz
NPXP2vyVp/oobVybj9Lpu7TlbnJycvoucnL6Lnot/V5L23Odqz2AVfPAkV96
cFVAhb3ToiWlf94L9/YrlDN7jk9fuisJ5m6U01GuRBzNc27Tf7Zvdk6o1Ep+
I2ZNdI607JY5ZFEBrr8ynf/j6jlUVnktd83Jcdd17i7fZeq1TPsf0X2HfHLY
kgsd/DZvl1b7AkKGDS6VCSfzDvkO2i1lXtlxNalyoRRfHlnGcdUhrQ/GJkSX
LRT/uQ23H7l9o+woWlNaJrJElkQmNJpxeRv0xnapGzT11VatD+6qy/K2eipP
5do81d/zXKQtX5OTk+vhevwDOTm9luf5Lnf5K1Ov5a7nNHfVsZjmdJTXUI5G
889RnZXpnCJTP4D8FZpHhN6X6dwnq/rjkN9Ax2n3eTvafJfp/WLqu9B5RF4X
cXSdIy+6tWH5A9+3OSTvHqtSu+YMhzTKqF59+AuHoc8x7TdE79dddYDo/0Ve
He0fgT5n07lh6Lqy6j6lp/JOrs1TWfscpS1Hk5OT6+d6vAQ5Ob0WvZY2r2Wa
u01zDfI8Vs2ZQfnUdO4T2scNvT7Kj1btg2Y61wv1DaH+R/S+rKo/Mc3jdulj
srvvssprWVWvhbwx2ncPrSdDlvVr7TM2QU5eyPqgU+tiCd44NCjjqTQ4Nx4d
p2m9orZ6P9P5b6b7nyJvifwYug7pr8i92YPpzMvk5OSex/V4DHJy+i49vkub
13J1PyDKI6iewSrfYtr3hPwPmtuDchnK3ej/Rfna1PuZctN50ci/IW5V3YW7
+gG1zYtztd+wSx+i6dw5tL+A6Xx7tA6g/9fuHhUdP/p8TOvTTPcnRX9Pf0Xu
zb5LZ/4lJyf3Hq7HY5CT02t5j9dCz2m3zlk35wtTf2I6D/zW+eXP1y8hT4Vy
MXq/pjkL7Sdo2peH+qpc3UeGPmc0j8i0PsrVeVxb7tDmwayq2zH1pabrALre
kN/+esLzAV33j5eGM3zzttTIlbZ9Hn3IMWgVvH9N/RtaN9xVf+UuH2tVHSA6
j+jzdPX71eZPyO3F6bXIycnJ6bvI9XBtfkkbt4vXMn3uQnkB5RHT+cAov1i1
r71Vc+BN/Qz6e5THXV2/YZWvQH2U7vJXds+n2jyY6XWCzrvpXHHUp4ZeB/29
ab0WWpdMfa9p/6O2uU/arkN03tF5sfs6QO6dnF6LnJycnL6LnF5LG9fmtax6
vjLNvyj33Xidm+siUK409STu6lMzrUNAdVbuqt8wPX7TeVnuyu/a8ovOvPPX
rwfTvjPkKxBHdVbIe6N6KnTfuasf1l39cdp8l+n16W3rgLb6bXI7rvPacis5
OTk5fRe5Tq7NL2njrvZarn6OQvnCtE7JtH/Q1XnT1b7I1Bu42vOYHqdpfxA6
v67O9dpyil1ykFW+2nROuGm/sKvrM119v/N61sm1zbEkp2dz3TqvLZ+Sk5OT
04OR6+TaPJI2bpXX0pZ/TedWIW5VXZa7cqi23Orq4zfdv9Iqr6Utd2jjrj6/
yF+hvr/KffvVrVsSJE3qJ4Q8OfqEfJOy85mnv1zmcn+lbb8AbdeJXbg2r0Lu
GVzbde7qdf62//v3U4/RCdF37JXxjxWsqLljHuQ68yk5OTk5fRc5vZYG7mqv
5a79ClEORfU8iKO+Nm37tntqbrXqc7j1nHnv+Tztfh7R/YXuR7TvJ9oH88br
//X9Juiv6J3IyenBbr3+m3otejBycnLv5Hq8Cjm9lmZu6rXQc4tp3jSdh2za
f2Q6H960Lov+yrO5tvziqfnI1f2J6L5G87VM1wdXey1vWx+03Rfk5J7Eta3z
rvZa9GDk5OSezfX4FnL6Ls3c1GtZtX/6jf/35noJ5Kl6xWWVXZE2X3osjpvU
pEuBVCoK+/CZwjXG+xVa1VdIf8Wc683c1TkI3XeofxDxusG/jxn84ZtyeGn9
EcNHnJbSaS/sH7npW8hN+xPd5bV4n7qXm/5O5Klc23kh1+m7tHkt+jFycnLP
5no8DDm9lgavZfpcZJrLkF9CHOVK0znwrK/wztzK3GevPGVal4X2GUTrg+mc
LuTbTeduaVs3tF0nnroOkHOdtCOn16IHIycn9ySux8+Q02tp9lra+o9QbnVX
vRZzKHMoc99f9+TofkQc1WUhH3XjdW6uI0UczaVHHsx0PeH6wPWB3HvWQ7tw
ei36MXJyck/ierwNOX3X3+m1XO27TL0W8lemfYimeZk5lDlUM9d23l3tu6za
bxGtD6g/Ee030ab/bN/snFCplfxGzJroHGnZLXPIooKVlq0n2s4X1wdyzVzb
de6pnF5LJ9eZo8nJye3L9fgccnotV3gtq3yXqddC/YaIm85/Zg5lDvUGru26
crXvQve1qdcy9ee3fh3PWze0Xefk5HZc9+zOtXkecvoxcnJy+i5v4Nq8k929
lmk+Nc2bqM8oYF+nEXWf3SsVz01pXrfjNzIqqiji36fTYd8QqvtCx+OpOZT5
lNyOedCqulDUP4jWB+TJvc17a7s+ycm9Yd2zC9fmZ8jpx8jJyTVwPf7HU7k2
7+Rqf+Wu5zrTHIryI6p/QPOf0d8jb8Z8qjNfkOvk2ryW6Vx65LVuXS/qeeuD
tuuKnFwz13b/auPavAq5Z3CdOZ2cnJy+Sz/X5qm8zWvdOJ6/3jd043XQXGjP
6zfU9vxPTv535kHTdQb1FaJ1wy7z9LSdd3Jyb+DangfotcjJ6cfIye3L9Xgh
u3Ntnope69Zey3Q/RLt7LW3P8+TkmnOiaR8073dycnJt65hduDaPQU5OP0ZO
7g1cj0eyC9fmr7R5LVfPeUb9ichr2X0+vLbnc3JycnJycnL6LnotcnL6MXJy
/VyPR9LGtfkrd3kt034cU6+F/NWN40T9QTf3E6F9ErXN19L2vE1OTk5OTk5O
30WvRU5uX67TM5CTa+Z6vJO7OL3Wf9dXiOqpkKdCvgu9DuKm/YlWeS1tz8/a
rltycm/m2tYHcnJyPVybv6LXIif3Hq7TP5CTa+B6fJSn+i5rvcefn0uD9he7
8fc311lVOHpfr8oREXLHhEd/OhGeLweuBr1//bfvYF+had0X4sh3tek/2zc7
J1RqJb8RsyY6R1p2yxyyqGDlf/gc6JfIycnJ7f59R05uR06vRU5Obheu00uQ
k9N3eYPXQv4K7T9o1Twr9Pem/Y9WcXoqcnJycnI938vk5Dp9l7YcTU5O7nlc
p8cgJ/dOD6bt+dm039CqPr5bv77+fce05SZycnJycu/k2rwKuU5Or0VOTk5O
P0ZuF67HX7nLd7naa93gN8+/0uav6KnIycnJycnpzcj/Ht+lLbeSk5OTu5rr
9CHk3sn1eC13+S70fIL2E0R1WaivUNscdW15gZycnJyc3Bu4Np9DTq9FTk5O
roHr9CTkns3t67vQ88yt9yX883VW2p7TtD3Pk5Nr5trWN3Kd++2Sk2vg2p43
PJXTa5GTk5Pr5Do9CblncD05yDQfaXuOoqci92aubd0g906u7b4gJ6cf08Pp
tcjJyck9g+v0KuT24swv5OR25NruX3JyzVzb/UtOTg/mOq4tr5GTk5OT04+R
a+PMKeTk9E7k5J7Nta0n5OT0YPRa5OTk5OT0YOT0YMwv5PRO5OTk/H4hJ/ds
D6YtN5GTk5OTezbX6WHI6cGYX+iXyMnJyfk9Qk5uR9+lLe+Qk5OTk5PTg5Fr
yx3k5OTk5OQauDbvQU6uwYNpyy/k5OTk5OT0YOT0YOTk5OTk5PRd5J7B6bXI
ycnJycnpwcjpwcjJycnJyenByL2B02uRk5OTk5PTj5HTg5GTk5OTk9N3kXsS
p9ciJycnJyfXw3V6G3J6MHJycnJycnowcntxbc/55OTk5OTk5PRg3sn15BRy
cnJycnL6LnK7cG3P7eTk5OTk5OT0YOT0YOTk5OTk3sO1eRJye/H/BSgJ634=

   "], {{0, 0}, {201, 201}}, {0, 1}],
  Frame->Automatic,
  FrameLabel->{None, None},
  FrameTicks->{{None, None}, {None, None}}]], "Output",
 CellTags->"12.3 Exercises"]
}, Open  ]]
}, Closed]],

Cell[CellGroupData[{

Cell["Sieve", "Subsubsection"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Sieve", "[", "100", "]"}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{
  "2", ",", "3", ",", "5", ",", "7", ",", "11", ",", "13", ",", "17", ",", 
   "19", ",", "23", ",", "29", ",", "31", ",", "37", ",", "41", ",", "43", 
   ",", "47", ",", "53", ",", "59", ",", "61", ",", "67", ",", "71", ",", 
   "73", ",", "79", ",", "83", ",", "89", ",", "97"}], "}"}]], "Output"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Timing", "[", 
  RowBox[{
   RowBox[{"Sieve", "[", 
    SuperscriptBox["10", "6"], "]"}], ";"}], "]"}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0.2717309999999955`", ",", "Null"}], "}"}]], "Output"]
}, Open  ]],

Cell["\<\
Check against built-in functions:\
\>", "Text"],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"Timing", "[", 
  RowBox[{
   RowBox[{"Map", "[", 
    RowBox[{"Prime", ",", 
     RowBox[{"Range", "@", 
      RowBox[{"PrimePi", "[", 
       SuperscriptBox["10", "6"], "]"}]}]}], "]"}], ";"}], "]"}]], "Input"],

Cell[BoxData[
 RowBox[{"{", 
  RowBox[{"0.04490499999999997`", ",", "Null"}], "}"}]], "Output"]
}, Open  ]],

Cell[CellGroupData[{

Cell[BoxData[
 RowBox[{"With", "[", 
  RowBox[{
   RowBox[{"{", 
    RowBox[{"n", "=", 
     SuperscriptBox["10", "6"]}], "}"}], ",", "\[IndentingNewLine]", 
   RowBox[{
    RowBox[{"Sieve", "[", "n", "]"}], "==", 
    RowBox[{"Map", "[", 
     RowBox[{"Prime", ",", 
      RowBox[{"Range", "@", 
       RowBox[{"PrimePi", "[", "n", "]"}]}]}], "]"}]}]}], 
  "\[IndentingNewLine]", "]"}]], "Input"],

Cell[BoxData["True"], "Output"]
}, Open  ]]
}, Closed]]
}, Open  ]]
}, Open  ]]
},
AutoGeneratedPackage->Automatic,
WindowSize->{844, 860},
WindowMargins->{{Automatic, 500}, {Automatic, 24}},
ShowSelection->True,
Magnification:>FEPrivate`If[
  FEPrivate`Equal[FEPrivate`$VersionNumber, 6.], 1.25, 1.25 Inherited],
FrontEndVersion->"8.0 for Mac OS X x86 (32-bit, 64-bit Kernel) (October 5, \
2011)",
StyleDefinitions->"Default.nb"
]
(* End of Notebook Content *)

(* Internal cache information *)
(*CellTagsOutline
CellTagsIndex->{
 "12.3 Exercises"->{
  Cell[7243, 248, 486, 15, 66, "Input",
   CellTags->"12.3 Exercises"],
  Cell[14101, 496, 718, 22, 110, "Input",
   CellTags->"12.3 Exercises"],
  Cell[14844, 522, 197, 5, 41, "Input",
   CellTags->"12.3 Exercises"],
  Cell[15044, 529, 41890, 690, 583, "Output",
   CellTags->"12.3 Exercises"]},
 "Info3563779584-8201795"->{
  Cell[9370, 340, 389, 6, 87, "Print",
   CellTags->"Info3563779584-8201795"]},
 "Info3563779585-8201795"->{
  Cell[9860, 354, 366, 6, 87, "Print",
   CellTags->"Info3563779585-8201795"],
  Cell[10319, 368, 469, 7, 118, "Print",
   CellTags->"Info3563779585-8201795"],
  Cell[10876, 383, 284, 5, 61, "Print",
   CellTags->"Info3563779585-8201795"]}
 }
*)
(*CellTagsIndex
CellTagsIndex->{
 {"12.3 Exercises", 59128, 1311},
 {"Info3563779584-8201795", 59454, 1320},
 {"Info3563779585-8201795", 59563, 1323}
 }
*)
(*NotebookFileOutline
Notebook[{
Cell[CellGroupData[{
Cell[579, 22, 68, 1, 83, "Section",
 InitializationGroup->True],
Cell[650, 25, 398, 13, 34, "Text"],
Cell[CellGroupData[{
Cell[1073, 42, 30, 0, 42, "Subsection"],
Cell[1106, 44, 134, 4, 33, "Input"],
Cell[1243, 50, 239, 6, 33, "Input"],
Cell[1485, 58, 146, 4, 33, "Input"],
Cell[1634, 64, 373, 9, 53, "Input"],
Cell[2010, 75, 137, 4, 33, "Input"],
Cell[2150, 81, 147, 4, 33, "Input"],
Cell[2300, 87, 241, 7, 33, "Input"],
Cell[2544, 96, 256, 8, 33, "Input"],
Cell[2803, 106, 266, 7, 53, "Input"],
Cell[3072, 115, 154, 4, 33, "Input"],
Cell[3229, 121, 173, 5, 33, "Input"]
}, Closed]],
Cell[CellGroupData[{
Cell[3439, 131, 34, 0, 31, "Subsection"],
Cell[3476, 133, 63, 1, 41, "Input"],
Cell[3542, 136, 165, 3, 41, "Input"]
}, Closed]],
Cell[CellGroupData[{
Cell[3744, 144, 57, 0, 31, "Subsection"],
Cell[3804, 146, 355, 8, 72, "Input"],
Cell[4162, 156, 362, 8, 91, "Input"],
Cell[4527, 166, 441, 8, 115, "Input"],
Cell[4971, 176, 263, 6, 72, "Input"]
}, Closed]],
Cell[5249, 185, 29, 0, 31, "Subsection"],
Cell[CellGroupData[{
Cell[5303, 189, 37, 0, 31, "Subsection"],
Cell[5343, 191, 74, 1, 41, "Input"]
}, Closed]],
Cell[CellGroupData[{
Cell[5454, 197, 63, 0, 31, "Subsection"],
Cell[5520, 199, 107, 2, 41, "Input"],
Cell[5630, 203, 327, 9, 66, "Input"],
Cell[5960, 214, 1280, 32, 208, "Input"],
Cell[7243, 248, 486, 15, 66, "Input",
 CellTags->"12.3 Exercises"],
Cell[7732, 265, 752, 22, 177, "Input"]
}, Closed]],
Cell[CellGroupData[{
Cell[8521, 292, 41, 0, 31, "Subsection"],
Cell[8565, 294, 51, 1, 63, "Input"]
}, Closed]],
Cell[CellGroupData[{
Cell[8653, 300, 32, 0, 31, "Subsection"],
Cell[8688, 302, 58, 1, 63, "Input"]
}, Closed]]
}, Open  ]],
Cell[CellGroupData[{
Cell[8795, 309, 27, 0, 83, "Section"],
Cell[CellGroupData[{
Cell[8847, 313, 34, 0, 42, "Subsection"],
Cell[8884, 315, 37, 0, 40, "Text"],
Cell[8924, 317, 30, 0, 41, "Input"],
Cell[8957, 319, 183, 6, 40, "Text"],
Cell[9143, 327, 65, 1, 41, "Input"]
}, Closed]],
Cell[CellGroupData[{
Cell[9245, 333, 41, 0, 31, "Subsection"],
Cell[CellGroupData[{
Cell[9311, 337, 56, 1, 41, "Input"],
Cell[9370, 340, 389, 6, 87, "Print",
 CellTags->"Info3563779584-8201795"]
}, Open  ]],
Cell[CellGroupData[{
Cell[9796, 351, 61, 1, 41, "Input"],
Cell[9860, 354, 366, 6, 87, "Print",
 CellTags->"Info3563779585-8201795"]
}, Open  ]],
Cell[CellGroupData[{
Cell[10263, 365, 53, 1, 41, "Input"],
Cell[10319, 368, 469, 7, 118, "Print",
 CellTags->"Info3563779585-8201795"]
}, Open  ]],
Cell[CellGroupData[{
Cell[10825, 380, 48, 1, 41, "Input"],
Cell[10876, 383, 284, 5, 61, "Print",
 CellTags->"Info3563779585-8201795"]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[11209, 394, 56, 0, 31, "Subsection"],
Cell[CellGroupData[{
Cell[11290, 398, 38, 0, 30, "Subsubsection"],
Cell[CellGroupData[{
Cell[11353, 402, 310, 10, 66, "Input"],
Cell[11666, 414, 102, 2, 41, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[11805, 421, 117, 3, 41, "Input"],
Cell[11925, 426, 54, 0, 41, "Output"]
}, Open  ]],
Cell[11994, 429, 145, 3, 31, "TextFirst"],
Cell[CellGroupData[{
Cell[12164, 436, 348, 8, 137, "Input"],
Cell[12515, 446, 53, 0, 41, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[12605, 451, 325, 7, 137, "Input"],
Cell[12933, 460, 87, 1, 41, "Output"]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[13069, 467, 43, 0, 21, "Subsubsection"],
Cell[CellGroupData[{
Cell[13137, 471, 124, 3, 41, "Input"],
Cell[13264, 476, 750, 12, 90, "Output"]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[14063, 494, 35, 0, 21, "Subsubsection"],
Cell[14101, 496, 718, 22, 110, "Input",
 CellTags->"12.3 Exercises"],
Cell[CellGroupData[{
Cell[14844, 522, 197, 5, 41, "Input",
 CellTags->"12.3 Exercises"],
Cell[15044, 529, 41890, 690, 583, "Output",
 CellTags->"12.3 Exercises"]
}, Open  ]]
}, Closed]],
Cell[CellGroupData[{
Cell[56983, 1225, 30, 0, 21, "Subsubsection"],
Cell[CellGroupData[{
Cell[57038, 1229, 60, 1, 41, "Input"],
Cell[57101, 1232, 339, 6, 66, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[57477, 1243, 137, 4, 51, "Input"],
Cell[57617, 1249, 94, 2, 41, "Output"]
}, Open  ]],
Cell[57726, 1254, 57, 2, 40, "Text"],
Cell[CellGroupData[{
Cell[57808, 1260, 235, 7, 51, "Input"],
Cell[58046, 1269, 95, 2, 41, "Output"]
}, Open  ]],
Cell[CellGroupData[{
Cell[58178, 1276, 397, 12, 106, "Input"],
Cell[58578, 1290, 31, 0, 41, "Output"]
}, Open  ]]
}, Closed]]
}, Open  ]]
}, Open  ]]
}
]
*)

(* End of internal cache information *)
