]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Add printable version of new report. Cross-link report anyway.
authorwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 14 Jun 2002 10:31:20 +0000 (10:31 +0000)
committerwolf <wolf@0785d39b-7218-0410-832d-ea1e28bc413d>
Fri, 14 Jun 2002 10:31:20 +0000 (10:31 +0000)
git-svn-id: https://svn.dealii.org/trunk@6115 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/doc/documentation.html
deal.II/doc/reports/assemble/assemble.ps [new file with mode: 0644]
deal.II/doc/reports/assemble/assemble.tex [new file with mode: 0644]

index a21633853be84a3335ab2b6381abfa5d4c090551..87c4c36bca18bb5f46276b23c5c2b7c93b97fd18 100644 (file)
               boundary approximations. This report gives the
               theoretical background of the <code>MappingQ</code>
               class.
+
+         <li> <p>
+              A report on
+             <a href="reports/assemble/index.html"
+                 target="body">assembling matrices</a> (by Wolfgang
+              Bangerth). This report looks in particular at how
+              matrices are assembled for vector-valued problems, and
+              how things change if vector-valued finite elements are
+              used for which the shape functions have more than one
+              non-zero vector component, such as Nedelec or
+              Raviart-Thomas elements. There is also a
+             <a href="reports/assemble/assemble.ps"
+              target="body">printable version of the report</a>.
+             </p>
+
         </ul>
       </p>
 
diff --git a/deal.II/doc/reports/assemble/assemble.ps b/deal.II/doc/reports/assemble/assemble.ps
new file mode 100644 (file)
index 0000000..a839608
--- /dev/null
@@ -0,0 +1,4785 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.86e Copyright 2001 Radical Eye Software
+%%Title: assemble.dvi
+%%Pages: 13
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 596 842
+%%DocumentFonts: CMR17 CMTT12 CMR12 CMBX12 CMR10 CMTT10 CMTI10 CMMI10
+%%+ CMSY10 CMR7 CMMI7 CMEX10 CMSY7 MSBM10 MSBM7 CMMI5 CMBX10
+%%DocumentPaperSizes: a4
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips assemble -o assemble.ps
+%DVIPSParameters: dpi=600, compressed
+%DVIPSSource:  TeX output 2002.06.14:1228
+%%BeginProcSet: texc.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
+1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
+delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
+B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
+p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
+rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
+exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub
+dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
+ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict
+end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{
+dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1
+roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def
+dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}
+if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}
+def end
+
+%%EndProcSet
+%%BeginFont: CMBX10
+%!PS-AdobeFont-1.1: CMBX10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:06
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 69 /E put
+dup 71 /G put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+readonly def
+/FontBBox{-301 -250 1164 946}readonly def
+/UniqueXX 5000768 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306462c563d51ece66fcc9c831843ecae
+1fefc1a232e2724f7baee428ae03aadb95c3035345c15e9922fe49e1f2cfc980
+237316572dbc57064edac9b0db8913a5e2d45e97e19a91435ccf8adfc835b585
+48e74b291446d689c7f2f8c4325e8356e974ae30c3e2977477baeaa33d141fb7
+80f59351e84bfc88c87b3a4a1d25e168b9d134554f6a581378c7d2d6eca8ac09
+045cc3a5e0ed86f147133f094029e3483bebc81cfde69942cf645ea20d0a2b64
+5140ccc2f9cb4a3d969f4b0a79cd3329b440dfcff5285494406f3dd08d804c86
+df191e57232f6f1f83df6430f214e03fa5412b1e13d83c60c52a698bc9a38159
+19a64162af7b83a9468fae9507c6cb55ea80df8c696dfbc3296c663902d77e89
+a181502627281181ac8624f65be9de5fb32f056cc7dd7cbc7366a91717b5892a
+34ef6b441871c6993da3a81afc9bf70ff3842a21a29c0e49da1ccba37dd6b920
+2702db510b8b1109acf4c27ee8d676bdbd16abe189f34a9b61532eb777457698
+cee0561838eaab2d3939c5093afbb215bac433d1918c739b62566906bb2187f3
+378521fb52e70c18886e1aa15f53a1f8a169528cf2ddd54c203613ff88e619f2
+6c9c50c2c3b8b8c868a88afab1dc8472e7b6f3f992a161723a3c0904865a7c42
+3281601eee91f35222c4a71f343739f102eb43145a47e4fac3bd666e4c114a90
+5950618ecb1bdc29f90f6ebed1d8325fe6b52e14a8870e9b4bb088e585c71b91
+493c12845a101937e3473ac5e9ae24f7c358f06d590d7618e1a1d5834d87621f
+e3f5432b655eebd4ca61a7b00dde0aa740796ce88a43d1c6952f8d2ca63d30b6
+dcbadbb0dadf13150a442714675dbe51ff838f2e47ebe8cd44f1eac6ae5b6ceb
+0b07af03f5d3896ff935a198aa635e337e367e1e128d15e31afe3ffca8245e41
+a3e17011340e49d52fa1e322b435b4f7f2f49ae01f6a319f68d3d786c24be810
+1e1c975a8ba8debd89c6d93db8646b0224c805409e897061b37e81edcb4eff88
+47640c51c28e66d1dfb39ea37525a7f925eab9bcaaa741f90bf207c73cb892e0
+45163ca4d9d25aacbd790e0bcda3746991c5c70ae00e1db0091854884e0fcca1
+a38cdbbe0589e466520f7a132741039b0fd0d2e7aeb2aa458405f0374eb2ad2f
+2c8cf8bc7583d1c7e127e9a50057dafeec9c515005478309a953ea6c972cd208
+1cc5364d221e1b4fecc486b2d79352e839bf4e6cdc7c62065d4aa0af68c919e7
+34e32b6232cf543e829a8c6b2ce9adede5898d91595e3a2efac8c464edf6bec7
+ee9f226ec716485d8171f69e74f0fc08abcc77df5f54a407fb69c928822a5ddd
+f60e7440a2520aa45245586aae9c67b82497decb370372e4ec1738b258bc358b
+4e5953940e16f418b8d27b59565986e3a76b485c2576f23cae22e71c30ec545b
+4f97baa009673d5de69f47fc1bf5450b4499c7c8e8021ab9c364a026799526e4
+92a75ff93fe940ae263a21cdc06af1085c4a18732323457c93e3aa7cf9812fd8
+c603c8e4bf534fc01e66a51a82c2b2be8eb855c73f3e7d578cd60ea458fe37ef
+b91339522a40d7b63d2e709e13e2458650ad20d5730187aef2467372050e92e5
+8d84186ac0c0bdb21f0728fcef3fb862f9a8965e6a65ccfbfe7e51fb157df270
+ae80f251a7a8dace39038b4a2fcfec671ce0ad92e4d5c90702c427fe23278ff6
+6115fa88fa4f338ec647873b483872e75ec56f1ee8e00d5a37e1b1a083f51913
+2f16c6cfb4cd098781a886eb5e8f93ea6c232aef4f64dc85ed090abfb289d654
+52c5b7daf6632fef944bd1db8c902403f769a0b369daa93d124d22c7831e3d64
+890f259bbe326e3a2ab1bd7a4b21f66026be8e37a1edc649f871a3fa75c55079
+d21142b35ee29cad28a15db16c26003e9b67337ee52739e54759aa37ffc908e0
+6cff5d0e05840094ec6b28a565c0b8485b13ebc3da97e5b5182e2b38f3f4027b
+f472d2dd4559849b256b85e535bb63e3bcd8734558a0dcd0d91b43d01baa1d76
+4c85a4eee967be0f383fc8d67c00d15a36f2c9368f5610ccf7f4f181e83a01b6
+24b04f74faa7748fb7f3bece2baab6c6225ee2f8f9f804a40ed0d8714e552fb4
+2e3441ddf48511ce387605ce62da66ed4eb7c87dc1d594bad8006ee519252550
+52f4a6d6d21e417b25c3fa4b624386e40acda51c16a3bd6f7e208d3788e3688f
+fe59e08965760a23bbb8f7d682538ee453d828a044245de5a6f1e28aa5053a3c
+4c0be8ba96974953b095004f9876b56fe9868d7dc1bc623c0c919b4ef8e8a2d4
+c0ecfeaaef0dcf37dfc34319f9c0c9459e7db76991a6683fc5f66d88d54629ff
+a833257926b752fdc3ed6e17c948c167ff7316075d277d16c72f17b9434e6844
+de9c647164245036dffc5dae9163d0e4b58237302332c6d2ca4a59ce6921033d
+5919eb617a490920d528c456a34e671df28c79cdf66ac4f8dd69da0b5163c3ba
+0b275dc0a54afba12164c6b9b6508193002cfa8041281220328c15acfdb64d26
+926adbffa5164efb714af5a14abfa7ecbe079dd5481bbaa9618b5bf625381372
+0cca156f71c2ce7e0ed9d56abe3ac04085e35383f90a8fbf7afcd2d5dfd6f52c
+186b172cf814d6f65663837be4ca4cdc418fa669ac6bf91867d2f46d66ca50e5
+04263f0e6d85d55269faebc393f63b37eb20f45dd95967fae7103322419eef5b
+59024c670b6b8c644fe8fd82628cf30d0af16948231abade88eae85e633bef10
+e72b3a6b627efad5d8ea7cdf55770a4c8af859c8e47481f8c64cd4bea275d4ec
+5766bc16002b118c5a98e03cafc77b5e37050b63e7bc8e4ef6f69f66cf22adec
+15b74db7b9f1dde25bd4b0384a58d5f51505c1e6ea5de3a2ec914f94099faf0e
+8ca7f90ee51e83978143711ffdf55cbeb05fe978f5865bed1fa0f24377c4cc07
+ece35a99a9fb7e62c19a3608d13ed7785ccc27961d8dd7c6ae26c8d6110a0618
+b13f4c570452a12fbac547cfbe5b2dc695b4fddc16704ac6fda3ff94e72d8957
+d2a48cbfed11839315bc45367db66fb83fc1898b9692a78cdfd5d1765a100013
+0485298a5c43d51b658c083bb97940c687ff6985804453001dc7a2bf28181e38
+45c71ea8420f6b48dcd3f3b332f8ac78bbf5d5d7eaf23f3cac919c05a6088be4
+66e7e770173f4df1a234e42cdf2c3f52968a203994092a00553d8b10be4b848b
+d99fe5bfebcb5c2c856c55e2e1aeddfe8e1c496a26f8f7d8de30ddf54103cc3b
+eaedcc16b3be2fb0bc52cda49430393855c38f7d5189f55895cf4b6c25c587d2
+37ee654c4bf55003a855afe57751cc74d3036771bfe1dd01b564767d94682720
+88d5b6fc1384dc1c00a8c6d827850a038475aefb57060707d1a3fadcff525138
+ec3420dcf11b4623fde6f2e90ab4206ee65ba26d85b936e2dac1d8f0985820de
+a1c5fcfa5dcd609e75e31bb0c3cf87f0eb7cdbc3d7f3067faea95137a8bcf65d
+41088f25f1fe4cee81f54bea54be1ca1d5cf238d36090b16e3cb02292af9127e
+e1377ccd08df3e349b35d271a4dfcf9a2495bbc1d56771949bf8083d6a81d77a
+90b8d8c8e4abafcf07ac8bef65f6fe4eea7ee09b3f6419c958e8f81e6b3d82c6
+1aa8e64e543a85b8ef1a61751fc5df599dbe75ea5669f843bdd048e839a4951c
+7dafe01ad3945caf0cc111e8fc95779f3dcd42ac01714b936e57f6d3ce30c78b
+ecbd9ab9edd7bf00ca85223830531a176bef009aeb9a522fd1b2228e547de4df
+36d3707e7b54311007332ee829f808fbb2cec5d4f165013bbbec3a615e057a15
+65cdc8992dbb4cdc7ffb9f930e4ea96ca2597ab45244c5ffbe46ccb43891ae28
+053bcf8c45d7b0e0f1743418f8afcbaf19415e35a4306879ca2a4ed99baa57de
+c9f3d6aaebcfa8999c25d7d89e5061fa40f97ce6fa3f8a8ad87e8e6c899ff376
+b251ba11747461f2e1a75e5e7ee40204ed802f225095f0edf3c8d4723062d7ab
+0fd3d18d30b18cca85ebe3765699a2e5bcaaf350506c7360e7914a75f36cd13a
+f8dd68a72030bc373fb58849d9b158c7b1508ed980e7817737e10f2fcc224d72
+2f16192a18a7d21f1922b6ff94b50261ceab28674f648efd90879a8d557bd734
+44f8d8e3310fb55099cdae0fb4f03090323408c4d319153a2bc36218e45b5555
+9be8603e721f99b41d400801b15d5301ea5eb2cd42752464bf25523aa6163aeb
+9764ddea342a78fd1d43c33f50acf8431d28016b943f6b5345a76f7de6cf273d
+aef8648f48e5fdac3f573149e7e705cf2c82996bb8aef7cb699c79304084e8b7
+c9e437cf9cf8e24c78eb6b1c6b528445e42f7cc553746105e98e19aa699f92c6
+def1446a7008a0298c0cc9c9ed9601a62177202dcbf60357549c824d9697e9a5
+a0f400f4ce741827bfd897ce4cce024a18eccae6783106a710d8c76d2c9da409
+810f437c0b395024f0155025ab4d82ec8f2024b136da891a625ed5a872e1b81e
+551598a9802ca89a85846620e215485e9ca1adcd94fe5ac86cd4d49f09c747e2
+295dfa2af72fd1f6130d277a212c05e91eeef5ff188f58cd4e99a838770bae00
+d12de9609410f847b491749b79aeed9f024acb6744eb560899de7f957e50dbc8
+4cd61b5a60eaf47717a48855f304a283c972213de3fa9812a03b6fdb829a3e0d
+cef701b4da8dcc4db91b2c1e3a11476c36f4426019d2d9aad2ea9a8e39ad5789
+4ff08f83eeef9a643e212eaad81cb81b2add7a8def7810ba7e2682d45c0f175f
+a2e16a127190227faa28f90efc2a41ec6dcb6399058ef56bad97e2b7d07199b2
+d00bba6af6024a4ba8acc7468d43b17dec3d7dec0cb79753a1a5a4839427c366
+f27b7346035f7349fd205392ad144abcbf23fabf068d12abad12ddbfcfb9de19
+5c72c0e51e0640ab8ba1f54560bb30d52961488dbc88ec9c67f2d577dca45d77
+37e9b074245b69b13b09cb447708d6e9bcf4fe1d30be0b6dbfb15e9fdd3fa182
+f90dad78e63bd0a21765f89eca3a5b6c9908a3e6a4c73f8b6d9a6b9992d6cae0
+9235e3ff65d3daebfa21917dd5da7961052ad5bf1b447ddbe5c40ef332e1926d
+f4a2e7e03ad2053f80db3cc5f9c25c7285c8154372bc6620b0b6c888ca046a53
+e64aa3a1f0add6c0bd28e992a3ac3a2229f86c089021ac84ab80fc0af7ff5ce7
+5941c3c15a706de1e6ecfe7acb81935d563db38b05736ba75b9e8489d44a3f54
+512173b661e92c2debab249d649013d83747fc625c54fb4fcb40c344fb9b9bc7
+981b3cbe955651908777338b0557369c5c86f588665e65a630f94fe5023014b8
+258aa8d65d3d8fb75b33465aebd208c7072b6531dcb96143c2ff45ffc60cfa4b
+5028ef487e42e5ad39557511a5838ea19090f019020ae01830d44c4e71d932d3
+03396252a730258436f90638142bd4c02137a2d5b84ee9e5a990fb626892b86e
+bd89c2acedafbe38a95d591206e387b5724c37816db308970787181be6e1596f
+83fd4aed608329db92480992c04d8e88946b9acefe54aa6350ee04de9be9154a
+6fa03606301fc922ee58129af63ead00d64c78576bf287eab9090b3b9baeaad4
+0138c4f09e50949fc667bb25dff16e27aeb0b9ba94963a02f645b16c624629c5
+bd0e31a2f65c3e7b35b6d59b2455765b8f332e351e8c4391fe9789a0f9b7a894
+3093d79daa0593e0fda554006799cc6399a14ec337a5ae6a3294c946193fdab7
+da21888dd9ddf8940ab450e851da5a0a78204a6ec4b4c8f760c39061c6dad9c6
+e59faa3d9b088f10564ff0dd78e091516b4c64cb6f7b9a7a6b375c6fc10e2086
+dbf84db0666380f71a426f9e620ee5f33be163a0326a02f320d28e8f99a87b06
+9b518894bb0aa7a32c79503ba0424237360dd1471cf7db50dcce112bcf73c69d
+a7097caad602f3ba9f95523737dae070166f6192f9fa37b4ee73531a0d869ce1
+ab10ca58439d4a4e76f7e29785081540777aa340f6e8a34e468e9ef42becd452
+cb48e180f92e5dca7bbb4182925e3f3d126f573e79de1c4a2b592a31d056314e
+7710aa2f3256682e03860d4e5881eb38d48d25770e4c2c76261a2844ff7ef14e
+68606e47705deced3700ef26544bc82faf609a85045f7d648c678b3d474af407
+93b28709a5403a3acbf996d49899b74412bd6ec9a5fe612ed549bccfb653286d
+4fb4cb9b728a16cf5b59a40419b262861de214487b144c654689c7f8ff62c86d
+272bf1793f0f6a0fae4760a2ba94c56a5e1fd56a868f7817c398c732571252bb
+068d2e6efbd15074befb6f0e2fba8ef814d05d151f02a00f89b824e20af72206
+418c0aaeaa51424f2c13e5b413733dc3c09329412107a882565d13fc889ceb05
+6928999bcc15f883610dbed7a711a19d2836beef96eaea83f6509d93c1bbe548
+f43e3b8fddf5a50971dbcaf6b0945d1b328a2b5a732e515239f81cca72adca7e
+fcd8f84924b8573525212bd891ae028b9b48a15dbaee8d869e36439dab294d7b
+9e504e4108599d3de92c1c64b504cf73e72e2cc1a3d034cca3836cba061fbd25
+9cab1a5ea506a99b8bd530649a3705831d53a36eb780bab97a6a2117943d1a0f
+66b8e5a5907c1b78e3614f894e7b7017e03b2134970414c7dc35b40b6ddd23b5
+47ef28adfb00fa09e6fc301cd23f32264c9c00593aa164931561d561bc97e269
+b981bf6c0766c8e86da1614eff50f4a95378120206c51e59dff6c01b06c46718
+1e8d207f8e171f5f04a8085a8c49cf7407502c07868194cadd1daace2774e163
+059be3b06b0c57acfbad62805e272c52c9ab882864df59482ca0660b9c2a484c
+3d2e702a2a0a7a3ddc74260084ec1b33c750fea409a96874e66d32625377f7a6
+c7c96bb2570c5a3b2486c5716551faf52434c9189efb3a472be391f34511cdb8
+e57e641d97802decade70552a9a5
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMBX12
+%!PS-AdobeFont-1.1: CMBX12 1.0
+%%CreationDate: 1991 Aug 20 16:34:54
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 12 /fi put
+dup 45 /hyphen put
+dup 46 /period put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 58 /colon put
+dup 65 /A put
+dup 67 /C put
+dup 73 /I put
+dup 76 /L put
+dup 83 /S put
+dup 84 /T put
+dup 86 /V put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 121 /y put
+readonly def
+/FontBBox{-53 -251 1139 750}readonly def
+/UniqueXX 5000769 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be79011d1f5bfae5c1f476ee6f05eb1d2caeb
+269958b194521197b312fcced4867f3c8fbd030bd715d8ffda1dcd454b174e7a
+1a97b59fe770e67702519d9d9b23d61ac08424d555242a8ca08c49aef300945d
+99b999a79ce74804ae6bfde623f4463371442f6523a5f6ce19c839a708c02513
+2e22c696c8ccade45680e5197189d0f98e7f0d5f955e353970b392cf530a68cc
+56b0035ddfbf206c3074beeb0739dcbca272a6e629fb7aea2c5ba7bae50c7b4c
+a595df78200c352997ec3ee564df229fbb5473f5e8ccb1cc0153e9a7e299a8ea
+a29b69d1b622b1f0cffc58291248759607d91150cb0651120970dc9f743bebef
+44f6ae92facec57658999c8bf01f60611560043962c0695e1bb87d090e0fdaab
+659d6557208a660be9aeef8ae55f71b8bc76394d792967e41bd8023b6e7f8c3d
+9987d5e54c53bf2bbb32855b946473b44833bd78873df8e4c7e668ffff25aabb
+8da4148f744b9d0524d6cb8281247b3052cc5d66f3f1bcf8a56a3fb446ea587b
+d8be30257652cee035628aeddfd8283b5ad21b8b1480ad24d898970ac8a1e33e
+543ce4e3c48f9ee621c5ce3e8ae930f890011b630866c988606068d9e92396eb
+f51bb3db204505fc3d09d4701ac703a14d92bbfe27bd7411b363a88e33a8e9a8
+025ac31f21e73dc52b333b918d0b1270c54873a490222d041a66e0192612be6d
+2c88958a8f70c10390146ee5091df020ab97675e8e6b9e705fbe5d4a561453fc
+99aacd038d0c9d92ce58c764a1a6cd497ec3cef52975ae84cc7e1d0401a7fcd4
+d5e847133c58d736e373745cbfa06237a1ee4ff0706bcc02e316bfe85ec2f0b4
+2dc3c3bb232c4045115c86f37c3bf3aa17b765020265aa22553707335d7fcd8d
+9f619e844ae579bedcd8326b4e97b5ec744e172232ba7d77527d51619b629035
+8eeead95e65ecd25b250137cfbec4a4ab9ada531afc7675329140b035b5b95ef
+70e59fa7265b97d059802c03f27a892dbc7bba4029e2c27bde2b345629887d0f
+503daa813e2f4aa88286ca728443687bb970205e7a1bc8a1e926fbcc08bb53c9
+78dcd1347cbe7db6901de8961f3ae79fba9727894f0bd32eb07af25fbf0ed58a
+e411298f0038ebb9ce560f435ad1c4ac5a042bc7edc88360aa45b3fabc9c8715
+fda2833f3ce873627eb594816ea234b181df3e546cfe9357438b3769c9eaa461
+71a027ed4572e8a28931c3adfd19fb998d53cfb0c45e2144d17c94f0a89f2b2c
+3202e3aefc9c426deb8d01ff3f6c966870cbfc3946c6b2357447f6e2f1f698c2
+17c08485ba86f6ebf5be64a6d6176f777969da23715886a968bf837873ccc07e
+d48f716fc3320f9d97953c57120c222ae04fc5013a1e4dd685488fc7529f9555
+ddf4252c0f8641c504377286056e0970fb62e4662c43f643bb37f0295d8c36c1
+825cf8401224de7d95140c74ca72f9db638d61b82e5902a866f5bd9f9c1bccd8
+74e3ce55d29a5292b27bea670b6f062ea2fd3bc20343a531487570f70d59a173
+16967ca2c7a8e3e2d2b9b0be7b21a0127e3d9505703dff0406a5a3e1cccf8aa6
+d3e80ee67541e209a7fbd65abd7c6176c43d052585fbe2dfd15ecb272b91930e
+3ee3b3f2ee81a622318d2f686cac24627a53fbd56560d3ab78f375011c74f8ca
+d005cbf3eaecf21dd7bdbef92e825d30c975ec4f57af46941d2926a409d958aa
+bda09449e7f429db97a94d5702c1eb5c3f137dd843bd79225def89b5fdfaf347
+58227e12d909271428ea127048398598b6f0d90094931762a2f8c6f01aeffca8
+edfb0c8da62297a9f42c89c1a5b44ade846c5ea51319092cb21e09ad0fe37cc6
+216fa48547ebfbe7605cccaee295fb75e667ef38c098c9204d325b0f8b285863
+c406dd3cd3813a7b4c5958ff93d818044efd19bcf9fdd8b6be6245da8b9fbea1
+0043b3829086a220507bc437a57291eabd7d99654a27515d93ce5c19d2d02c05
+a116b88df31a29d1d9544aceb108941a3ed9b36a47da33225bf272072242cec2
+d53eeb44676ed03ffa4dddd61b1b222667c2bac3003360c11ee91f3edf2c0144
+4b811574de4ee463eea325f2d4640a1e638564ecf613fe627bedd8894e59fe11
+68b3189365025968046f434fab202d9ae6e0a54f2df3a23bb122e18ca1468883
+627de0bc7e77d53ea0bd991cbf022e9638957e84bb909038e72af12255edc69b
+76b9b76ac0a93b05a6ec27ca442ba2cb8a0da8910c281eaffdde5c24d0522438
+aa33889b312e45ec398f7ead409d5c562e68014de7c2d4d75f9c181f6dbaf6d5
+455b99ec218b40b078f0c5aee0bae2205ce69a868c107caf7fdca8221ca29cf1
+7d730f4aa13e605890552dee1e092b6e2b7c060c32c84c706b4884ed3b445729
+e0d425893a63a09107893a9dae4461cfa103a4a45322377f253de10109f0b33d
+176cf13bec9c174ed826744176de84f9a04d505b6502757f7de6c46fc2c649ab
+c6ce33f104ae05c87b9ea81fbd1d17a40a3c86743a0cb124a2441f37471831f0
+820d64a2d230f083b36d3884b831f8b793db77bd65cdd2e45ba3b6dda206dfa0
+2582557674544be0d59da90d2092153e5913b74885fcbf58ef808509a1533030
+3b1ac8c65edea8e64e9144acdc8409beeb3712d0eb972b9169e65a2de53dea89
+3e69ac66c264defab6d9a4470421ead6b0f27df74686ad9d9c0034d62c7931aa
+451c4a82c4fe6bfbd2cb79da008fcc4f6970ab87e1a5702040c0bf5a770255cc
+11cc019079e71b593109cdd2594ed2843bcf4872ed810536109cc6c939fd4a66
+c0ad753fa6f924c594efa9500cfe770de6c5966cebc6858e76c5bf1973fe1cd1
+b33e375c62c8c844f687880688258a0552b2ac68875e264b7d2b0927e37f409e
+f792741804c1ae9110c16bf36cd22521e9abea98cc6a3151e759f31d823873dc
+be8cbc8c54562508cd0d55b1565295970b4c7cb94f0b9d960d7b5a5b10099330
+f9914b89c25655eba70023723976ea31e53428c3b2cb8baf93d77b56ffdbe0dd
+f43904f574b040b2725c72bbfbc716a2624a052d0ea7cf6ca1eda1c559f591b0
+a9b218b76eca6edabee20bfc027ac7d102b7ff910ff11f741077fd2aca3ac620
+a0762495f3e7bf93b4d8dcd4025598cbaaddd840f1d67110f3b30b0cfc313439
+cd0d5edeb858df30c96db1898efafe57c1e364aaf71314fbc4cb5d95c6ad9c96
+846e09b38b1a13e534bbb06d622da308daf856ffcdb86ad624a4ae499fbff17c
+8e77f700412eab675975191d5ebdba69a0418ef1dd81a69f8d6bfe4cccd30827
+7c1b0075e5b612e82523f93341fef8c1197dc5e97911f480398952aa61bfc7b7
+77d05a960164fa8a34f6fc2433c6a249fffa777da51f9cd3ca73091f493b2e66
+11e6e5d2c5b3d8dd3a7f010412970a386e93c13a20bea29c23fc976b7c36bdf6
+db51553e05839357524a2a2eee2d95f00be1fb63fbd2cb39a5b1f491aa2e2766
+b9a7d9281f78e46639bc3c27e1bbc270d7ab1fed1eabf400db81c66c12409fb7
+c70016868b7a2a02f2a6716e98ecf347dccb3280dd6bbe191c804883ad5e2944
+5e40963bec09c3ca1bffd998f20cc9b340611392a59608b74734118cd88559e4
+c61f66a4dde1adc7d7c1d63f3558907e2416f4f3f7df0328b4654ca8969b94fe
+a06a9ca198a478b5e481c851dc7d1722bc46eb18c8f1fd0b093e82e6375b124f
+2142d871b7cf62da5889c49de3d7acb0180e39c8e85f91a34804845a346efed1
+f0b4e00f9f4961b2a27c11236ea5636562a82be3c81f3f1c1ee0a9e30080e323
+cd899aef0ae3130d436263ddcb9b31c8e36b5878e0675a83ffefa39e6b6e2d24
+5b79bfe5d9233b7eee90a558774ea3e08d1e2ad1ef56120441ec34b5be9c149e
+b31de826923c3e086815ae81fc56934f53bb1c324f5ef529243d38b7c30ba44d
+d18695ea8f04fc8b76241aa05f029d27276b6a0d8b27cf8c43a5edb489d38981
+bc5ae649850c607a569e73fa37f96a40b0c052282b065c0664477b46d32342ad
+d170b3bb92fb1230cb12d2114ed4789fbe3d3dae6e4d7b05395ed815e672f265
+b51cb6d7853c6f83e778481fdc9861a2470d4c22165bb0695c98f2a79d337858
+8fbf982a0c243b88e335dcfa917b8dfba901dc79913a5958f16cfd72a26c2aa3
+84ff3138a51af5fbaf09a06b4068fad84dd7b8554d22308bb7cc41c55f494fde
+654fc4e977d61fdd898eba73579537863bb4a9941546796ad1b2d3894011ac64
+de3aa04e5f6adbb9e69f21afa7c7dc0409b6569cf33bd993329cc914e797c5c2
+3b9e3e0ff18ac542f3e850a60e6553614cfa5f2d453c5954a8f74ddfce9d8bbd
+db07bd144dd14138f610139bea9358be42e8a002137be5180a3901de5502f371
+822c1a9d1eb3232de42421387aed207314b032972e72afcbf2f6406c0c62981c
+da0a780b17ed90518d587d3dd4cd14ca36f96c00fa8079b5b748bf51163191c0
+838aeecfbb3025995613e29765b18ce8c14e510d1203467fec6c0a8c63993bf2
+a78b31a639361f79b1f0fb21bafba4bd6e3299d437ab5e7d366ce52f66c92519
+efb631361fd68215f8891cafb5232f000dff4692abe5454fc53adb79a73e392a
+fb00aab08832492d0986c860503a5ace5e2262c048f9a9c07034f128e0e97023
+854ad209b10dd2507da4205c01ea61f99a685b080c2f9bae7011ae456e70143a
+19b4378ee74c69669b73c78f8ec9d19a560a11d81beff9ef717e6d607d52bc05
+a7cda8ff207c86204dc74c107c877348b43285817c42c2b8c32d93ca1ce869ca
+fef4b1ddc4ed4219d3499d2b19941bf4ad75c802cc6895a99837a66be6c14f2a
+c9f1650694389837e40f7df0e56ff3bfc9b1d4140bcf14b266466a3fcc71aa0e
+47fdaf8259a17dbb414b90b05950f5a968d642b2b9b1ff637417566fd3ec9ebb
+bdda5adabeaf41b045020bad7976a423935bd7e08a878cd1f561aa4656564a7a
+777acf608054ff390ad84e4cc40533f8bf8c23885724802bfaa18ab65b544ff2
+09b71d84fe83ad8c1e798857ec5cd79961b9e7ffd609b2cb7a3718c99375bff9
+c0c77370b730aea86c399333a657ba6cdf29e8a1a8a5666a9ef1b8c6a8dadc20
+440a875026917fb74d437b9e2de70030313ef00644c651ded8169b301d08b9fb
+20fa64b4ac404734e82abe89edd2c5ecb4dff4fb6b5113545fdff2f8c038c310
+310773862041a0035e06f4edaefdcf68cd935879d1c9a928d5c62273f230d268
+01d36b1e5cfd8232e40e3436b7194fd9d35121152fe1b8ba7dfa3dc70b8143f8
+bb5fc40f5c1b68d40bd9710a6ba1581778dafd5d064dbf797096b31cea949cdf
+71c4b80eef824b86caf0c22fef4369b212573753b94d3cc5314caae897432c73
+6362ed0071e6b998a7a2bdf62719df7b1c2ca96c1978cb26477b7e1fb47dfaba
+b641c6f9f0ddac69a29452957335c41957c33eb6f2fda4701a9ab06f34b28002
+fc51523581aafa78cb507319a4249723982086e64d632f27edcbd38dd91422ec
+6b77ae3accb6dd86a97caadf760fcb90b7d1ea98f4a01756336728002cc4647a
+476693cbd4ddce577a800a1bdf08a7f8c9cc1c06c32ac2efce853b29391df480
+3adfdb279b73755e96e3c883bea14163e7e29ebc6ec0889ba177da9fa1d531ce
+163984f30a8b015b182f7d4ee4ce95a454d86f4da3ca98e63fca130c934fe682
+267e8975c6472462cbc5915dd0533141f61f083a9e8cc21e7d992fe5f9778cd7
+0d272b613edfad4dd8a4d0cdf328606cf5764e82fcfb9dcac2ed7edc3064f5c4
+5b44db8dee36be5234b91c95711876966948f0bbcac41db838016e2fbc103481
+ed8481af6740ecf42ea20b24eb527188745d5a81785a8017ed15273ef10aa095
+6709a8a72d01663abf4c2043c8a7ecf908fd74ebbc095b55b29c6ea9fcbdbc6e
+728d74def74c0ab7591033adcc16a06f3c8a7f9f08f9d428be5bd3b69316b023
+91ae86585e0d3597002b7bb397559b5bd268c22895ec70171e9dfc8c35057092
+21b3a1bfa7059e21ea90233fb9463ebb7c04b4cb84057c21632db39b59e20c7f
+cbe176ed86419840c67e4ffd4f0afa6af32bc566caa5c8def4ff68d90adb0550
+bd1f16602565cb81285129e6dbfa859a25b82473d56aa05626d28e61330e3c7d
+c4e751df696982dc79ffa912a1b03f5261321528af05853a9af5c2dbc43f1c14
+237a2b0c8b4662b034e4a4b74b6779f4bad37d21e455bcd6256986f243e7e3df
+6a9d12e6e374b0b38c57c41681d7df5199865a5c1fdcf8ae1cf8ce962f969fc7
+3701ca9daedfc1b80fc5569fa5fdb4664e586cc906e051d74625884a6189a619
+ba749f102863f38ba49ccd86d10dcfbe2080d3d6cf95956c77181283791b16ae
+bb69c99cbce0dd2e9c55eb0176269a7abadbb873ae31c7211ba9f746b264b685
+bb7f517264a0df97d469ed4d9599de91b84de95f945ada6d229372546d39be57
+6e505c17ae867880dc86a499c769199a62a16dc9ffc304d6b70dde4971baa0ee
+49eb9956622dfe8c4007e4e536f720929e8c20ea04133a303a71798490ffa2c7
+10c962307b4b20e297af1db45565fa1f0db9c78e231e7b312b778b8b5bb7e6e0
+86bda82d2a253cd28e0a95b04492102fb7b3d1000b6fd1d2c21bc0d09e66502f
+d56ae39b152d60a9dd346d7981268598e718e5f33c0a647b766aa46044b9e82c
+1a83f8e700d1be3cab9e5d945d691039480b8274d8532f4ebab3b906903a3c7e
+96d7af6d3518e3ea6df8b95dc9fdf7cf601a095cd67628dad9a07fe5c67f5c70
+16ad50407ab57749d48f9ddd60f43a795ba180649ef8157da39e584ec6941575
+ee5aa861d67dbf6cb86f0d5f92814f3ff80e846be72be01a86cb72b2895069f4
+64e2f8ee4026989b314990e82c89ef7e2b5db62b94e5f5fd4fadfcab36fe68ee
+fd8f306b9eaf563bbe9794b4412784b440c8dfd5285e742cc8cf6a590b4f2ac2
+83730cc467c2b5f49f47a1df20422d460a9f02d18780c35f9478877a2b4255af
+7c2e782609e134f5ca25ce223deac2b4b2ba441b69246e356e41ac1340b45635
+386ef79aa368773b769da7492d7973f0071df7e407a8d4c7a934ab00fdc050c4
+4e82d23a7e1510f0b451267ce5778ac489f66e94d962b7f151dc50ef87bd1d5c
+4507eb7172da84cab441fd8d5f2b3974a0037b079f8f90a0fa76035cc1797a11
+f19ae567aa19ddf066703dcbcf04c878337fa123bf7ee20186cf4ebb1a3fcb1f
+c893963f72688e5eb31f5acb7e6c3e3e7744c4bd41483fc414144650015e6d98
+c6fa6f081c83c3af3c53a1e26b2fc4aecdee89d0bc0f354be9fce0d1f2bf88b3
+3738897ada4ffec0ecdf56449d251e691b2e7ecbb6e88ff7309abd43f0bfc0cc
+831b0aaf7c779a66346712450737e25ceafc2027bd75d75c5f56702c9ec78ee3
+b73b39147db1d4c0069d80b62f3905adb289f689ed70039a642ba6852f3283a8
+3561854c62e7ce9d65edab9d3dee07bd8d2547054204533bc4ea5b724a6b3cca
+bb12849f5d9b943602385edbb69b2d3ba682547bbbbca8ae62f8dd00848a07db
+688ef33da5533475f4c107abd5264e65ecf318cca84113ceaa8e2febea147a10
+e7c9095a377335be37ca2251f4d5f48cbb62c66f66ef089d31d7e01c50d74100
+d548ed77b07f5865dbfe963fed3d5271d66a787e075ed57938d694d5370f4ed0
+3c76a7b76c454993688bfd5a2043b3cb9c645af5665278fb5787bf29013ea3ee
+25e91cdfd655d093bb0bf2efb800ab7b6ac0010183f24b55e539a2c93882352e
+1d185fdbdfd240f65971933b3e03d4715c4a0ea7dcb26bbc2fb54136fdf93cd8
+32a39b2b4b99e32431a076bd90c7280181babbc729f58329399b161d64cec526
+fb0328ac19c179fc0539c1c4845fddc512438c43e3c5db3cc0b444e7525de4ef
+cce733465ad2e2e606adf1d14885e13c7bd15aaa81810d1b59dc91b113c17e51
+67781cbf3b0a400fe76139ef8583ce12aecb08abc2d86237b3ba47a8196d416e
+80e93f8e59c364ee7426d30f2a11aaa29118b90809998372cb5ded677c13e221
+27864d88f194629bf8c3d577a7aa6638b9637982c375fb15b0b64e8a747713ba
+2eb1e7b7b80a4ab9985d05f6a49cb26e7555d0a0a136d52d1cf028feb1fe3714
+52c6668ef27db0dbef424591b5ab4c18b526eb656ebc30829c558516f8c4d2a3
+eb97053c9cb9dbc810315897fa3ba632fdc76e2ae552d268821baebe0f96f037
+e0f2b8743d36ca24bebfcd7b0d78057009f1ab75998fa9210e54ca67118fec8e
+10ef59c05aaa566752652b6dcf52fddc0daa07f14bc6c28f6334955ba1ebed6a
+eaf5a365f553b2f9359c23aba570a02600e41d2944e140c802669a50be5e1485
+3e4837542b8aa1805e6267a2adf8b640e389c91d1f332cfbfdc2ea20c8249576
+127d420c1d4ff42f8c5c3272c1638666e908db925bd1889f445dde5596eae246
+3ffeb843e8da7dc4820cf72c94056b20e2382f97b5d3f30006fbf7f996df97f0
+dccd9f526d67507526a1c875917ee614d6f10383b71d0f38461ee54d54e12662
+70990f0d58cac89e3ae020307d824812c2e06907f7038b3744a45b9cfc59b4ae
+3554afd96398f265673a554b9aebc334fd481853dcf42b0357d9d29a4fa7b73a
+ece3fd639725bb7030e14194ca5f766fff5fa1a4aa8c76d29ed1f50bfab1b8f1
+583ddc734f22ecced4212458f428c4f386077334f5d00614e3239b5637128c02
+882c7d860f9a5022e1703f1931be1e7daef8d0393078a2896a6fc156dd50f8d5
+38b644ae0e89fd60a3590d686d8e12b3feaf9ab32c570353527d93507c9032c1
+fe6883d2ea1f78a876b85cf29d44328668a1d5169c76fbfcf4faa309370db180
+732af198481f456bcc5ef50bcb2726560eda602eda58f5a42d664f339e7227a9
+f07114ef6e13225d7a41935848702fd9fe5bc7695237e313b7dfd2d2d2ca23dc
+6ccc539a7851397c6ff2d879b49c137f80d3cc648f3330af99aaa6614396a40f
+1ddb3390a55d2486dcd9d89f7415d173f4fbce3596cec0ec245fc727ef549e93
+cb33cad8105b0e8bbe64408f01001ba5c7da7cbee7e9b7f0a7af360cb3be4ed6
+fb425c7839968234828a09a0b78c20d0b0bc8755ac0efb9c8ccb437a985a3982
+26614a5b022c5ab98d75c2391c9c01f9724d2db6c5c72203dc81f3b3c6e6f7ab
+fd96
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMMI5
+%!PS-AdobeFont-1.1: CMMI5 1.100
+%%CreationDate: 1996 Aug 02 08:21:10
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI5) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI5 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 113 /q put
+readonly def
+/FontBBox{37 -250 1349 750}readonly def
+/UniqueXX 5087380 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311e252234d51741e18db3a68e8ad10242
+29e5817a10e796a78d2c7f7c1f50961b9a57aa604c9f821dbf5a9295197bc666
+31678d7d2c7e1f8f2151ce0c29efce46270570f4301c5dad1b38884732e53dad
+05dfc36b020e726ca575f71f04abf2b49e1f1d6d2a08a477658ca9a48f1c8cce
+14382f0a42201de56e2821ee2b0e91a818b1b753d810ec2428dae5153b66af66
+9442192024becf743a8f6264a58a0b3aa823510a4957d1bab3e1b83135362888
+3e392f49926471a8021fdb48637baf0abcf31204b1b214f48c99f44af7782323
+69d772ae4f49be53a1bf584747bf29b94f530d59a5be5370b8dd0691e32a21ba
+9d0d592cf3bb50a99a3ecd18d6c4114cb4cfecc49705da90d7edb10e3a28f9eb
+a49347a09d31eec896f2a28e9607d99d42914aea16545c16e136bdd0b75fe486
+61e24c7a9e9b233a76754c760822d0a88c575e08ae3e3f081d7bfb80ec4c03ac
+a08b65fb6474f71fc95c7c2462f2eb3754e647c29498288f2ced0bd3a2bca5c3
+2f80a61fa667802d376cacd34de1f9572d1b3ab09d6f352750db4a768f869638
+a87457889aa502850427b40e1294c5ba33e6b17532b2d13b5f50e71582f93daa
+231e86597872a2a968127afb0f36257a76ce1eb24e6c4f29fce2aaf6532fb5cf
+df84da03f03a45b915209f67d398c7c4f7a3b0623750259087a478dca684b29e
+a8b7f52060bae9394369ed1cecc645d113cca3772a8dc36c6d916b5c5e65454c
+0a188a33395fd3da67ad0a31ddab6a8434dd80f0bd0ea1a2a62eecc331d88b3e
+369552daa1c575a98fe84383548626b65be7c24ae7eb61159f149872cfd87cf7
+6c1a7c155c7186c7600e58cb61b8cb0c5dea98268a39e928bf6fc53985eaa763
+2b28c1eb3d82e4d3fe225223f4266d2b6147e344aad2d4884a9308aadc7801af
+a606838925e3e50ee7aaf73f090baefcfd4e34b795cd92d83c944d91a4940f2f
+c955d727ea5bd76f0c8057b12621eceb0947b0a5dd10dbcbc52957dd978d7db0
+c794660afdd4e946b3d7fc1ba60907fb3f756aab0406c0e7bce5a2238fb3e12e
+07e2c0a7f465e90057642d704434ae0b57bd46c8ea91ab2a386e24c6deaf9cb0
+8cdaa8fc4ec3fadc06bf28659cb878453db16f4b03925b2127b83be8fc240f33
+23ea950b51d70c8fe861e30c346efa0a0125137598caca5478991e35f5bbbc19
+4c787488ba339830bca15f8333431902e82b66a514a41c0bff92719a6a0d9587
+4cff62c622fc61a0308a69f9fb7ef51bb274ce9e059c04b64e817abdbbb39375
+bb4d84ca40de5fa46b84b04f3056d74aecb5c4a207114d9a5a6df3dae68c068b
+a8eac3ce90f11cea03322a18b1486fd2d40cbf112c42389798b819c71671be40
+469fb02a086961899aa8f163c9458603ab61d9bff4cf30447fe852a0ee54074c
+a70c4743a4f4b834f93f9a38a92f5a22713daa7ca2e367a51c37ebe2d879955e
+67b53fd9fc22ba858f47b9c160c48845d0eb4ad008e078fe9518d901d4e609bf
+7e6920bcb1db428a1114552e607fa92b6d0cca4cc7029c7b73f937c2e5169ed1
+484af89fd965b6a96f7a315fc92041494e00af617f6c0f76ee6e2e81a1ba9bd8
+86ff90e811643630b7313c97c2652bd5b1e878434cfd26f1d2828ec210748a7e
+e81ca140d9af69d8404bee469ae0d863542fb878b0025e9698e77c9361c47618
+10009cf766e9a06223dd2f219b70639b7bc7fa8c4bee8310ce8f4ce007213242
+cafdefb30bb05c1476cfcd1bb8f4d193884b1343b6eea03ccc6d87c51f9bbe7a
+7005855330dfbda83d1d6224
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: MSBM7
+%!PS-AdobeFont-1.1: MSBM7 2.1
+%%CreationDate: 1992 Oct 17 08:30:50
+
+% Math Symbol fonts were designed by the American Mathematical Society.
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (2.1) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (MSBM7) readonly def
+/FamilyName (Euler) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /MSBM7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 84 /T put
+readonly def 
+/FontBBox{0 -504 2615 1004}readonly def
+/UniqueXX 5032014 def
+currentdict end
+currentfile eexec
+b5e2457af4a6caaa4536453c498a618ecdce7b5f6f2d5944265309f833bd3d50
+3df8bd14c071f404d2177500681a801856cb8c9c9cf0112c9bd17ccba9ab8944
+1759a320b2078df0fafdd3e357994bd81740d1a7522ddfafb75d58f5def046f7
+084d10fa2f702e570b09a7073d70efe37b48c355a7089772238b7b4538c4912f
+cf6703a14fa416057ea2e1b94455913dd271b42846ee10d78270a8118e7e4bcb
+8deb048bb280c240d59409d47046c890e5f79e5dd4b0be65a28a77aeb53dd33e
+ac506a6da87bb55e329f433627e06c3c94b078838b908538d93f888e504e25e0
+3a8ccf7d2c02122ab3d485525564295390d1154e15fee35edff4eb016fadd32c
+26d1b4c09de87943780954cebc4965aa890fe1f80b03eb07103e13d468245c7b
+c26455f229e8859585c6eeafd9474acdb27290fd62950dc52f893c99a2a614d4
+2a7e3618266f3fb0c68a01a30373e048385ffe7dd5844e208a55d1a9263ab2db
+cb9b19038724f95af00349840157be45cb337871b55a304b87ade64b10ff0eba
+21aa0eaeef74aa01f049303a8b25de0acc26bb3a33fcf267f479a2a73f7dece3
+2aa23083687322b417fe86e8f5afc2136d045ad6b392364811a17630a94ff097
+038eedeedb8da4ebf8fa5a96ce27a2ebf771d14f4a11fb1f9f48cdd207209934
+885ef9118463552984b0fd3cf15d55de967fbb051549dd65f60dfe07f299690e
+58252f032bca78935b7d2df852ed688bd13dd171b91cf7bd46d5433aef9f50f1
+41a2517c4912b837793f84ddcf1116f70f7e9b1e6ec752dbc9183d4791d92602
+397bafe29ac6f879ceb72c673c8a1aa0135d6f92d0db7791f9a2f1a5b55347e0
+3e63723efd258754f5f4a9ad35873a98d54b6c54b17a39892dc1d38660597448
+fdba9258493a0db0d560c01d49f2d889a99eaa8a5b5919cbd33f6b3d97bf27b3
+e0b94b48d5d21d6c29aee4faca71bd775bb9defa37ff627f1e4926f10d59313e
+77d81a511027ef9a8ed5b7fa9b5bd67758cd13bab6ac18411c974a65d0c90085
+67bf5860d0930d7f43e557ee45e76ecb2806d21f4732bb282ac8b591f2b8775d
+4b3ce2a37ebb371cb74a3cc513bdd70a0115de4760c21f034f5080d769f7ff83
+554af524184702a02e534d1eb98dd3f7c5d51900409354dea37de4ac72c4128f
+b7c08af8a17f2033761abc7ce4578d50960ba229f0bbde72a750e61ebf32f961
+f519c386735f979944540cdbe8c8e2ef8a191839e033fffae82e797b6d99eb09
+96caf6191f6824680f0aa167fa3670df501492d493d04da4e0d40c579bc98f69
+1368624f1beefe7c681a84f0122a97651ffc905047fcec9abc49089fd5be8cc2
+aef34559b180555eda5ee38056cb66ff3c179cf5715dacb4b66b8a695434dbd8
+fab68a01da044cba0abe634c035c19d20a8113a66ef4bf6f80b8332f2edca065
+eb99277c1ad03f15837aaa9bb52f5f63c73de2760c253efe0533e75467f968f4
+0847ada5c4e097b1096db482b171b8397131a4d797896ae8361281c3a70e55e5
+71a1c17b23a4203a62adaa8f8bd4491db48f60541846f0776653b8bcfdf845e1
+4197d51ede41b129e79157e9c6597d52ab4460ea133d48d02cd32c43b3f02e97
+19954b9ff25fdf
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: MSBM10
+%!PS-AdobeFont-1.1: MSBM10 2.1
+%%CreationDate: 1993 Sep 17 11:10:37
+
+% Math Symbol fonts were designed by the American Mathematical Society.
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (2.1) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (MSBM10) readonly def
+/FamilyName (Euler) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /MSBM10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 84 /T put
+readonly def
+/FontBBox{-55 -420 2343 920}readonly def
+/UniqueXX 5031982 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d7190fa2d133a583138f76695558e7a
+e9348d37cac6651806d08527c1bb4a062a4835ac37784cc39ad8841404e438b4
+d52d3901e47a1de4f7924e0fb3daf442499175bab1226edf692a4956739f8828
+e80592f450c5d5c22ac88bcfbe9748f61d18243a16f4a4467f084e8e2be46ef4
+7fc51c3a8199e3cda62ff9c4fb73956dab8b6683d2156377808cb35026073e80
+523f59a30d195fcf9b9fce4ffafc6d56491bdecdcafdc988206c5a457a19270b
+37d0ab776e03eaa7eb568eeab6b5e79dec03b0dcbf923a2aa8e4f4deda2cb043
+858d8b430efef0ed914a80ffc9818aba0fb30dae3694e5b31df3855892d59b89
+7f82ff79fce8444c7926ffc4ea008e63bc518936c9098afc2d1c14030a2c15bc
+c9285c1b57e80570d2f6301009e63d9ddeba44e3251c75ca9616a2c5de9ade66
+1a15db37b40b67c1bd71f77343912c62f47dd24be0e03dd833ea60d2eb020407
+eaf042fed30f0c2f01956c83d46d982b50dd979c2026ed5f71979dd98c9c1eee
+25054000a5eed5ce9498b2cb59a7ee55e0538ab47d86e69b2ac79229c8c6bfc9
+3a24e822a2f1c9964fe630344579a25f66646113f73d1315c447f070c575de76
+266c6773b01137e4a039df5e4c2f199e8e3396ef9fd001eebe090e04384c4089
+ec9f13a07ad8733c6af775f432f154ef50ec4477e08760c03c006e4d1eb1c7cd
+acb8955ca4b0d62c7de046ff58d431bb9883d28586552c51809e3ced4dfc2198
+b97ad9e52ea33c91b9e335a80d9b77d3430e0487930f992459664abca5dd9177
+150b0fb502fbb04ccaa94ffe2697ed07906f95fd98e7b325bfbf10ea6b39fd76
+c1e5295022cb39e9cd471b7b0b3f9d72da99deb0615d35cc22f42dbf5cfb70dc
+6279fd520d99f32201abf25e621cfe1d37961d9c0ad36ef3d9264c547638152a
+be30812eae30521c3c775adf1959595a43d8a9c4e12d9f9ece27a0c9b5f45e38
+8e26a39cb0ad4e25ab8f21b25ad1b106ed22af7947ea8ae4dc17b9facbc5e22e
+89a91b046ba4cddde69c1997fa7f4cd949ba3ac4b6e001475daf165b9432dc70
+6e30aeead8cc342d94b20a4045a331175655d6aa279627efc0fb53a4ce66b68f
+a45b5765f0c1368c02c39418366880efada9c81e9dfcee2a9443eadb1aa1b209
+eace5b0fe59ec29ceadcbb5e9902b4cbedc5786ee430d30d2ad87b4cc744296e
+0a6790d555ad3370c4241d355add157a77d9ab97711af34254de54115b4318b6
+528051b275ff76cd466285941b741ccee31bc492d4f92a3281f6dc36cdeb73c2
+ba6eb39ef2ed5e75a795d89c78a49e0c62df0959176e3de1337ec0011eea5841
+4c44f9680262fc604be5d51e04e69668379b034284b2eda1c7495a8032ff6871
+2070880d3da11d49556d625ac9f774a2e5836f36097467c3559ec9db7464cca2
+09f46aeafa09908ed25b3fff86b6a495c2d3e80beeae93b31b9d95e14850d06c
+99e2416db06fc949761a01a98a7445e04de2a89247599e931215ac51c2493912
+bd378c2b98618bf7756fb17992f7b27feb5fedaba21d5fdd0f24d935dac3fedc
+12e6082d19a99b96b8463d0bf33c174d88e687671fe9295f747bfc10b720d62d
+b5ebb3cc1256
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSY7
+%!PS-AdobeFont-1.1: CMSY7 1.0
+%%CreationDate: 1991 Aug 15 07:21:52
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /minus put
+dup 50 /element put
+readonly def
+/FontBBox{-15 -951 1252 782}readonly def
+/UniqueXX 5000817 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352
+05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23
+b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a
+f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145
+d026957276530530a2fbefc6c8f73e9b697ddc0351763500e23c4d170ea8a2d2
+75ad0b6b23097f02fa803c1f46f9ac10fe0e527c431b11b1b9a50e874896cca6
+17fe3e255960846bc319ca68b9b930a45d5d0fc36b352c3443ab6f7793b38d2c
+7fb9c409ab7980ead55e9f8f6b83c70088d1fa6d7f2214da8928e40b96334ad2
+72d1b5db9d1355a579b26a8dac21f021e393d7d837a95deb8de92ed818a8b80b
+98ee9cdd8a3c57ad7d6eb7a82f43eaa6ec520eefa7302e750edc4b495f70bba2
+24a2182eec37f1a1c5dc8e20973007150237daa6bf03d498826777eeebe09014
+ebfe05a8731e1a421cfc513d47d673e3d94d805f5d0668ffa265e0962cb5a75a
+4a93d9b873912be368f3f300b584a7c5dcdc5e3f796d62bd191959cd043bc0a0
+108ac1860e97e05173d3b979ffeaa815405d9db68a72c102cca8b3becc60437a
+946131e0670abd3348ce6dcbd3bdd4797f83472f944778fbeb0a0b93d8a4d446
+9bd54ed42cc57e2736d312a9961d759ffe9b3c98b7b27e4a4f067d1b37e5bb99
+cfd1b895c4bf965c25c21028cf9669c5e8e7e3ee85a5afb8f60e436a84164e91
+ae86ef778ed1f461c1e2f0a520be7297c2f256549c13a73adcd7e18f38d442fc
+97c1a047f71e118e524d7bb28b0b5ccd466b9fae8ad3511a6beebe684eaff350
+12dae83db9f4a4bc77838081b25dfad9a2f9bd4b40091695d05925d5e8c8f975
+d2b1aa768834bc87e3a5f70f1a0c55dea887fee957a15b7a3c26e2467f35369a
+394937b277f888e534406f4d247303f5331a7f435ba5ed3a99ca0b38ba37d619
+ddaccc6dee082b7718fbd1a8be7055914fc63c54b0e69b52742352d7ae51b14a
+c95753b097
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMEX10
+%!PS-AdobeFont-1.1: CMEX10 1.00
+%%CreationDate: 1992 Jul 23 21:22:48
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMEX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMEX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /parenleftbig put
+dup 1 /parenrightbig put
+dup 16 /parenleftBig put
+dup 17 /parenrightBig put
+dup 18 /parenleftbigg put
+dup 19 /parenrightbigg put
+dup 26 /braceleftbigg put
+dup 32 /parenleftBigg put
+dup 33 /parenrightBigg put
+dup 48 /parenlefttp put
+dup 49 /parenrighttp put
+dup 64 /parenleftbt put
+dup 65 /parenrightbt put
+dup 66 /parenleftex put
+dup 67 /parenrightex put
+dup 80 /summationtext put
+dup 88 /summationdisplay put
+dup 90 /integraldisplay put
+readonly def
+/FontBBox{-24 -2960 1454 772}readonly def
+/UniqueXX 5000774 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d7190fa2d133a583138f76695558e7a
+e9348d37cac6651806d08527c1bb4a062a4835ac37784cc39ad8841404e438b4
+d52d3901e47a1de4f7924e0fb3daf442499175bab1226edf692a4956739f8828
+e80592f450c5d5c22ac88bcfbe9748f61d18243a16f4a4467f084e8e2be46ef4
+7fc51c3a8199e3cda62ff9c4fb73956dab8b6683d2156377808cb35026073e80
+523f59a30d195fcf9b9fce4ffafc6d5649664203ab24acb938d58d246707ffe7
+d62f04bec4b70c21ef75beb2b812622b3c74e969d72d3cd11bd7106294a99caf
+0b1629bc7d4de6b96ca82930831d64575f23f4ad06a0e45e315b1d392411be8d
+6d73c998789ff258a07a3c8c2057325784514c845500bfd1a971310cfc11d41c
+1a167dbd5ff012c60add4e87325f6e5299032a839de65fb1473a166aae1876a4
+414a434f22c1d241591fb36f857df6fa930608750ffc0c54f44994662b1f00f1
+400bf752ea8d83ffc4cb77a290bc2d99981ae59a191748ba5c7ba1a9d2583fd2
+1398452b6ff5d83a059f7eadcd2ef744e9dd22bdf9c79d049bf06835e878c32b
+7765c69bdd8ef4deb4ea7cfff4cf9354a4ddffa689de961d16772491c7afbd7f
+ffde42400764c68e954ee5c455a5687959829bc3b319b2147deaab3628662c80
+30c5e02fea09609abe4eaa12e217bc3af673f1bc36a7039eb13fcacb4218fe0f
+c5a3f9452d4edf46cc91db67b624d4f2d37502fb9f11af4da18ca40b61097f95
+d44329375467ed13c5cb585ec53f62b83ef9502cc755af44bf32b87b8ae9f3f2
+f8dbf72dab90acafbacd280db6aaffaefdff6d5eff26669bac56280a950560e3
+d01714ba38659b0e4e28bf8cdc1f15ff7e3ea9d95a6afbbe3d8e6905aa6d531d
+6b6dcab89e2036cc492c65f76ddcc3cfcff33fde3d9ffd10f7a90530fd5c7683
+4329baa902e701ca42717476298c9ff511b1941244bb1dfd0e5cab92a43970cd
+1bdb292eadd055c97972844fdcdb0aa06401e7b2632b9d134f96bce0064860f3
+9859da7a9a82be0a840672a1331212752ae1b521b693b384a72dba8d37a86eaf
+a0341e7fc5f6ef7a8c566aacb91e8bf5005c18837894c4eacff41dba54e071ca
+83fd0f12cbb9773faea8074d8bd9ea37f030d986e98005cbed3f1c881fa23c87
+f911ae5d13f56ff5dd1a25442783ba213bb6a93e276ff63d12d224f4017e5166
+ead00f973cf9db90af1dab42dc6f1d2ae4a284fbd5136f805b3398eb0c50d783
+8c179ad372384b236c64fa4632bfd5bfb64b748442f9d8d0605382b98c4799f3
+ad25c000601c01996c785779c26dff0c1319d9f4bdb375d923d76f226f334476
+2a2ccecd95b30de86ba86f43d999e56e2780acb74ae5b054a428d318260f8e05
+c15e5b0e06815fb1d876d613349d284463895a8a015e976b88cdf1ea950701b7
+8a9d3b6995b674a1a64f7819c1580ef181214231c4da92234b108aab4ea41589
+3ac86480441d5bb9cebb69ee46f8ee3a2e190783243fceec192db6cd794e106b
+47b3e879676a2010cbe354ffad34dd897c5428e65d3e67a73360998776ca3ca8
+9c001e17f5c8c2f38d08e1b4e072384ff64ced8259739fd20ebb12c8e0e58f17
+f8f3ed36866170dcb0321378226d029eeff42a3b2a175677af5602cebace2d36
+37414bc12a8d9e9ff85510db5831bd86ffb9a2feed6acf21dad414f54bebf3b0
+e2f2005878ae109d8d81ec2f7309123fd86f556dc96e7c7e2dc9b2efe3bf2d5a
+1ae7599d61e8c1cb1f2fdbb5636f2da5e6960b0fa3e601de8e3f294b8023984d
+0cf0f61aa9f564fe3a2b647172015362c5b6205190b7d9b7062d3b73b456dd60
+b262b13dec5a283b71627662242f22a6528729bdc457e30807aa62c9c2dbf9b6
+e89de730291405a6e3bd95dd31acde9644840947242ebc7e7c1a77a672cbb56c
+3e791268f2ea6b8e1bb7c64522b22bca05905fdaa697f084238682fda5e667ff
+e27281f1c543157774b65702c675edff440e027fbd3ab5b98878cbf040014455
+e3a872e956fbae99882885060698e64cd81db0abac0a35627dc8ec2e9b704012
+3f99f5dd70b91b7d75826142856becef45c966dc3a845992af89206db8a79289
+497bcb45427c81b5e4e097f7d8d11dfd683f8c191f27710e540bf6172e6a7ea3
+b514070b9d243fc31b9e8b3f9ffa2606314ee8a73d047a612b8b7a2b93e545ea
+a17ed99bd0f39037d33346f55e0c8fce9175767f19da473cdaecae5aed360f30
+86618d84d61ddee6e89f70abeb83199ee6652db67299cf6de6b363f146e554f9
+6b96ca03e351d249163b61aaf8bb9e1d77a0774f30b6967de477539f2c16ac3b
+3047ea940709d5206a8c1cbf82442c9210938d67837e800cfec13d6aa3ba4ad2
+5a663d4959c11e116b65d2331933402bc9d143eb96d53f8cb5a454ef6adf037e
+e4e76ff1189c01ac981e1c2de02e5f76a0389ffe20ecd918ceb3cc14a586c2a6
+f4dc0b563137424e5d3ea7919da8ab8c23e6dc68a0ce743fac5b1eba0acf85db
+bfe31dd949e00cbfdae9f730c871d206a182cdafdbf22e772a29824c7c2ee6c4
+310f08782fe6ba671c5259a4cd45c38493c3fa2fafaa6ec2fd66980b6e0ba7dc
+dd7f9ba303d82be6becedda4c18e351e21a520057b98e217733a6b48585892bf
+2de931c1fb49bb3ff3a6e3f973b4d5bd205d6f9bcd010b2376b1ad08051bb592
+c8cc08ac7a97a281001f43b2ff2f0d99205229b868c4589face968b286aa81bc
+409b9bddc21f9f9855d739d026eeb3ea3477bcd8e30ba144f6ad2942b1f3b629
+e3d73705b734716290087110c76dd324a4f112c49214ec3772a15d6f01cf7147
+8df8bc20d4f0eacb8bf7ddd50f777d790850ca8e8827ffdeddc1bd62e7c8764a
+94f68d42a91fb72d9f23d989219578c03a670f0078df3333cdaa5bea49197cdb
+5ed702f67368ce43f8a2638adfdd95748a4509d6890c7e74b0677298b2332889
+d3ba74402ba802652be2c92f085e45349ca9961097805bdb9cf3a3dab3f9b194
+79f0092c553e381e20f551767b832ffc567462911e4c1422935db29278a2a04c
+dc310d3684dfc3ea1e2d61086689f67f44253d692a91590e498c26903b419ce2
+52f4cc4c4a1e5ba36b4bd8cf80269823c02f860d4715d0d60854f00785986d0c
+334eda7626c27573c6a4e1f1347a76d44c312fc50cf789440a8f70ebb0bfa585
+327e9cac8f3f2bccb844eb0dbda7372a9ae068c4d5fe98e8e84804e93ecf5aff
+88ccd19d794ffb8f9e803a5f10c86f0fd6b3fb3696a9cdeefa810575c563519c
+ee458762f45906ca833195d806efe5d56298b0285596cd4fd4eb31cef8726a5f
+7a8bf001ff24953af1698ab9465d5d2ff9e76470905cf00b6a9a563f38c8e028
+3e19ee598dc848fa01d93321cca6351932efc82bf4057d7dfbd34dfc5ed60a83
+7e325d524dca8dd6f8bf75b994a8ac6740df3ab435cc8358ef7b035f1c8ad7b7
+dd9c4e56969a0f5abb68e04d9bb789294e316c327e71f9ce06fe3175331ddb17
+ed87dac38f8564afd0ddfa7f26b83a30b603d132dd1d960d08cb88815dea42f4
+f0fca10964e343fe8cd754eddbb9a991007b7bc393f08b29d8f2b2adeb88e966
+84bfdc757585689182bbc3352c57a434c7bd5464f151646ca7a78b7af88bab1c
+c66f827183800e2c5c743fb03f4b60d396325cf1cc4a539e32e111eae1c823cc
+8c127a32dbeaf51f5e200dcce6759e13b7bc577055e15772e73772ed0f92410d
+1b2cce55862846f7d990c941b3ddb49a0813172eff3c943fea30e3284e61b671
+9ab9690ab93cd82e8e3aeec31136bfee856e02de3bcfae6fa326e104acfcba6d
+284e01199a2c6522261e0dee189d9eae5b45f8248faa14098be8e10317ce7570
+a2289ae116a72cb868a6f4f3fd00ccef636a0d3a3917e2f50bd2ebb57fecd1d5
+de42f083f032cdb65846d009b02974cf170e42e367c4926b608f52ade9de82ec
+eae10007a15aff196b215c61b1b02a7dd376844fc08c2374586b24ed573e8f31
+30ec15288e4c354a1cee6bf99657f07278933e59b5897e54dc8475ef33a504c5
+1042a6c96a0e003c4cb525dc97f13e62d250c1c07c10b475b18d90ea878b5e09
+5759b686d68609c93263c7db41bedfb61cd3a34585fc843f3b8fca94ac310fd5
+5f1710d2cc9f4a095d9e864e753a36f8bf8ff96c16a078a4175db59c90c0f1b8
+c16ed94bb52b23d5298a60d01c533a5208a4d13414920e53d897e9238b471f18
+e7f6ecffcfca7e2b51e1db7104d55c63e717584dc2d5c578c0f7d772e71a3055
+8bbf8c7273b23cb16855d58ebdef6ed5f61b2b0b77dc52c13906f97b88a12cf8
+3508933a9b9b5ad9d11a359d22710d440cdc903b159df0ccedb27a6835c0a316
+30c642ac68479da45c6ccef48e59a79926299c2670ad3a4d568f153ec3f18148
+f5dbba52bce098e746fb4e45ea65fccc128df496fc70459ad574b2b170c71097
+fb9c2e29e9c20490a98e887fd1a7e31bc129f3f9413bea5f6f0819f9ef443503
+fff7d456194c11d9f4e64d27570fbf2ea3e8f20f67db81b43b7712587ec3f609
+7dc52284a1d3a39d0337f5ae2e8c0a00453d084c190ca8751e677e52c0ce20aa
+bbf4c9392e1abac7708da434ea711fb02382b40dc656d2571ca966201229a503
+730c1dc6b8144738db8a6379bde4fc1cb7a7213951d4d552f78e0fc333adefca
+b15225ac2ae505295da8cc9b735a91c36be16215f4e40fd614956a5e2128c393
+b169c19114c593c591febe162da7a68123ad6a50454a9ade64f70fcc8d7c6ae0
+f8855836b5f3cf596590c785193833ec8b7e214711cc97ea6cf21a27c43d1282
+a0a7bf1d99c6dab4b402af458c1235ba4fbe064e8691b28cf2ffecbf252796e0
+e986c9908178e7061d2c108ea0baa6fb6225824f7aa99b4178482643e3c8649d
+cbcd3d2356136810b0f120680065dcbf6103872151466ca8d8cce2c38e0608a7
+282663e2ca3d7f77f43a272c2723a7e6729f3f6a9a85a7608b935b3853947240
+2b1ee879b65d88515a2753b1277ed0fbc6fd2f57de88e77dc43392ed6a90646c
+00575c25a49372d4ac5cd6efc8c759053d67cdcdec95a674a9d0e47269ca022c
+1c68c6477a0719adce72b223ad6c5fdd795d37fe7b997800863baf27ded8b5c8
+81846ba1b1c1955403ef0201c6fa4a826c1e43cd9c0582798ae58ee10f1ab02b
+44da6ebbacc4aa922d63f64b20d45e269334cc9ab5b2d6c20b6248f4a71cca49
+07183a13e491e1aa14c97e524f12ebf354fbdcfdf4b1ed9367f3b42d32eb20c4
+2cb2837367fa254dc9d599eceeb58a95c9acb60f89157935
+
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMMI7
+%!PS-AdobeFont-1.1: CMMI7 1.100
+%%CreationDate: 1996 Jul 23 07:53:53
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 59 /comma put
+dup 75 /K put
+dup 78 /N put
+dup 84 /T put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 111 /o put
+dup 113 /q put
+readonly def
+/FontBBox{0 -250 1171 750}readonly def
+/UniqueXX 5087382 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98
+74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730
+48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f
+15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff
+da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427
+bdd7da12534ba078ad3d780414930f01bdaae649990604a33aa9eaffbe5b5489
+e5c7c9ff9d9be01b08220832c41caac64816b53bbc087ae4b621d2b44b21ae5e
+3f7fe4ddb05c675abfe30510eee4a7c874bb57b2ffe521a6875eddfdfd18c781
+25bfca5a097aad361dd94df46f14026c25ea988194899b95001209cb7009cead
+4b4ea03473ea120e7a7e341d4e3926796347fdb3a124c29660ac09f4648b313c
+b58e824884382f24ce08d2edc686923acace1201c16a07a42803288cd0b946f7
+546510e95b1fa1cc96f0bf72aa823d8e83d7c68c752c82a54c752eed2b1e699d
+e9db1830272ffbf2f4996ccc2d6fe2ae272798989525ef3b67b0d09bffcef749
+a805e5f76578222b9c4a8a09b13189a16ab746ddef7875f1ecf83e568f493d82
+ff729baa1e0834dbec30a35d3c49c9b10c5e1d90c6e3c8fb737df5ceb3299d96
+0fb79632f91f257753b4d2e34e3f54a26c7b950981fb7fe4dee3315db63e75b0
+24b4d318baec8aac9cde186f6d65767df1dba35124287c2e805bc660a3a22772
+0ae4fa097f1d75107441c0a0fbb9eec17d5516fa03b98756b7df7ac7eff9c7a2
+364b9f691ed5cb692dfff9dd80c761e9c4d5d6061782b327302c053ce1cd09ba
+0605ebf761cf9b730524e1994e7dfaa956799d522ec53d5acba27a35c4d28279
+617771938ece58c5ab664aa00c1bc4efba2d15504247a68e3af0f9bd59a387b3
+80db88cca083b06f5af70d768d1699826fb12ce12efc2b4c70923e052dbb964f
+5fa957c3ce225c0fda64d9b5321ee1ade207c1cc93105096cc73118f4082594c
+8ecddeb0d7bfde6f70bc62f10407c26a476ed88be7999d64a15912493829a9de
+62c71f5a34fbf5a843e311873cd98817dc9f8a4aeb7e0738b5de10043f5cfea7
+147c908eaae2af4d09272289231f5d80c37f63f858f713f1348f3519606f2b1c
+b32498b9322c2ec5d38b8d205d10acb61335fb5c8dec41461f5c767e054e691e
+60a73f6ac42bf38f9eeb48ce671ef7fb68a7b136f99f7564d0e3df036ef98ab5
+6819d7c66223c1123930beacf9e67647c427bd78a9f481c2a573a1fd2e21ac71
+65ffd14a7ed14ae0f20425e8b3d861b6373a0ba50fa0afba8e38f2f1fc114dd3
+847975c59686ccea85a507a2f113d40699ff037af8471385851c88304c3044d1
+6ca1ce00e62e97a16057d153e3cc0ec64261f9eca87099af409985d7893aa6cb
+23264f4180e917e1c34f4b68f0f4f93cd078a2f1d842f0e22c728984a3426653
+816cc64fd2e79df4fd3ecf0e4b1a1a13f97435e6b84e7cfb410f2be52cc8e480
+951d13449c8a9631ea081de5e4f4813e58d27e0952638b7d0dd1c7f0a5061ebb
+6aedb99329b63f86b8d052f3eb5769a6a26238d1870daa539daae91f155f8e27
+0120addbb7961f8768261aed2e775a4e620127d67ee977744dcd7a077ea29f02
+1dc28f13980d5a4f3a4e9a4c41768632634c666e0a0788db338f096228d8722f
+74a139d8e665bd8ccf7c3a6ea2a70e39d96d484ae36c56a5537f6bd27d220d6c
+0f1a5ee3276134bfb0d646538878e63ed7f69430dc06bc9be26443174774339f
+c86905b8f5ccf562ad74e8d979da721d9d2cc3ee687b0dac0043238d0cc8b5d4
+6fbfe1340166dc1724f93d19efa5e6e7a8ff6953aa8e9b46e05b87a6cd7a3b50
+a404d9f85977b135ecfd70dad236c147f506b6cc28a19cca657d34696d6d8608
+197d13d2c4b10b83958b6f0ac695ecc01664394a229f527a577f10aeeb3c86b0
+b4ed99ebb0f512ae7287bf94ddaad921f0de9a7a48a9ff73ddc377eb8aaf9e53
+bf810005c4cbb6e9bb6213105b4f93e6a8b70f89b473542cbdbeba27f7979c98
+46995036fe40805dcdb4ff428f8a7501a41b9d90ca7371c55f8a62a581b2eafb
+e2c157da72ea3b988a3c782fc5e7e47bedd9120d9ecd889761cd7c9377ba7b30
+f4f4a21f8524266134f997d5d5dde34697052dfcf2998001e9085e8267cece01
+14a07090a9c397d5dfe1a887e0d565a4258704d6c03466e08e6b806d6d02d78f
+0cd93eae3334d53071af55d544f4582e070cf8dfb0445fa2f521c48eab605075
+208f7ff7d4a9438d4fae0ba803be2bca0d74cc4a95f95e81368bf13e73e8b8e7
+cdbcf86f13d106410e10d52df3c224691cf1bc657d8fc56b25b7b882700724f7
+752127c505ca581679b858a08a70927c4177713140701abbb1e30d616370d823
+e348abe9def37688fb8e314c4f1c5766dfc41d189059d21b6230e971415604f1
+961597c501a354aa14bb4bf5d8dcad5c0efb391e158fc4a823ebd6f6b5599de0
+8e0131ce8b1a6505a08a236241f802966445579969e272e53b2026b6a1d8f663
+2ec2e07a2f4c9fbef5f6d78883075a0b7575ea565315d2e42d1e9f16c99221c7
+da0b77907657aa020e46f9eb4a27248a8bc6de31de22e9db3e4fc7742d865943
+63d56f5ad7fda25741fc9b6c56e07006699e3abb7dc30e9f1cdea74392ceaa6b
+0fff7e52b5a070830e8061c1042a32099096e2acf5a233473c9cf774994d3fa6
+89fd5c965fe943d77ae971488a6878ee12efe60b5bd362cf6730b61cc2e15de0
+cc50d238d0fdc18e30dbfcbd3282cc05621c7954dfdf78a844821994172b861d
+8a064c5ddd8f187121520e9b7591c18b70ca17f658cfa0c11cf5bf3ac68e8187
+8ebbd0b8bb353ac4398452356b6cd309b6d5304e3d40baf9b6603548b18d53c4
+7bf554663751b2900e27ee1e46dd2134992dc683d2790ff48039adca64a9a7af
+9239d64d37b593307b10a3793784853eafe1dc7b53efa215727eb7dbd4dd0e8f
+7f22205c2305c5582aaabbe1e04bfa0f014da5eb4d4db37edfa08ff22102bf02
+25c17ef51f3b29331e5eb582cad31e14a089ca97a1915536b6449d944cbdc23b
+39bcccac5dccce5cf1c0124f1d508ff69303b3f68588851a342c118bd60e170b
+25e7cef0102c2dc4aaf045c339d5e21da358cc6341567a1ceb3d82bd9fb5c6ab
+ba26bbaaac92e2d4808a482f7a86a9b9b7ae64e282a4fa9c8b180dd5a4223995
+f2bb360f43c57dc0001c3bea49e27e65ee4e10365ff2ccfd406ede218e43a0ab
+e95fcb6f6ad1771ed6f1422ecc03bbdd46a86a64664f75fd700775fd9b8b27d4
+6803c6a5c06cbb04b585b5766447870eea063c83969efb11747e5113d559df96
+8f2c27d92e3a237bca8c181fb3c82bd75f4d3ec8296e5adb3273d63b2c124b7b
+22c6941b5709a9e4ad8a771c7cb44ad034b0802ef526b0ed52cab81fe4cb4b3f
+5dc72dc5b86b724d32eccc40def6313bf73bf16cf56ea92c236e3df997a8c4d0
+1f89ddd7b2fcc8981e6731ec8ef80cbf665ba08d41486bb48210e0fe9e8d9601
+5e538a0c7353bc5bb1e6c70cc8a5b2bcbac6a6a1e08b4e8c13b372a8942577dc
+9779de2198b20b7552c4e001adba2b013809f31167c1901a58c1658eede633b5
+214a79bcaed71a86b4414ff4eeb36bdc2bd67cf7c95ca9f01520c718ea59905c
+bb838b367f7b3fdae701df64c3f34fba0dce8c884455d0dea1ab985c9483f91c
+64597df66fd19cd2b1d5aa90d5d0d98326ffb26a59c2c982e8c4b029ceeaec40
+2c106cb40913440d26f8e73d81cc62727c97cf697f81aa040378ef25128968bc
+0ab6acae0ca91d4398fb9c10445d94ecbe315400f42150b2f8cfe8dbefa745f0
+1a4e26e79c189054334bafb83205854136a68fc375f32057f5821ae684d1de32
+4c6d40c5ac0b7da9ab3e04bd51d1e2ed10447dd5a990badb93b04b5d79825f71
+0b21e566fbe8acf3eb06988cad4f2ce3ee7ea67068f475ec6c3313794adbf23d
+51c84dec0cc0568d2860ddf75dfd2f9fad70a71701729d744dd543e7f37497cb
+006694da423d491220598b43240c48fec615c5300d4b9149b8f7754506eed3fb
+d919b8fdab8863f6e224029c939a81ad91b3189823fe93a7a8346404ea422ca2
+120d1dd287e716771fc3d0307f1471a408f987986914d1531dc227adb927906c
+090d360d801b802dc8f14afdb5f85031d77a48f6fc7b4c291bfe77141843c195
+ec2d98eb08c50598b11b57f14cbbb981b385fbf2601ebf0a2193fe3f2a0d016f
+7eda8341c2e842953743dd5303bed4321b6a6086f2529acb942bb4867b601ccb
+0e033f1d9ad071349425abb30fc5c59be2f8de422825a0c65c9af229367d88cb
+e64d10baa696a7d9234f1d9013b0230e3637686f78218d92f3f68c940a9c71cb
+9b9ae607c2531e2d4c0922ee3fccfa919f564d54093fbe4f7a38f35fce87f94e
+1f9852ed10f0e2589366b8b93639187389cd6418b06b0d24f4ae84ccc7a47eae
+11355a44eb6702241553ed7bf24d711a966970efa823fd0741f39b8289ca405f
+89b6778daff3790cdc8b1e3d92d3d3576dd09e9be6a0fd0d7ca5b6b51592e0f4
+74e746db72a8b8ac44e0f1514e20d6fde235ecb35c92da6e3d713617c6cc713f
+e295b2789dab9b86bfb429277a9af1f48caeedfb367a1af6407cfdd6ae871400
+c5f6e4aef1f8a95aded9445aa935e9d029b19912fae49d8c0813537a1f83a397
+5d3d503416962627e7a064486bca01e9be649e9592837808c289347818c56d07
+ed37354b64ab0239f279e8502e086e6d5556db55c78ccc5eaad23fd55f02703e
+3a50318b84528743570cfc45714e4f2a87168298c1730f4882f24542fe34d407
+008cbf83bd09afaee4816427112a5f7764d6dd4ada8711d9a585960dc1d20f4e
+fe80fd13dbdc18d165c8c4b96a523de74b4c6865f1ac55fe63c39be0e10abc3e
+66554aba2b3f1fdedb01dce1aa8652633b6b157c35513cf96db9f75924dadf1f
+ddc6d3e66fe86db851f9ec9bf9eacdfb01e9f82a6f6e1522abac7cdf380372b7
+5b50bf95413a33cac888caf762dbe3e94a6b46a3d64b1bf2666e00cf6afe2c15
+8aca7e1175bdee5978c13492775b0da771a26a3d066674e6451121cbfff3ef13
+67926ecec8cdbc68fb60b2b87dc81f81f3e7f36db93e185b8503716da045b4a2
+92407e0dcac3de6e0421db593d2ab73786f4e5d2b30b52829fb2ac70eec5c9e2
+912dc4915a230c6244e3dd2e88af1c6af60f9b9c390446b459fe1add8171cbd9
+6332b29fcfecf1b968d82a16ed1790dc5fe720b0ef1d69b8a9b84ce4907bd3c3
+0a5624aee58d7bbc275cc6da5cf77e64c9b6ce73b17f03156dad97fd1f5fc095
+ebdc92cb98cd72d097a768835011f83f4a543606e2f58e9264c4a134bb2f1df9
+0632e52a1ebede1ee706d6d0efcbf96943a3be71eab3068862420e57ce79a81b
+a4aae9e6442daa2a4217e2546b29794893e30bb0bc39f53dde14413b308c37e4
+ec9e1419c956f96658cd17ea4fbfb62e4ded3d7047cc88e10bd5a32663ee8ddb
+4e07b6ba4c45026e1281c09f9d4ea975c7158fb8ab
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR7
+%!PS-AdobeFont-1.1: CMR7 1.0
+%%CreationDate: 1991 Aug 20 16:39:21
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR7) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR7 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 10 /Omega put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 61 /equal put
+readonly def
+/FontBBox{-27 -250 1122 750}readonly def
+/UniqueXX 5000790 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b448685940729e6e22f4be0e08c6505cba868f7950
+93f556b64b808dd710eb936d3ac83e5783b5f7e56d363a59a026a5619a357d21
+c4e77bea121eb24b09027d1aad93158edf912940e91cd2f17922b35885894644
+7773730bb19af9e70453e1b78d5edc123b273a979891d6d5e624f4a388f3897e
+13b045e34b4ee2f5e4fc5e996d3549640010c671de14d18b0b3cd300e57dac03
+22e59bfbf7b29422230870f5897fcfaad4b50c7c1c58edcd119218163d6f6e56
+25ccb882db7b6d09a1586508e8cb642a11c29a46915e4a96e282079cb21922c1
+c2e360b487a45302fd22ec8c5fab63e54b5e844d4b17ca2fff37c69c366dd72a
+d02922c14c0932f65ed03e4219c117962edbad2dcdeaa9c10ce8af38a4ae52e2
+b377245b0be19a77d6c936e7530cc4d0b78d0cc4a92698fa2870fa54f2d8503e
+2d17b3d52fb2febb09f2b2af0c2a1892039ebe19a690098799a858e3d39631bd
+6925a154d161df3918074ada6bd52baddd0adc3f07e2d9f15e27cbf7fe8b98c4
+07205c811121fa91e059f2f99322fed63f359ac9da97aec383f067f23e5de331
+51e80f0a88ab50fe8fdae4a5de93c1ae2fdca06150b37246140c0e87cb2325a6
+0d2349162ae3ac93144eee1e665a1289105318fdfe86b6e76251cb25adc967d3
+d0b97fe5e279e1161736ab22b4ca510b964342383a840defd38f96a7280e6ac1
+34e48d740607ff2e7804164a16d47735864db847c97335e6d4215cb99911a1ec
+015a3edaac1f28fedd56d2467130d07bae9416c15f0827d27c6c79f59054282a
+418c12c157c91223a829947f47592f7cafd93ca182b25a73a9419127e3b12a9e
+5167ac3963f2b019b338ac46d63880f94dda4b538835884d2a5538c85528d6bd
+977f844d32b43b0e48caed5a4bdabcefe71695d69ca784d64d476eddddd04fb4
+dd6833f4b71645d7f76cc408f4aab6476e7c58a62af2693158dee00e15147afb
+1ad390821f90872f0ec9c322cc6823a6837c5d9c9506c8dc44144588283e02a6
+db49cc3281594301a76a0573d9c95d986f108e988d3900ebb6edca7b8580d4dd
+500c8d5ce83fa8d80cce38a5a3647ca9a87ce5e1558729e80e20e641cd833d27
+f0f881ee92ed59dcc51d037d4d869189c996959b7a0d6c35f8612381133ebb4a
+608587e67e0fdf52cfaaabee88cd286475815456a89f3885824c1d7ed2e6b7b8
+aeb41c9df9493a8b534f8a8fd885ed7dbcf74f1d9ae9c598e305e82f4dbe9441
+c616cfb31195dc5864171e112804cae020c5ed0162f367d35773680ca20a42f4
+988a84aa9ad085056c3c37f858b8e1e050564539a5e49de198204c46929695d3
+189624e2dbeafae6c84f7554f02a0e6516277a478118a13337e1185c3d23c1e3
+cd1241bfc2454ebcdf3532db75fcbb9d4bdadf41fe191e8a7e73746b6829b5b2
+a8cb0cdf77f6cd864364ee9950fa88796d9eb61bcf21960bb95f6767cd58cd71
+3b8b0af3ff926cdd1d121b391830e040290a961b79b9041dd33e8c6f1712ac21
+92b624389fd7a739320f6bd71987819687cfd66595cbdfd5c2a2f1e908286612
+bd58cfa49b8e2080cbfee7fa1958ee86ad87130976e18d1dee4ecdadbdaa0a85
+d254e8565ea03d7d74baaa2f2ae85307cc4d3f1ab3839e77ce6412508092746e
+e67ea260cf4dda2f5d007e4517a240223050791c2d718c20dc7fb1d285399e18
+91838c7e41450cc88bb3f8a795e38b1b8473b2920c115faa28fdf0a30ce6f41f
+30e3684268deddd1d1d5fb550cb71572bac10d6b3fca6d434ccd1673ac17b5a8
+f9c580d376580fe5da673aa0acda29ca8482169410a8a127f41e590b3b498d47
+a487ec7c434a9e8e8b824fdf56a42759e07b38cc537d6a3a7410a71b003619f5
+9ea1cba489220ede7b504a047df332ba29e44d05a2e91a76bcb5a029d9e6df31
+4e9ba7a5b1127ab0235367ee050e970a3427942dbf20ed1e84c8e30f49592e94
+1e9d98365667a8d6b68cf992d30b9b77bd34815cc5286664e8409d1a5962ce25
+f086658b56a65e9612e4b058d03a7a723b1887928c44b1cfe5bfe1590a6d372f
+e01e354b2a75a782ef19dbf4315c6e2b095a61517da93696503965b720a7ccd9
+ad214caf370fa7a79c4436f7c1a950e8d51a926d26952c82bf312453d1d8e3c9
+b1a14154368db8901987b1c11a39ca2d9b9f9f46d08ccf61099fbd6ff65d9d61
+6c5d04ae92d965d6fbc967e54598465c50e0e652c23d22d3c57dbfd019a45176
+6576335e467c41c024f46b904ed6b9b11e32042406f35207727dde598a53b9a5
+4579f8adc256ca73784fa67691c0c6b265c0bf359f48487bc02555ef8f91fe6b
+5ab927c3df47063731fd04dfc22a45303ed4ddf20623e7909180e2e60cb5d35e
+496ea412c139464656ed52649b1a4c76452fc5a933b0e4d710bbef4806d6f77f
+7744814001ab6781029f2cf5c1330b259f72e60c5f2313972bb5e81afb8e5e54
+ee5bd3df39b998e9821e3787
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMSY10
+%!PS-AdobeFont-1.1: CMSY10 1.0
+%%CreationDate: 1991 Aug 15 07:20:57
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /minus put
+dup 1 /periodcentered put
+dup 2 /multiply put
+dup 15 /bullet put
+dup 17 /equivalence put
+dup 20 /lessequal put
+dup 25 /approxequal put
+dup 32 /arrowleft put
+dup 33 /arrowright put
+dup 50 /element put
+dup 54 /negationslash put
+dup 56 /universal put
+dup 102 /braceleft put
+dup 103 /braceright put
+dup 106 /bar put
+dup 114 /nabla put
+readonly def
+/FontBBox{-29 -960 1116 775}readonly def
+/UniqueXX 5000820 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352
+05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23
+b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a
+f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145
+d026957276530530a2fbefc6c8f67052788e6703bb5ee49533870bca1f113ad8
+3750d597b842d8d96c423ba1273ddd32f3a54a912a443fcd44f7c3a6fe3956b0
+aa1e784aaec6fce08dae0c76da9d0a3eba57b98a6233d9e9f0c3f00fcc6b2c6a
+9ba23af389e6dfff4efec3de05d6276c6be417703ce508377f25960ef4ed83b4
+9b01b873f3a639ce00f356229b6477a081933fef3bb80e2b9dffa7f75567b1fa
+4d739b772f8d674e567534c6c5bbf1cf615372be20b18472f7aa58be8c216dbd
+df81cc0a86b6d8318ca68fe22c8af13b54d7576fe4ca5a7af9005ea5cc4edb79
+c0ab668e4fec4b7f5a9eb5f0e4c088cd818ecc4feb4b40ec8bd2981bf2336074
+b64c4302856ef184e72b8e52f8eaeea96d7cc14bca7caa95822ca41fddf44eb0
+3bb40da5b3924d358871e96edff313a6ec2499923dfa1949492a642c97bec26a
+3211dde8eefec916a57acd1e634dadcb6a63d42213c71983d04d3090df55f0a5
+b7c9836900216207d18e17c3db80dab291c185465ec32366f135d7ad7aa76942
+bd63888a2bd5065497d506848893d2a605b26c44783988bb1a8a1bedf197592d
+7a0180e49420396162a13e4a9b59de2d0f38b7dc25f730b461b5da9b221bf3b4
+3d713046ddb4fec29cdc420a8fc6aac27530d5818ab56259fd436bb5a73c7abe
+84c08e6aaef6ce9eeb098643abb517e194f608ef6da255a292f0146fddf5b75a
+c961836d838165d45a52345e9b5da40481ccab1bac422f0e02278f2ddf7a4c1d
+d1bae5851e9372f9b8ea2e29c3c71f455db7642430ba1878df32be678bf5ce0c
+48bb1290d70cf26785d4fb2e6df551b47414d2fb3d85e630cf436b08484817ba
+cac8c295e2c6fb01b523323e40652c04710ce9828743c9aef92bdcc05edbd9c4
+96186ac8f1b4ffda3a6dbfb4ffce69a91afb182ae013027c15abeed6d2075a59
+b0f5662a741702ff73224ffdeaa42d29b9b5b81ac347192325f8a377fe9eb5bc
+acd8204054b335a6d75bab5be98075b720a8f5dbf285b0a267e25bd1a813c353
+82d26725a047419263aec87da1e1aa2a440afd0915e25a8a28485864c1df7b41
+6430c57561e27e10c66002acb8a3edc82d86ca58d58ce24a90ca8e0b12881428
+a5c4cf0eef500dc032c2feb578277a18f3495f5daa3849c9dd04bd513dbb30e8
+644edbc79b64f7c22a8e7590ab84e607fa1e9849c7b5f27e1ef21661898e6fda
+d1271fee8ed88a3bcb0e281458e1c7ff0068a7d94b508e06feb5ae961a2e2f0f
+eb80e8d466152ad24407313fd123ceb54ef1f8ae5b9137a89b4c2c782ccd70d7
+e3eb0b15b87122a6c33af361c19bbf64f7c192f0b3a319bdb5da389ccc0b9ae1
+111cdfbf8bd1bfbd7649cd4d262a9e03714a4ee46a1a48dfdcd87c842659b8a8
+dc474d69d998050f46041693463b558471cff92cdc2c29b60254fad319ac272f
+8f54489b63771bd182b92bb869275e0a4f6ec1de4830f49cdad6d73de04b46d9
+1c62086cede7d96aa1bac32defbec9608f963a0a09bf7c27fc5acf04e52b8889
+bcfa27ec4527cd0a4693fc11d8b52fa742ffcfda7a893e087e4d4e2898383916
+f19b7273cd31fd7bc82d02b3c2c81ad2849e6cdca5a03f18461aa70dbd7f61a3
+6f6461a5e540e95cb0d8d287be12ad032ef029c29d47f15121a52639aad590ce
+c0d83f8f97277a08a67da5085c608b10a1f1cf498e75514c67fc7247cdb4203d
+5d72f12330385154bfec076b07d8e5a3e2a90830dea7e1f3d02b1907476c4c60
+1248af0fa77faea617a3f26a78533702beee40cc156c2cdc025b50c393286db9
+88aa919ea0d1f9d4ff734d98759f56bf9b6377e960485f0412bbfdce01492e8e
+900f22f0b088fea71e6d57e798efab73c11dcd367b7d0e45ca59c806feacef5e
+d257296989838e436b0f6e80bc4b989a7bfa1dee1ab186f0d001e0b50494edd7
+7b6d671a5907e8fe28dddbdcb163000060dd454de2aeb84522b2c047ee2ab0dc
+aa489a2a8affb95a50e4104176ae3dabed9d0ef8128b567bfbb016ad8fb3ca47
+8135f2a8a71fd987d3f9e87f864934756a65cb3f5d6c3f6c9ea796e85aabaf56
+79075315d18f420d037f4a24de26ffb8e1aaaf169665759d74e73c7661ca2723
+4d8c33fd9b5802868360a42d722ad913dd1df87ec624aa643a648fbc66ca9552
+9df1d29fe249d82d5d7654d606b1d6bd814637ee73f38eb1eacc6a46c4908a87
+add4692aaa49f3fffef89366fb74aba70cd115876c9c1fb78930ac59d29921b1
+f5e67d9841ed4651f34bcbabc8781e79d3b2c141ac89b37a079adbc5779d0d94
+b0cb910725b1e4cbeda6a58d99e6571154eedd378c770abd8b7d65b42a135688
+073519669324d73f0891ef83946156642a019cf0ed1ffa216a298399cc7ffb58
+f3d453429a712bca43f77dec8e89078c98e3692925974642309817915f1278b0
+97335251a9be4a6a6569b6252fad51089bbc91facadfb2a473e8df6273c4651b
+12a57f7c2735996642e7524980c5f58c2f651eac4690530a9263b566e4296846
+650f5db14699d6c5c2db390fa85ad243c250bc399b8e67e376bc8f1316d5334b
+e276b3019b932089b95e15db0033a0903a42a701deb64518634b9055cf98bb09
+e54fbb51e31dd69849c00d0c160c2a9a253baecf9c5b055b7568d547635b84d6
+b1f2fe3d074fce320ed79388d034ec570f935dab98c42cfb101c8d1e35e3d36b
+ecb152aaead0dfbad8ff645eef0a8e5f515b45ec3f3ba0cfdca784c16f1934a9
+7b9a8c585434626d2c63b629a0fdb72181d1cb4bf77f19d1753d923de2f2755b
+d2f23f8dca7605741be7d01da13a608fc090077878cda5897bdfab3028041c68
+1107416a6cefadc1758ad359197dfa9da8d57206f48c0e6e8571ac91c7e76392
+8a87c49cc560a8c7e518eb91faf4f9214c8245d5bfb7002bcd15472373095c44
+e41996b4eaca71c31ff1486aadee4fca3ba1c266f897ccce99471647932cff2a
+a6f22eb29c56d7c52eb4d24ea0ce30515349219cb7831428b694ddc0277738b1
+747557b5c500787adfc2ed266c9f754a9ef11b856c05dbe93ab8e8ceaf36b4a8
+c4d658b331bb1c0a39f4a27ee58d7b868ffbee9f2b4a9a04df3aeb2e3b37fce2
+596c681bfbba5efce13ad045eff1a90f6ee3163851c315e0c0644373d187e7db
+0c578df822dd1f4d7f370974da1e49203cfdb96389ad11c3deaff93fff81528b
+fe828923218745b2c0a04b2ef7b3892c3b3c63318cf64ae90ff45508dd1f96a2
+c9e53ee27784c5cb3d400def3b7efcb12b5f3a0666f38ff3a631cbe302d456f1
+3b97d7390591714ec0f4176689808e820e505060c9b1096675b8d9c3bf12dc5b
+3fa883a4264fd03972c298c54ccbb353743c205b257327962b26ef90a7740a82
+34b0e6ffbdf432f78540f02f31975289bc0fe05310329180fa3abb024ed6a8f0
+5cd22238adc7787e0e04731c8e6d14f4a62c6ca364e92d78ce9d6e638fa8471e
+155fdd6a
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMMI10
+%!PS-AdobeFont-1.1: CMMI10 1.100
+%%CreationDate: 1996 Jul 23 07:53:57
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 12 /beta put
+dup 14 /delta put
+dup 21 /lambda put
+dup 22 /mu put
+dup 23 /nu put
+dup 32 /psi put
+dup 39 /phi1 put
+dup 58 /period put
+dup 59 /comma put
+dup 60 /less put
+dup 61 /slash put
+dup 64 /partialdiff put
+dup 65 /A put
+dup 70 /F put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 78 /N put
+dup 81 /Q put
+dup 85 /U put
+dup 86 /V put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 102 /f put
+dup 103 /g put
+dup 105 /i put
+dup 106 /j put
+dup 108 /l put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+readonly def
+/FontBBox{-32 -250 1048 750}readonly def
+/UniqueXX 5087385 def
+currentdict end
+currentfile eexec
+80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98
+74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730
+48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f
+15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff
+da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427
+bdd7da12534ba078ad3d780414930da4f8d58abefd45db119b10eb409dd89792
+3c6e705479464a4b310b58348c4b42393988fef4925cf984423aaf65fea9f0e6
+4629953bcf50b919d968d99bd185f83112b2759cc411764e9bde677f57c5ee5a
+c555448d5f81a16259ded1e11bf4119d53e8ab07a802df900d3a2d5ccc1c6876
+d29c5e9effb7af3ef83400b0910c07873a8c56fa7b1eb1ba426043b00cc95dbe
+dc6e136cbbbcb3f67509964f9f281ebf81fe5b018122eaf66c4a838487e82e18
+6e006093042848a903efb3469ab6b4049767aadb95c30408dfd58d8a10f4cb22
+168decd9f3ee100f07b49aa44c92139b669cc312ba20192454eb2375be6284b0
+26659d964b96ae82d4942e758027fcf23c25ed01115af27ce7f20efe2a822bb6
+84004f20243a49c9e93301fc21b80815c033c3e2ba58ef53da2157d524b395f2
+b37abca13bc6a2f42e824ab7e47106176b0d6db267fbb795ac7425582df2e3dc
+55863468a9200742bd7b552c48f8cf58bc21343bd3b95abfa140f33f37c6f3f7
+8b0d8a5154eb7c1f62ec598267f13e841a3e64172663935ac8b665d86540d316
+ddece329c008049c5e74b27d59022c5515059bc3b89370b1bc6a169c888bb325
+e0b74282d6f053a50da4024ed1e433271a32ab8c17d41c632b41cf9f3ecd5fe1
+24daf7aea7ce8a63047b245822930d517df7baaafa69d2d17f7d93cebd45416d
+f3459365434123a76ccf883a4973bab19807e1f0c4bab03a45f7ed69ff2660ff
+3963e4def11001eec4238c368a39d874fd30b3c14f4186ec7700fbce22abe468
+eb32baf7b0164f8f21a9b5e706b91411faaa44467cb2180ab03de375c1ab93e9
+76e11ab92fdd4a7280a6d1a8dc65c4c89d04c8ed6988045a2a3de9a4c7b1efd3
+75b6c82686e73bb775a43d527131a99f996092d2fd0271cbbd894159d9c4349f
+963f8cad05b7a3474a493fa92e3a4c36c32b4a1491f478ce1cceb9e8afd88e05
+14a1a9794e2f5811abf84a3cb6a981393332eb618459aa41758cc7697276d0ab
+1bd1f12e879020427a05393d90b8b1f3a26b29a774cb303f3a8773b7c8aed695
+ea0a2395efe28a4a42a092ef70fcf011b65b4ef23d10d1a62c09f6d8be7706f9
+e0bea08b0974bfadd7097a11ca757972f639f771dc640894cf69fa1ac8ce20bb
+93a2c420dcb61e408b4c49416756aa9ed8767a73e2b287903e4fa7ea654f6abe
+7dfbe52ec02836ff7c7c0dfd17b12d9ebd36eb04ce62b6fc165094a72a0b64fc
+d4837cc13eb9c1955d8988e89d0fc746d572e45befc8fe20b493a08af05792f3
+3ea5719bb43a6b544868707a12c68e31f85d4a80706451ece8617690d580c991
+f4deb6f83a35116070be36242b3970f90b2b34457c55436f19b5fcf093d07e4a
+19e255f8434ab0395cf2a4f1bc58e6fa989431e13d96633109e04a3f04b8493e
+2e24c0f87e21eec9d88cc43b6af8b3a068c3beb2f0f5182cfb5e56b69526a014
+e6008183f67fded09046ce1221d82ce622e013c4cda54c9f1ae2f58f5e522378
+b584a2eb9401c6ba5780994eb99c35265d454a3aa0b26cefd20d59ecfe4be62d
+ecb8256b056ed27ad45c05ea569de7ee337b19d7df6737d2dcf68eccadb327fd
+51bbfeb958f1b2a0b4450435067a1f8a959b62609ba8830695a97b11b86e5f3f
+67e34832bd1be9fa658d9de712abad8c3282164582efcd03ff8218ea8fc2098e
+95594fc4e08b6edab8d8001fe4bf88bea89df97e63f6382c21887720505f6e8b
+5738b9da76f4acc28cd941ea7fdad45cbcbc274cb24c8805bda158e415a6e3bc
+3c989e6ac3cafed5604f152a9b262ef18e567d0fb0eabc88a8035884671f2e0c
+827d9fdcbec7fbac02b932dbdd788360039c6a6785da78f485aa5a5933ad99fd
+19ee71d6c930b12cce33c7a1563bc1834ea516192246f84d4a6c4e47652cd8f5
+f5ce53dd72198eb90f490434b55ea637a1fb46fa799eb283efb88fd8d12334b0
+83f112b08aebe46f86d092c4e9f8d97ce2a3eb4929cc9aabdfe7c4f67f97d9b6
+6c8d70e99e69e00d7d564cb7f5865b27f99f6aea21379dace806b799291b4c59
+b34557eb14ed4f9196db1a817cf7688d2516379e13525fc8a0cf2b586b55281b
+7f5657606a289f185cb5e9d8ee9ea190f8ee211985cd909beae0288b582f3234
+4e5a0d73d98518ee3279d3d854f16560b20c72346782b8373c030c5e31dd9dca
+40b03970a64ac36006aba1ee3407f38a7bc1d34d17d6eb8280a830b2c2150db3
+c67a8a930aae2928984f9e2456ecd309884e0e276d64a693603cfa01b784338f
+dd0a6fb50a9e2dc18c9a49acfa440f648fac48457dd08ca486705fc8efe3a4b0
+a1b345a521cfd974b35eeafd7668329d89962a7bbe0a5a786fc769d2753cda67
+155a62850252b0dc59c735112058bb713d8bf5c93a143d25c013c84f99cb7c12
+3d813d9d0c3af073db48821b8d9f2da5917a9ef83af8ce94f289cf54716080b6
+784c8e4e6d8f8b4ba8ba62401d8c89ec602cae99746a3918a2b6edbb1d6cf375
+8814b0f2a2f0e9d9934cafee9ef29d8bb70ee46897cbf286ec49dfd85f90f651
+040f82829caf9311242be2f872b789deb0d57c9e9b9ff9e8cf33a556181f6314
+8c19f8c7f015d6f034ad7a70efc91818fcdec1b25535b8e2dfe9d526931b29ea
+8262833ca4bf3213392053aaee02a01faf431717d8a3b93426acdda121ab85ce
+899a758d49d79be5b2af02a9bd1844d972445690f4dc85ac0bd4b4b211859efc
+422121a29126f4381c3fceb9b37dfe526604d9d0a187b68afd703d4f38b3dcd0
+d943c5133add4eeeda2186ea58ab4c28f6233ed8304dd65b5217cd23dda4a449
+6556679cab23280bb49a3af9b763a4c6c8e9dcb3397c47dbaeb139b41091322b
+e4d7e47f611c435945c2ecca69d9146388eb6913616d6d9be7449f5d323311f6
+7b9a95fbe6a4e039b398a806d00a4e71248a6b2e9a6918515cc38bb0a4cfd323
+1c196043a99727f1bfbf46ac0ffbe965bb2c68349874249cd366d8b2ffcfd4a6
+a7c68f9dc77c01bc6e9fbe9531ea5190f6d9e86a310e456ad87862c8f187f5c5
+89320d6d484fdbdc118f9867834b10b4bb5f14693e725524634b5d5f54a5185b
+d9d8f51b0cb2ab963889772ed88d3703646645601d4d1efc080dc7481bf10047
+a9346612b013db61c59267f4fab3f386e03dfd42b1ae58dd2e6e9d70a743ace0
+c0e1722b60ac000099d589df4f6ccb7824e4330f373c20bf17bb17d734e500eb
+72eca1ec8f6cc4c0ab331b1fa5a35f06bc0a8def90217eecac810096d6ecdb77
+ed0a45910059f985f6aa7e47630e370867ce961ace19c447e40720840ab96f4b
+dc61db820841d9d1794a2be4d0dd6e8db366dec26970c7d737832471db257be3
+7457e62aa194dc9a174962dce261053d5514beb305626e77ad1882bd6a153807
+97408a8a6893f83f38cde0297a37f566a83982200abe8ed7c50e01867d5bcbc1
+56f9cfd88f14c42404767057b9a0b4a805429cb6b117aac30cd83ed6c1910444
+f1af8ccdcc5f7d4946f1d48c1849bed26be6562310b4979b6b8161477e2a9993
+09e048100ff85a14332d53ff67e7f056bc894e77b2bf3cc08df4b6d46283b8ec
+fb9cfcabf30c1096eefd39a74d861462317d791f63e5a858b23ce21a0d993a42
+c2b271838aa79762a9efcfd29e9b538b991dc8103ee5255f6286c07aabd47a77
+3521d3ffbc4ad4125b2b4455a8236ff725e61f19986f3adc7fa7b34890b202fc
+1638360144c1e474519f83588585c289a7347c3f3a675a4ff7603dc66d2dd9c7
+681d4bcfe1f4614cfe623a9480eeb51dd1da758fa6f0c1e21acc3095288b4a52
+bcecfd5f590df206d43ce35a81a5c6fa294c3671a540c967b27a70d079d50d2f
+bf688c56e3bcac86db01a8b9058cd06d9ebf8146c9da92a18c6c5ad8a105dc42
+e9b9fb1133cbd9ed62552e9669029b1afe510fc71933190dfe1676b99452d9b2
+b5743f37c581b3348bf5d3e3a9bd81c538162b6a227bfff480165866891c5e7d
+20193bcdf8a5993040bb71e7ae002d27fd34970897385bc1f815286886051bb6
+a0effab4055a3648a2c5eae8fc2e42b5839ca0ea2ec0e150e24c801f7a2d082c
+4c0e37da1e7ce037ab0257591f0303e5a1555a301c32a05288d100b747376654
+29f03f17e078d21da9dc428038e07a80ffcbf5617d8543efbe87b9200b01f0bc
+a133ecf2478973cafdd00404d4a05791cc85c86c2cd2ce6aaa00a84317ee2846
+16c7fa1e142e2f086fb070cf17c48d597d963b53ec82a4f341546b81f6f00b1b
+c05c60f48e3f1bd68b2d4c96d7ac6ba1aebe765a1f50b62b116f5504090882ac
+ce2cea9e38664a5cc60d2d9caa99a2817f1bd9de967dadae69cc73977695a2c3
+501247d1ac73065ea4bea71f5b257ac09b9d76b092209913b166e0ffd0d5f4e7
+1363b74aa8a37f8be3fc1337a60d4615a61ec9308d93b2f70c8d92d6d7fc29a2
+c3064ce24971c2b8e1b07e920d89ed0a044e0050019fd4233d2f57c8f092e836
+fcdf48a441a50da0ec5c38ea137deac64a3d6a527f51750283bbc4783fa58453
+372bd9ad06e9f183570728c2651788e3018e83cf9bcd7badb3279bbd91b1a015
+13e97d9c9e37cbc7ba0b43d7c378be25817b679c1a0574de0927268f9a0435ea
+e49308dc8acbe4312f42924ab3cb66e4111cdcb11f10700825378e5ddfdc8170
+6dccf55d16d3e58ccac7858b11625e9d1965e3effd430df3ba229b0def8062d6
+e916264f306df9ecbed95d08729bb86e1a127a3e8665b42964b96871e361275b
+e0c2d5a8de8fb36fb712ead4548b10623437f0bba56a35bc06eb5915c27aae65
+c367f31e87badcec7b32998ec7c91f62be646140afb28a93ce0518196cabbc93
+73e7de347d342365688035b612def1e5d558370d747b55cda302038d0754fa59
+3ccdd2232b51c0c03b50946a189b29c0d2839e068fb95ea5b4ec54248d67659e
+c4c40e62a9ce197dcb6ba5dfdcd34585c5db5b0326dec02e88705c5b65222503
+0ab1ed366ee0e8a6d0b6e9a21bf3d3522956f9f309c21e79aa78346587d8d478
+718729765ed66668394ec3691dbde3d8062cd7953b48be4fb48c6139d0caf99a
+322099402db1ead0cd282cfba49782ee9ddff07a390dfc0a1d08045608a80f81
+f83de3dda018fe309d2a9084928b99137552bd9b1eecf33c4d275822dad9e448
+a3b1d9d48e2411e2bb0e7ed4cb2029303d6c59e377b0a3c15ffe4b2df0877a6d
+883ee027db89e7a9188d8daf0fcc62020f08727423040a97d0a587c10747789f
+d413d3d55da0a530e49b3b49ded82568d722f681d3010e51d848a27b9b6afd22
+6a6c0e7ed78186727fa4fddf136074b0367bcf3103ea41ce6298f9688ba8547a
+aab453fd860847c3a36584990fc4ec252a3a41ed9e6434a7494c79a2db1626ab
+eb1beb1ddead0e082db5ad0b126b38a4d177e800f18920dcc610a8cd39e705ef
+71e021c18783eacf42d5f1225d3a31d3f1f6c87e1b7703784889f560cb8e5c38
+2163bf533ac305b1efce25cac1cd09dbab5c2e1cbb84a8cfca5c4d35299fba7d
+9d49072d27d04e13c8c1030cfb66960e3d1640c4bdeb0b9652e7a82233c340b8
+0e7dc44597f1f4b25eaa9a392feb61c120a1354b76e3ec1b39bf46bf63c88e42
+53317a6f9e21923cc479ca2837d934b22f3a63de42c16fefd68c25826670d3e3
+9a820d6de32ea20f5f51bb1213686883cda8fdf46e7d0d62c14d80012460a3c8
+c72b2607323ef921eafea39bf61ee401aeaaa277c46a8e9c2f5d93245a3db5e0
+c1a51fce53e31991a5040bf1565762d52b8851e00f27758f3b1dbb1b85709513
+d33e295205802b043603c9565f0921f267d856e111e8609d6dfbc3bdcf742829
+eebb6cd59ace388d30d101aad627f29ac3f0b1eab30de25a35343d227532c512
+75205ecbe9b32f8484e4c1227145c5189ea3c073e40f10e655fe3614921e7a3a
+c4e67229b82438decce9b34ce1d36223abf8eb6d9950603de32bc9e0c7daf092
+a811ec1d1aafa3e3719902976a4b6a055465511cff3744d8b4b546386b89eb9a
+49eedcac3325a1b5001b5b2a162d38c3e12577285c9c489e6482684335189e2c
+0d16ed690dccaecc8979560783e5d50e0a4ad066bd181076859a4416069a387d
+9f776106722ac91fee83013c5877108d83a105a6da1c5b2ee11d09898e40d819
+481fa8ddf7a8f8baf3ad95265f7cefc90bfc55fc09cc2c6f45eddcd0396aecba
+8fc6642379378e674c7e64771b2aa8f709938253f6047b6e8cb6f382c60821d7
+f9803d37900d0afe349e83f0abf2c67955ede557809af6608986e09f895cc37e
+ab14c0a448b29579594c52f06725ad78f8e7f2a0e35b078aa8629509b64f481e
+95cb2195b4c53782a17b55cbcf43f5741c614c7dc57f87afa4ef1239042c3886
+6e8f550f23ae0577ea75e9574e0ac7fca96755a4dfc0eb02bf4c1f3be82f75d7
+ebe47928bf682642bf7f2ce3da842d6275c909572112f8697f7bf8f8fef1b573
+ea68613bf5cd6860512e1092770ec59d14aa4a0794ee60dedc11b0c01c1b261d
+a2a5aed8a3fca15eba32ff78cd4e478acba05b56b042d3126b8a4a005a56791a
+da0f64c80ea855b2ad43b494fe079ad7da3eb1483d7c9d6ae2b57507213e8984
+4251af0f718936ff84ed0a2e7c3ef1abbf9b81a81012a3373eb6e4ca2ad8cb1c
+44376c1e4fa13e994488b4cc638c1541c3c412b7227d1044449838d6734c14a4
+4011f5611d0f31faf52f5f1ad4fdf97bb10851cb0ba814ffb8522b86d194d368
+35f5d9c0ce02b1d9a76dadaf71da54fb2fd8b476e911b62e8646692c2dd5fd23
+14daf09b539067d657f9787de364290877bcde1f721abd316ca19b3fec5fa07d
+da25a63bb94022ec52ab6a858562fd21c282082a78a852e3feb7248860d7aead
+0396cbda56541ea44af11923338cd6ae449136d0899b7f3fc5571d3da6767126
+4daa3b010c01db57960e24ffc4d8b0a73417cfd445a46a73811e32810e1ca950
+4969cf44399d9273ced22912f42479ee954e5c61ed6b52ad655e8731e364e811
+237b645fd6bbcbc7c4222771596f5f9c3ee4f233fb3c3b56746d7fcf8bae3828
+9d1931d6c6977152433c47dbb267b1ca36d1c4468680f309d9a66730bcfa16c4
+3914393cc8c277393fdf4bcc6904bfa118c6765cb56ea4c00c33a96a03fbe5c8
+37dce38171360b07c180c401db9983359c29be4e68297960b2ceaf1f6b55078f
+227dc4dfd50344ae6151f8ffac49a5efe1b454b83317f0315e7b574012e60374
+c677961fe08bf76d1cd6e3865edc3dbd679325ec9e0b20f497d993dda74a9caa
+dcc5b366b48aefd55671ceb8f2236e6df62416fe48f953761d6c515289a16eeb
+9859290e5e389e9c5c7d082c83533b6065ca18b6d06e5678a11ad419e3a6f5a5
+5f459c70372a7f0419766a6d42008e679a207dd7989e941d6d9f543012c1935f
+33a553be813923e9137a2f0d40fbbd1ec98a86195adc0856c0285ace5516c6d0
+bf688e33b1339fd16632f21dae5d2837af15c66054c987dfa62d9808af608851
+e8da8d3be44128ba4bebf5f372b4c4ce8565652d0d7aff995fcd283c20c25103
+2bf1eb8a5fe4b8533f5bbb224239efbdb0dec2d9baaaa030a78d0ce6d9993a77
+7a2888322ccaeaabb2a1d2a501b57c8524e74a778e3d6a80b7b46bdf9780849a
+4d76d6e5f79d5e788b896ba314d6a1da2cf09582656b70100fbd820ac92c66fc
+57cdae03a4b7a2f0ff82c41666bab6b62834e72ee538b74d3d25a0d7c83fd124
+35997adfdb586cfed7e13e59b4cf7f844553fcc563ad85797ae14cb919477716
+0f230aa5dd2f1cfe7e8da916555b8dd4678ad4df107cac2f16a31ffcdfde5003
+4b7f04addb3f69ed1f1af19f2cfcdc439e6c8fef5288c9c310644f6dc78c2d6d
+65289fe2ee32dbe76a81921a7a3e5a2856f7e5dcb848691861928b4233e00093
+ed5b8d6e5b8c83f5a5247e8443a82a85b5961e53b0570abd120d19592168bd7e
+a6b81a245f1c9ae5899eee3d3838018343bdbf8e8c5d90e50880218b021a4474
+842760eeeb4ede9af41a5095baace2582341c422dc36c37e5859aac59aa9b657
+b40c9fd648ef69ba15fc05fbdd1e42d5190caa3b72612c8c7cd31cc3b77cc81b
+0be619df94a3394a1884708c11f904105808fa74b44b08c3151cceac9820b74e
+df6fbfd954e32c09aef856027ee074789a9bb0b16de1a0e8ca1695630657776b
+054b560fff78bd2d9d56887b05f62dd516ce5201d2af5881efad7ed75dc11e78
+cd08cfd65cc1919b038bb338a808ecf6950974accbaa8db694cdf98605775889
+0fd9a047fad18e9bf982555dcff94082919aca04fa1b282efed4965fcaccafe3
+dbbea3ab4fbdd40077acc9d5ad9b3b724e661fc8239522038fe887277df552c6
+3a59e28621a72147d62f90a974689566ea6fa310022680a0999643da14f1268b
+87ed9f07152faef12905c0005c5af753e5b22d68e2112484d315f57c1b602769
+0df965b2d9679e38a68a0edcbd1ce6df9c7864f938426492ff2d71a759389073
+97d577cf45cc7a1b1720fdf93d06d9c1d114b24e05914a36c74e51cfe6f4dcd0
+df6bfa44d8ffe2255c9b7c4d0e01f28fa3e55ab90c544411a418f80f206180c6
+5ea414ef1968df38ca341a53db3b1cdc0bc0419a3d59394061e3e4402a48af65
+3bad74da7231c2d670e8a582d4ca5a7952beed6b211f2e1e187da899ce3fe648
+337e7489e135f78c52d5bfce51b945db0f72415a9f65e73bf15590af07dd2caf
+c1f8f685f9532c5bde13d52df54dfdadc2663ab9a98c9d613b393a561f8551bf
+18cfa630baf1ba0287765716185918346aca6ef21c317fc939f302c7a9084d1e
+c7d328888ef63c03c10aa200f62d779320ebfed643313f806c31bfe4ccaaa706
+36342297e4e6b45817e89d41485c16deb935df0c9614bdbee682a7280ad66b74
+8868b5307e513e969bdb28aebe3bc583fc73008b1876d5d23ef5aee7c65ace41
+9d8d49fea2d233d5787712a06a64507ec5237f88dbfb0796561858eac3dd6f10
+3b02e93ea3d11fc94354ee097540651df89d21738e7abeef2af8cae9c2c66b6b
+c3d4a4608fb8cd7ba6cf4830367353984c2429fd7ca631353233839ec5bcaef0
+f45de8678cd357c3a58581d884db17237183c3cff4f6ad1ab3c90600f1912c27
+23312c05675cf0225ecec06c2f700dd3101e05b62fd990c8a780a7c67d309d15
+4028f3ddf624d5d9e8b6a589d9157765d221fe6b1bd7b937edea1481c0edea60
+b06bd5273563abe4eaffd6cf8a5ef7e15d620f54d13158816c9cf62901c6f4d3
+1b016afba2b5ad5e7312332514957fd0dafd608a45079d90d027c537d28bd038
+080867d10214648a6a97e6c207b488a17db10022e03f8431cd1fa5e1b02ee7cc
+361cca6df87d1ea41f862efd3c271b9a4b4957210d04d55a8fe05f1c3609e81f
+473ad8cb6a83493b23bb3fa4050736f20a54d63a3f2125af5edde712285e1a88
+d810d30e7eb5347a68f68812cd7e518a73127442990b2010abb8f17d3b1f9195
+16ac7b57e79de2d8752de0eee1f0d2a851ae02faf7d72900edddbcb5783cf879
+c6be384891c274431bbc9b07e4525e6e766593401cb0a1fd4c3a2382ce872c62
+3febd440dc183410d697f558644877dd9351e40ab7419fcf19f5f3519cfd1e0d
+87bb2ea2a2c71bc26438047179d2c0bf8ba817b3d0f9296ee7794574283699f3
+4da47462f60a0e6d4720b4668bd94a3a48c93a4ceb4c188400615d640851165b
+53551600e7d60c4e3c6cb3924544e8e64d35d59a17a215828981457a75d9e0f0
+cba401b64eee8beff5d1b584b722590790cb500aa321ed786bc2a9e74ca7b55f
+b35251d034972570ab8ce4452ad3e601d627f4ee61a3524bfa8ee3b1a4e3daac
+394d6577459f14af7f3d98321ff4ef1e9b78aaef8e1f58712921b7da9c5cd7d2
+c0f2384a83dfa4a3f68c475ba1bb955f5f235a1e8da626670f0548f1bf95776d
+f498f5a12ab40a89ea2e927ba3519a7037f5460dea7db73683b9409fa18e4e30
+1971ae782a5dd528adae11a2e275b180009ea11f0b5dafbe0994622683baa049
+9b29426357211d20eaec88b9a70127abb08f9b91ab3388a953f911915a78511a
+baa3389550d5ea1e84340f3444e250af7f43e681700a8123feaf4b06a8b373f5
+43359c89429c1d47e5cc4fcba2f34d7f09ff069d1c7f05f1c1d667729cf6886a
+ae98803fc710c435d5b1e1584f13797163f8c7b113d26adc38512ca90ac0353c
+463f19ba813fc866801c55d1e575bf0a4e97935101774bf87b5fe5c9bf67044a
+9b3e6f7fd46023e352f004a23ab7bf84ac03f4e4342e7b6be5f99900e81e1d60
+d853a2cad61784b62d5d86cf2e535be99f06e079957928bc58d7c7a31c371796
+6853ecb5f85084262498439184e90cebcb52a341f67bc9943a0580100b7c782d
+5c36a61efafa80e3fdf41e4f63d7e01ad53abbfb979afc9dc0f5c2cdc922b747
+2dbffe17403ef2253cc28c8f60c3fc183df0f2db1b108503fdb80565d730c2e7
+39b2214386465f9c2bec07b8e6d64cc210f9f7286e40e8d01e167d4268048ecf
+f068ea80c4303a2de66b651c8166fa314d36453a281026d58b1f9cae623b0df2
+a3d16f1e0404a3e9821efee9a67aa96fd2b3b2ce010ac9ee08751af5e29de43d
+b6b2786fbdc210c7fd1e55591c18672fee9e9c5675184fe56b001be88e23303e
+0b36a1a6fbdc703b768367473bba77eae8cc7214362bed6f503026626e5a7bcd
+960097309cbc19aa795363b696c9d8f23d36c4ae0ccdabb2ca499d26d273f14d
+31bd002c245ac404db88c73e3d9bff37db63bfe1a98339eef889a1d83ee7b511
+49c41c12dd2203cc5a1a2ff4342cccc2173c13da7e4669074be823cd9ec85ed4
+8406e5427360bf9b2008056e1224170d8add21a16ed847e8201cb3b3e066c9ef
+143fbd7152201e003d2f3a542cedd210a0c3e454bc32337d2bad6e47d52990bb
+2f2194e1757206283fcf4dca1c21cddf1004fe8c03f1f99cc3ffcfc5d184f43d
+67b6246168f32e7d1c35399e2fcee1af8ab2a354eb58a8432d1f94e11229d1bb
+d7ad0b8fda04ba5619c0175f99a0c937373523e0cb2e756c504c83ea3a262086
+80
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTI10
+%!PS-AdobeFont-1.1: CMTI10 1.00B
+%%CreationDate: 1992 Feb 19 19:56:16
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 12 /fi put
+dup 45 /hyphen put
+dup 58 /colon put
+dup 68 /D put
+dup 71 /G put
+dup 97 /a put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 122 /z put
+readonly def
+/FontBBox{-163 -250 1146 969}readonly def
+/UniqueXX 5000828 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3ffd20326947b1065649b533eb5e9e3
+a88a87fe987918a687950b26f647d6e08bf14d983ed1d4a8ca1e2da8d985f944
+2eb916f5b6ed0697ac7c33e1e36a3bf460d34ce45f1631871097cb04f18e3889
+4cf4ac1538eb19481311d24fe3be7beaa4a3730e8b4831fe59d6d9ce2e46116b
+629c7ba2f9ce3ecba2f43bc162a5a077ca1b2882a42afdcec3f4b75b5d63e0bc
+8e5dc95257766d8ea467ad9cbaf47be60f797580cced6884b3a68f70c91f4fdf
+80fd00ed9139e7f480dc3a76af72ad9b434187730bdfaefe4cbfe5c7edcaaf24
+9204fd703011932e5a3c27be468b7dab69daa18dbbb6335ab8ddfdc607961c7c
+02582763fa069d43563ba17704029945cf42fcb19cf78c51df0ec4d851086d43
+c1ab38e865ef36865fff3a08b01cbcb070ba4893f7482dc7819ad03d337e520e
+7d8cd83bb8ac7aff4df36751f4f12aaaea2b6d7260c09a26e987c904003e0723
+7dbcc4a8e4e85cd3259f40d3caf55c742cbb40ad0db1044c20a4f122a63f7b81
+1d945bfa69662189ce4d089464d2ead9f6ed60b581b04114d5d45e97be27a576
+35154e9b8464f2a0df18da855eb51b8f64d3054b0b2e84621f025a0776d16fed
+b988a43d2d64c32768dd106b9f541ae8e68ac0bb7399e16f4d4ba074b2152d0a
+4e9b5bfc21bfa0d531e28165e518ffc054dd4ed0d74eca079d20e79670419f92
+e03bcbfeecf3554d661596f6f29e12170804d15a250d917ffe7a8b6e8fa53047
+1ed97ba56481589a65ca13619129f1e26affe6c22f0c38540f8ce37efb6e9e9b
+60b51a5a9cb4454fd7c7f92f2f9437159687ab590f35b946a54491a7739c9269
+e0f1fb48b129811c82edb3171cbd5105fe65906974db8a7da92f4f43dc7f6b36
+6981146d86d23613a0b38d9d6191db9fea0172e982cb1cc50e382f69da1b377c
+1be9407f88a2a761b56f398467a057f35d18c01cc377e0061822b94abb98feaf
+33e32c9bc59416e65491cb08cd8de429deca10ec4765d20faea23f130f5226ac
+4d27d24db0385cc31b8b3227812d2c2fd223d0b86eb936ff0bdc45a281c544fb
+d7798b4aa264d33ce1e3eed7c77fc4942637b524a072aaf76b4aa25c250c8496
+d0787d1139a647e7165191dd7ef7d25d830220b8ba0e91b1019c1541cd052faa
+de1157d53f434b7002e6456b12be1b16806309326894d6a0a3485f24ef480e9a
+14342b11ce0fd8891c13c10e390a6fb53c39847f4d08d29b5b7ffe083aebe339
+5b1f4ca06296feea1e03576816fb7c1df7ca971e36c78b30f8721577705a7ab9
+1c9531bda0a59d24edf8e82b31b8bc5a1a12d9c07af1cce3312d00dbf1b771b2
+6c5589abd3ed060751f05846eddb31de522d181687e78299c0ff890ccc069a4b
+371e360c5ffc3d65e8d01215c6126bcb6caef861c1b6a11523eab958ec503309
+818ce93536ef9474838e560e830c527971da10f4a50108a7762127d5f40e2d2a
+5422e2cafb000ffb8e7c99f21996044b88ac6d80ad7f0bf30819ea1ec68bc5fc
+cae4c05f4bf371a1d086241258c581fbfd4de1dc42cc471c13fc760eb996be51
+bc2ea2b9998877d89fdf034d271d5f85d786b7ce92e532e9ef649b2533b45060
+38928fa310feafad7588c7402bca7b7bc26f803c60e9116da753650a88ac7a59
+36b58cefc3228a1e058d3a757690c056bbfceb35bf3a845a938fed86cbd798a3
+9850be5e69c72b913485a89d7347ba1fa91bd36c886402da3f609a6351ca109e
+69fe0506461092f65449e9db2a8d6e5fa4942992a335f740d49ee3daf044e66a
+42fb1f9f8cf3e73772fc63e93490c7990a96218a953e52eab5720a4696a1d8b9
+3d6f986693331a2f656cf7b4b64eb1e4d9e22215f179d33f06fd0db415b65fcf
+e625276719a077e79fb1d92f3211c968549cc645ab67b01b0eee62f9bcba4340
+f39870264e521d39f0ecfd652b7ba7214254091e16458d3b32e51f7db37bb132
+8973e4df7a2f52c7fda7d4d7d8f263ccf85cfe46ff489ed1a5e78e0b534bee9e
+970f7fe9ada93a5f1156e7fc1ad9e513276b55db0a28d34296ca85d28a0832bd
+dcbbd3159784b6628d0ecdd905b431499e45a463fa5609ce615a19caefb2f106
+f0f92db3d6d708da9d3d8d6e0ab1496bee7d77956dae5974a2889df2dc02a921
+f71f4937f15abbb81c9bcd22fdf190530808881a346b22aba6e8b0ff5677cc19
+7e5ccb56a7726450a2cfbd2e5d87a4b6cf8426f18238a23424b3b92d73008998
+1cbc1fcf86c3eb58e3babe6c34129605fbba175f1ee19276a94712bcd620574d
+0b45791aa9914585f5f5506ea6006e8f9482bf1c55201c0bac872bd8ef2f19e3
+58560c111c367c23ab327c5a9059c8481a6f030006616906d920b6a6ecba3a04
+d8bab040337fc81c3cfc7ca06814ceb40de36cacf79d3d4b37859b77436e056d
+29b3ec580d4abf59a8abe4603ba15c6b3562f38b2c85bbe20ab2fbe9cf04c981
+477119b4b670b13873a58a0939aae3a1711a648b09d970abe5cf73f4cd65d61f
+7fd011847173601a50badb334baac5043c9ff088901b23ce8d96519ab03bef3e
+5cd038cbb4e7d5949604c46b8b105724874886457e61b642d3b6de8b469b5d81
+433b9993631720d28ced32b3658228e74f9893d43835fe5e3e0abe338df28e56
+978a375c35f60c974094f40cbf53570c67e121c3596008a179a0729f91d46e5e
+38a8014a08b8b1837f88013a84c5e25d9e997b78dd1a3acacf6ea4b6f22b7633
+498ec8fd01637db6652c8e13a1b2ec63bb7ecc0fc433aa7fe9b98e23399504b1
+63342aec4942dff2e03b10ec2f878aeba8eba0317d18d319565f4a4aa9a8d58d
+3bd5c07574a4a5cb1470c6cdfea2fac23e48070b78efc47f04349d4af2af42be
+5cfcadc6c4486c57e544e915a3716e730bbf0bb0b8f02b7695b5e41e17bff778
+6ec02a8ba75f0ee0ddae7fc2b155821267d1274701c5f115cbc7e4662491289c
+c1a848a53a41989a21635ca76430338179c3a21dc4448b63c921714b98d2dff8
+a56c2cda854064c815de263f52f499c683482cdb1f8ea28627bbc0e2881b507f
+82de8fc1a4fd8edbb842c4b314158d13f50e857b11459c6b327a9d79988f716e
+c53bd57a7aa8b8cf72636750a399a014cf390025b84cad918a077641e93353de
+ccff0916d3a38eb9ec8329349406da403dfe6de263b3fcd64ab8302de5f8311e
+1bf0c82f273dcee0abf0fdf1b7e9ba56258344499e01ce9bc64bb39b114432ad
+0a073a49aced5c1565a4260de577d54e66faf7a25e314fe187e71e6036df0166
+aee19ab0c0f17cef521c6b343e313b7d061c784b796ecde5525364901ac92a69
+9a0be0b1736203a4097182cb3eda67c4ab278d318cb505db11bbc87cd7ee0a0d
+8fa13d5ee0be00d03ecbde7d97eac4bc75c94b46bb1ace9e44261b8f8a592198
+f9602227c06dd68cc227375aee4a18d15ac1ae5f2e7afa89a0c10a916bb9704d
+c9ae1e1487f435db4721e0e878c166d428e0d994a73e22dcda3dcf7fa1c726bd
+33c0a2f2e61c528ecd89d78892ce9880b2b2c9c568795cec45aabcc5d3ca6836
+d7f18cc57705048e484a91f02a1c6582bc7fefe6ae2d3c0ba391da4ce7b4082a
+4f851ada61b157e424271ea88e2e2a7e3ca022753d103ca3ecda78d65b7f33b5
+f65fff1e547a95008cbb1069c2a9ca3f1e8d5cd06a3791a783d5710dd3a2bf45
+1739b6fc37c0b1ff7956d367cd4ec1865068d068364563cb3031ceed51989b77
+161c3fc9267aab57d0e3ef202e4be4fa5ce74b2a215dbacc6b2bdd41e065285c
+10af1569b61d0f0a39195b323b910c9e96cfaa173804d44adf39143652d5e64b
+2acdae6883e2069232d999d27e9fada2e9ef4d1c6b96d4b8e6053665e7e527d4
+68bd7a83390c70bb3dd73b96d517bcb24c5210669507144ed49ccf20d9685696
+ac300384506f8fb34e5151604f3fdeb47e82bb631c42dbffa851ce01092e8bfa
+67e418bca43abe2b9b646cf959af0623d7e19c82c40e50a8f4e2efab94c04084
+852361f4056c6ab42ac9a588128544028c3c4f9f2de2089869aa240698b3276a
+10032049fc4a1633d4dd7702f596bd3267fa8c4862b88e6ae21c5f5b13ebcdeb
+e59e2b8443ee59ef027a2de9bad3151e7dd59581b991b6f86d0dfeffd5bf2e91
+887b1fcb8d8b0cd6e9066588f7f02cb7777cc070004737a24364f993a1e9bcb0
+fad861eabf3747fa629b72018a2dfc17c29894dae3f496ffd0fa11321938222c
+fd9dcc787c782c95c0085d3573c32e90bcd9b7f40efba4138a26286845a5b992
+613bdc8fb07662d52b01d771b03329e94408feea1dd31b9d29f3f14a5e93a5e8
+5e35b2505a0675b0d80f8ed5b726076765a2609eb25466507c97bd200e29f988
+c18c94379764be35369fcc1a9aa08d141973a33af367398e3250712153d082ce
+cb6a1bbc56180f55b99c3d979a2553e52849153029f30dfe86d1bd1b72d7e1bc
+9848c0145f4ccfe1ebf7ef48b85505c71cbe584f6d001bf1310f51ae315478aa
+45ddad248a875fd6588823d483b2425bbd3df516064665cab2d1fd7918916776
+8a79099b4fe239fc338b93eeef026db890c5f2344a87876a56fb8475541b5f3f
+f87eada7eaaaa6f15728c058a6a510990aee9c82cb5bfbc86274dbe1c62c43cd
+e042400665b34b1ada889f40c71028857b2a800a0c3446ba53eb4b33cc22ef3e
+8ff1acb6017e67ac5958dca7c336f5eae73fc79e4c9d4e83e9e31b81c7069af4
+316cc3f1843bb4d8a86c1b64ae5882f3437ff3a3ddd126cf13b66593dda3757b
+0cfbc0dcba28f02ffdbddba82d58d2cb74ecb9f410c989e0e216a16fe0ff291a
+0d7d46635fa780ff107d3d54c5e01fa866132e5c6cc2ce37874a04cf6b980f45
+389f0febb4ac067f31ef51f18f7b8c40f988bbfaf20d9c76b26736eb73293784
+9bbc22210ed0eef68f9d5660f2fa98531668a6ad9f0cf9163cf4d01920428037
+032d7fb7f625561511ff322e508f558ebaab877ae75af7c70ce92a41ba163ec7
+8c0f820b763a408eeb3f315e76715614db10818e6107296ca9ecf1376e0bb5f0
+21538e410ab05f40ae71e7f8f5f9504ab7eb8d9eb75d7969ce1069fab55ef8df
+ad3146e99590a2178f1c6621984070bcb18f16fd8f8dc8adeda9ac3126403f5f
+ef75226bf78a47eb300d56932c20de486b311c668c566cb1227744d0c77593c5
+dbffb4083d710f7344bb4923c39b8ecf375bd2fe7db162151b78f90a836a8f97
+43e16773929ded333b3397875a0dd78824d1428145213d1c36e1ec0a9b3b5da8
+1dd17175bf95c92e3c94812cb18fd213d33399138a8727f97c04f509d90bd238
+9947b0a318e2c124dccfd837926a983e75b171ebd7c51836fde9eab589490bf2
+2c323209a9bc2200c93a0f6ef5a955d9e554c493feaae35f59f58f92d6e5bcef
+3330fc3fd18184c73dcab9708b86462af71733ec25735e725441f0c60e5218d5
+c6f81dd53df7127d3f42dc086b851301ac12b5dbb62640f5ee2c789414fe7372
+6b8012059b5d5d452645d530588f5d56d49de17c5142811cf1c018c950cf6168
+6f1bc25eb90d90cfbd4907ab819293dc308a4534f3d96ba371ccbd69b7eba2a7
+912c74015bd1f9d591909bc89d2b5a18e9cafb94b6a933d124fe9f23e4e206f0
+b2f912cfd850bd9f2241476617e422f7b0a23b2ef4d252d194ef0a5955b0d1ad
+07fdd9b8060157f4e5f70102608b49558a049ebfdc7f1e440046e2576c286d7f
+9b0302e66dbddaeca264b0c76a1c7d5623d74501d52368d3fdf5a5385bc9c2f3
+1e138d11473637b5d709aeda39b929019c5a9045f08f033f180871a4efe28049
+6e44f0e47242ea584327d28c8b5df1d27b55ec763bc4ed21620c00e48c87f821
+98f58c54721946022dc721571ea56d2cadae561b6e0342d90da037ea59f5490a
+89a7237d7693ed06e7de0b915e39265fa960d1fd63aacd44354a1f074bfdbfa1
+89579cee9c5e1b681283711576e0da93f45ef8fdfc6aa3f1c76f5bf0d3a745c0
+901f7bf3af7757ccee7ff8e8aba6c921730b1a048005cd37627ae36cf66ea398
+8d032c87c60efa29c1a70c225c5a62f7f94b963c42770a8eb3c4f78d1ceb8195
+ed8a4ac3372e718fd8fabafcfc9d65576e284e257a679ad56dbfa8d165ccf1d9
+4d6cc68aa9d391c24cf06194ff66822089153f9ef77de9b63bca0c05785252fe
+5b5ba7038692602bb8eea3f9ed9f51f6350a1bcf45b5a19ddf79e41d3a1719a6
+75e539c4708067fb4515e41c5fa12b59ee39c288f25aea40b713adbbf832450e
+ffcc36f837a6f62119e74ccffe60c2d0c1aac2c26872d35bb99cde9efec166f9
+2ae7579be3a972046372898343ce8dae0a0de3276c182d25896bdcfd578119ad
+c8b8d9fac64929e8e350be397b34a02027fd040170c183a71454419dc7061759
+4f83ce2cf137e277b4e222eff5c20c031c70b2824239c753d53152fba0aee6b3
+71f438adc86d941ebef0b20f856ffce6e47a757ff94ad406b0b01cd493dc7117
+7d4b01c9b26c5a443b04ae5dab07b02fad4d39033d02eab89847eb84291cb9aa
+70fb50e54bf9ecd24319cc98c2fb394fb23911fec80dc0cc86294714a1bc45fa
+bf829a3c84f6d1279560b9218eb584ea8d0f066fbb718ba5f3946de4fcf4157f
+b44ebfa718eba3a2f4d666bce59da5e9c16c23fb839e57a307e607047ac3f141
+4c0e3aa8439272367b790f0e48d26b7dfdf080b14f21b24e1d8f4f4088c84d12
+fe5616c430eeb3d01d8f7bd0a2ad86ec14dd7f1d33ecae964d4841952b343bed
+0e1342ec931d1032d72b2b553b6cc139a20934a1616ae8b1bd923e8729d73071
+142a1e977380ecc2e306a1e83fa12f47d3c7159eeaf9a21f703238c578e21c93
+8d3369e2a899902070a0ac5f1df345d83fd9a9b16c12043f3ade6835c837ff7e
+2ceaefe2b346e6ed0ff6e33e07661ee775730eefd22c06aa9ee61297822fb37e
+0c853e9d2687154a17a36f0bd6773f0e954b5a36e1e74123cbb9333b70525435
+b1ab97e5963fd97333fc91a3345de4e293c61ce91f85edaa6d7a9e595421ced7
+1d9d92c2b455d7ad5c319485705102e6dce6679846ca08ce2d513f731a9424f5
+a972e208dbb1ef213044ba7a95f42b85bf95b8596ae9b34783ca50b316668cf8
+96af9bc1e36d0f2f8da7517c72eb8c6df8714e1029c4f3778d6b1cc14d25e767
+5173a678cc11dec825ca3959fcd3250cd49514fc085afafb3f328b844cc1ef54
+20fa4650f154b5d5a13936a0dcebcade7ce08262395a0669d70c97cc9e7a633e
+67ea4d5e1442a460ba734efe47006a8649d6b937cd328c93b8c60578a6eb9418
+e568c5f1f7f40ab1261c21b24be86b5f91c23e6ff04d4c409bdd125d5f8b4c9d
+244401c5bda954df82f45e757e4fc41290043ddf7626e6db4905613aa9211918
+7a2057e4585cfb06894ebb36cdf8a9ee8ce80ae01f91ca4a8bf58c23c6efd2d9
+0923e954464052e5548dd1c2adc3086c5ce99639999bc190af99a1932a2d573f
+7f8543e2334fce16d64336a82e65b6fb24cb61c4bf109cdc82a6b3cd1c7f2774
+f11d8901dbd8757be8acd02d8408d79ebf94fbc3deda82180450b2d331696bfe
+30515d6911749fc31e2f8044e1092ffe73244ff9501393aaed350e9dce07493a
+c3d93ef6c898c707db3d1d533a7795b9eede2849772adfa9136817a3d12940f1
+e42a0e8b67265a113154852d8462e6acc3bc34957555a611931a94dc4dc6e3da
+17eb5d4cf2cfaf833736c1e29303fde272055266bb2ded75461f236987485382
+de077cfa3bc576db7efcea8b99879a703f8915438c7a98f01d5b02161e75feb0
+0ee7eb405ac4a044e6e2f8e06dbbd21acb552620c8dc9cdcd0c5cea48a4d9758
+025373cf9d4acea8de7e8418412748530b496da725e1fa75a7a78cfea5a41e4c
+fc400e6e59c7ba5292812d513dc15e6996a97a431ad6ab7047700f1fa25c312a
+a2947c3fa06019658cd1c322fabb4ea38cdfa6fb047f50e4c805a9fb9df42cee
+b09bdf0d4e9434274fce598ad8e37a158ec4eb4ff59a9d8552ee53fcbd903e3a
+584f45e6d2baeb0273fe2735ef5f0d0fc0b305ba868bc03b055f58837de58d0a
+3a8b2e58412a4fd61e12560a7b25065b0c9f5ddf61c36a2a259b094be5216b5f
+414b2fe72e227ac67f672d59f417c19a87388e0cb7eabdae0fd846bf1f535b8e
+6e669eeeaae681e442773fbdffc27eaaef5dd8c6cdf7674d55e3334b492b6f3a
+208af8d159cd2aadf9a0f89f876ee37fe2a1893b45c487f412ef1a80179a001a
+9efadba5fb13df4fea0d7a5e03bb2c4deaf502a3e2b33dfb238ffc5761f7304b
+64003f6445588fe23d1e4d338689f444639e18bb2f56e57980d0fe2edf951064
+7aafe870ae659b615c8c7a
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTT10
+%!PS-AdobeFont-1.1: CMTT10 1.00B
+%%CreationDate: 1992 Apr 26 10:42:42
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 33 /exclam put
+dup 38 /ampersand put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 42 /asterisk put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 60 /less put
+dup 61 /equal put
+dup 62 /greater put
+dup 63 /question put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 77 /M put
+dup 81 /Q put
+dup 84 /T put
+dup 85 /U put
+dup 86 /V put
+dup 87 /W put
+dup 91 /bracketleft put
+dup 93 /bracketright put
+dup 95 /underscore put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+dup 123 /braceleft put
+dup 124 /bar put
+dup 125 /braceright put
+readonly def
+/FontBBox{-4 -235 731 800}readonly def
+/UniqueXX 5000832 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306462c563d51ecefaacd079732f12c29
+315e4b9623a5752c6f1d8145869e120d910b2644887cea7e30b15676a92537c2
+9d3aa80dc30082aba94b40990b82fb1a877e805e0c8c48f61e9f2edac05b944e
+e4d8084ec1d5cc517aaeec5b3ea379dd011eeb454cecab3ad2443c887c582789
+72355673e503affe0394fc7db31de364e4f56c24033c7df2265c56445ec63a1d
+5695a6041ea1b94407e1cdb7c5635603a4fd047e6edcaeb2d0da6c9e0e9396d5
+1a4a58e8fdc1578730f992435560a6e2d3e3687703ee2f78f5896389ac8470bc
+806169eb01762e89b6dc9adf857ead656620e2589aae722c37a2ed7a2941c360
+b067ee34d8d5ca3bf68db725614d936bcb207781f4d4ec2ac67b13a5ad161f3f
+059add7b5e3d904831e31c20c04546fae83ca93a35989e65c201756888f727b9
+7e5313c9870ec96e4cec3901ea03a5c744754485e7d169bbc98bf872d0796e18
+9d43b712950c3786257d8be06ab6080b9d9392313298327549a8a41c00a2cea3
+690b4a333e45aa815a64facae1c2b44640860b8b8687afbefdbd5b4a541a7251
+4ee7d3e0752af3e96a88c95d31fa16d34ba2f02fdb0088b165844f02611c734a
+dbcc2037bf741fdea7e8bcdc130c70c33772f777d8bcddf4611db99001ccff14
+d7af2bb05defc3480bdab312a0eff2f375afb4e0df2f803c594b7c93f71ca4af
+861ae1711932fef19bfe2f9b7adb69d68e5a70ea4d1a3d5bd85231b16993f65e
+fb37a0a823f0542f8c2340a073dc1be4a8347f9d3068a6435cd8278b0db1809e
+8af9664c2c989b9f16873c009449b6284b85da4dee11c96a05ba83292f0edbd9
+2cf674aad6ac1a5ff966ffc37e88a66048deed053565b55ef6bdb8c2f2f67832
+f8939a32442ea54f13d003494d6350a2864b427a9126a9c26a031909fe53fa84
+63b80c3ffd536c9a5dd29ceb03148dbc24c0033aea2a574a8c8d945fe4b2a75f
+bfeb92e03e5c29f9fe0ade45bd289affbe6de29b95bdca1b14cfb1029e83ce14
+30e04503100dae953b01334479ddc3994823f4b5af856c2573169189b3b77193
+636afd0a7ef8102205c0ef082d34ef6182bfcc89750be59de2ecb291b918d72e
+06263e4c8aaac685287c997908cbabef64b2604179ce6cc65b05cf6ff8cbb6e3
+57689d43672ad21c31052a01e8df852eb3e9f5771a2e4e976b51492f47aa2f4d
+d71b8e53cde9f398eeb841ca03ce3c20a6452581ef985eb6f91c9a719f3244b5
+ebccf59e740a455f3e1fbf3f8a852b93e620a36eea4487d17cbf625c2b7e2cdb
+4d8504b06fbbfe867bf9fa467927769b39176c24dc5d40e28ca54a2a2999656b
+ed420923bdd64ba1409806066da78637eb81cab9a140ae4422cb00ad9543a3ad
+beea8d4c01a43b0115961fbcefdcb4c22a238466b1f38ecf9f6eac0e72db1021
+32b781408b2de8ed88e9971be38d24937f6c111653c5daadf58b414da78f6251
+6fd3a4b5f6bd21529b55d4fe7620fd2d8d13a7e8604ada78c2c287087a40af79
+5092eadcda6a502dddd06c3d592ea3a752fc60e6b246fc9098cad8c2bd614ea7
+4351e0a5ec9721969b52302327f3f4a2c199db96eb724cff99d86a4af59ff5cd
+15345cc94ceb500b32884427525fbdaefaab12cd7239da224e4234dee5188396
+2192fdfe6935a088bf012b3dd8063663aef6c5487d27affd1a8ea501f4164c66
+986b7674dbcd9fac8223c938286aaefcbad9c5d26b4e744fed12842cb23c3309
+6e1d127d6d1294bc06cc3a0469e2d15bb0c166c962d5fede747e54a18fe66be6
+650e43e1831dbd5fbf39519213291419dc442c30b835e8f0395492f7e21408dc
+d4043ed3cfca51e68bce4a358b2d23e406e1ef34a294b2c41e7bb6c93b989b0b
+c5ab91e6b26c68b371f71e2d895f7db1ced99485edb5f09590c37682dc064a2c
+cb8c2ad1896d45fade7745fc4404d0da5ba23975382930ee860460d6b450a5b7
+8156d3ced15e7b9b50605f830a29333a7645748cfc5b17bf9bb8cfc8219d09fd
+7433484674baf9d5385492cb3402cb3273ccbe121f93838a21ca03395d9772d3
+c30cce1e7c2718f9a825ee7d401fdb733fabb8c9685212fc70afb90dc296bac5
+94c52f8a08b1d1c889807f65f5ed30fdc79c167507e85d42eb5ee579f17e5461
+cf108be5a17c74c533e5929ae8d9ba34b95e4af05696d5bacfc39ae07969cd95
+23c18ddcd9097ebe6e33dd6494f3213c3f4db165174bacf6e742cf03a246bdd3
+ad60d0bc19592eff8335bc7079b3d192b4423c10ea73775681d3e9c3155f5e2a
+4afe36038f1d2fceb44d2f366477c355359e6e764293b4da0ddd1eb9ccfd0033
+0ef6eac0977e873dc902d5a1be235c0a1d777841dad4731ce0e6addac0d0b8b4
+8b645099f3a482aedf8e49b735655adf0eae1d42826369be4a1de71c941f6155
+fe81b5bb7fc5c1e420ee5959cdbb338c4b47c5795183841c18acf75f6f0b7e98
+18e5ffb7a30f1e780ebf8406a247e7ee390c26a8092bfcc32a353b9b57ff9c5c
+d5d7793b54ebf122fcd20a0faae7c2da9c6d67971d1e172cd75778252615c74b
+51c0c113ce1cff124b8c35989d3ba1939f94f1c8e53dc2e56e757a8d775185d9
+71c3b1d75a8866667e6e117e42bc9eb224a2bdb5617e98355c8189b21b718f67
+f88c49011f6098804e4a602299ccffd8a94ad17b13786e234a5dba6db7c46bbd
+d53f6415621363cd1d37477d1f39c256710afaf8e1e37ba56c784e48841cdae5
+91d3bcedcc3a87e948b99741899305ec448f6cb58616d583914e787d7df826a3
+b54a1b93d49393c658656f4fa6e51546a16ae79de1990b74d7e651f7914bc65f
+4e73eef9ea372d04e3cae7b47e73b7b86d38f607a95fa2ec47fcdf365aedfd89
+59c7bd3c55835a7f7794b313b05565b627edd1538b6b6d36d42b287907139991
+2cc88c7c7825e5604e90ce776a20218efb54304e287948af136c8083aada107e
+d50b24cf0cb2d37a45c4e78be8f5b5ebdf59b49c5e75b064c63fcb715652c988
+d6af0e8a221fbbae93cd8a638a4e496cd43b2879e2ee85d502ebc6eec2851d72
+ed5ddca18251a7b9b0da80e4617f6b119461bf40773a4d6aae7ec8c705bf4495
+5557ec37aee0e4622dad05bc78401c7ac15bfd9f86255507162eac66f1262ff1
+efb9d3d08dda78911ab1cbc85163f03109f01b6363bbd353ffdaabf69e4fc0a1
+9f7c5650bea97ffece85ac8f80979ada0ddfe65b78a98f42662dc48947e45287
+539ef183e0014822b99a1437a7691664e3796df1088062631d4e2bb4c467310d
+7c1b1cf7a7a8342b3ed2ad460bbc70b465d7984691706eeca413b9c9ede63d66
+7d9e8627e0fe1fc0207332637365e5097b3c334abf3d8360495372d1c0d3bbb0
+547a7af6022baf5b75721db0b8a56cdfbc47c1381a34f4ebdc84c11e19a7cece
+77fd340652a79d4498390455f5593d71db49b28c09c6a11cd8bdc13d4af8b377
+fc701d17d61af73b872d40aac89e4ff426cf033e9c11db747e2c7a5b19eca754
+fb0fd8c6c96ae9469d411aded314ba294867d1b350403ff9a701577441d7a92e
+638df839b7b04c8430ce91c5f5cf1b0cf1b4541dc598a09216de86112548b086
+c2530169c07efe56992a60ed4e2497f68b29aab7e0f34b93e1f198478de75cb7
+01d9cef4ca847dd6e681dbcb95c8d170191e9fcae9635f334803ea8f66134353
+ab9ea1c5c2a770260ea0d0fddc8904f8ed72ef85901ba992e0116e14d07fc3fe
+a0830fb392a57af8bf658b24e64d84803b3a9e6de15bf921e52bc3f8b8338129
+ef0b43527774e703c00308c0c5ef0f691e14a60fc1cfc084b3ca376229044938
+a61b48d55acf33b8aa6758026ba6072f0336173ba65ffcfa14a0654b76109c68
+b62522e8e21a282446ab955666ae6a23030767ee001a42bcb4363fbddc8beb54
+7e1d10dbf56c1ae64efda30c03a2dbd2b6880c8750a531b570e28017149a7d46
+826d9add7cc098730dcdca1b37e8d5609e8937152cd7defcec52971132ff4aa7
+34be78109fdee933aafa4cd6d68426116796ef1ae30c94d93adc62e757986d99
+fc4b07e3e47d30f2be13da1bae17a360beef8a49801eb2099bc73498e970cf03
+77a7c20696cacdac3c717c3dcf63f43e85d9806d4c172af9755654930d92a801
+4cf9b09e44059e235c7ae1ede6f0cd0e1d900093cdadc235d613b14591ed9fac
+de5c2811b03fbdbbfa3b925293ab300cb6910a30c287b9aaf58d82588307c643
+e2b803d789b59290f0ffaf27dc1f721d28daa2ff71fcdd1ec10f81fedd778d28
+b847b3ca8114fa63a297eeb76c19bca3778df9cadf20ed74ff3a2191ad3780e7
+028eb830f0ba173ed16d2992216e1cba1d1f0451511423e16581862ca92a9c0b
+4ae6ca1dc96a52408b4177930825da5e9dadaa2ab0b3b7cdb99258898eeeb296
+44c48e0163d1df45ab4a4cc861ac108d0487384882f558d5df2d9ee420837009
+f0ae65a8ef75bfddd493afce88aa1d8232c08b71bc50595b6805b54775b2e37a
+b075a319e4d77c04365069cc5f32dc7e8d93599d9ef77a9699d1c2c0a0b5e00f
+324e508e3c240998b5edde1958b7bf7b64cd4eab474e18ba70b6dd8b4ad99cb1
+350ef9449e7594ae133e160b15f84fb85db7aa5ebbfb5e11bd637a5c457d5ab0
+7ab0abb8d36f3194ccc58c8408133897df859cb06615cc1886bf1c52867c1ff6
+7a7089b9136976d9b77421179d249a20cdb51e2d1d4aca8afebd7713f178045b
+04894639e532105e30cc40a33950fa55725ba217251be8f599e125219785597f
+97923cd28893b41dc1000c8fa8df8abb9562950739c727018fe70fb2e6f492cc
+58894d6771347ab57f34c1ff0674360b3686f51e8e16e4d498a6fa8f176cd40e
+3c52039181140f10decd1aecd83dd67425fa2305b58722426922e7a62d8ab16b
+28971f4652fff5a541da6a35ca36b2b81ceedac6e59f5a9cd7b17b5370ba284d
+f53fd469a66ef24ee29bc44dfdb136ddda693b9b4fe42ee044f5d070c6b9199d
+e21dfaccf084c507c76ccb6baca8c95cbae00c572d54e62193581ff4baa4a94d
+8e257a19c2abf7b5f4fcfb60741a9dc2cd2a7efb0797bde78f1b348fbbd6309f
+c30312365613ea45dbfd061400077cc1c112c40714e04b253ac3983836abe40c
+71a6bfca857fd06cf214954dcebd4a04d29462bac446f7601c5c17b976f4d50b
+c930e2e24f9b75e700a02e4ee5c87d222a41808fcdd2131f0cce57bcb0a6cdc1
+985375c08d69938e958ef5ce494e7edaad53fa54d292da30c819a4e22ac60e66
+8f9dc1c65b6c43e016da6a33d75c87f3b80a95cf6fc9f705e5a99e928cd3f576
+8e9d34ef286581a3d315ce142a719ac7901d578702b8d2a9a8306f25be279a9e
+354dacf1e47e4385c53581d5b842180bd2321e9f8f373a145b73eeb999f6da22
+dfd25ab85ce28f9fb48c46925a5f6ab293a038b96b3724e4ea782925f9cfea2c
+1e50cf68bec65ad1764e42265ce9451e00eaaf28095acd40799d59fede1ed725
+55ba65ae6745c420058539e420635dcd0a9a249530c0f2c2e61d1f75fcd8d3e2
+c0aa195bc2a6409820b4f8c2b73c9f79ceddb391780665098a47f3435031655f
+704029ed3b92a0ea56b260a1147767d7b3bb1c724206de6d8cfcabc52de025f9
+0e84c0dfa06a4f72a497181b496c05c10a1b84fde32ab2ca4425cf110ca3f76f
+2ea7a5faf53a860eefe9e5400df45248d0750bc2b2d38c96242c819395558255
+fa71022f72cce154355c0e69b2994f4ebb477a4f9db95d449e8473f2a0e4db43
+4795e45fae17ad46f1ca580e9371f6de778c9e82a1eeb339be6e20c41f5b1ca6
+dcdc9a611b2f7671892abeb642ff6499b52891fc64fcc90b6520017d88618d71
+09a805a9ec3be8d1a65d9b822bb3bd464d4aaa6e1d1912dfda0591aec4092c11
+004520573c20ad0ac2008dd177ae587523f435da621a8ec7b26e9a3b8bf35d08
+a7475a3307f9822e764b7a041002371a2c0c94efb7d74492b6c8fceeb8dcbd55
+4106f5f632611fddf1161533471215da6df575b80fef3bfcf2831772ee8185dc
+8471478f85c118b94cabe4a589291e66d7edfdfd79c61ae5af31a0eb5ae7e96e
+6ef6f3ca607a53ab02758197b021f003f645475d69ec2b3e7bd937687b7b3369
+2caa4317e0638c0c3ebc5b6708b86459820e22c56e1b91e81578b7eb0edbaf54
+615a1d08eca9919ca36a38f2c6057cdb51d42cb509d883d846a30129a2fa59e7
+f8b1974b8e073eff7e6de62317782e4faa62a45dd4def8287ba8a62b8e769833
+21b2b1a9dc2f9e574d696ef0c074592b204981dc6732f355a813175888161f1f
+0e6a22388c0a40194f3223531f13bf340e4afadafe33a5823e30dccbd9be3fb3
+d1e420180f789ce44062baaacfba961aea5b207c408d34563b76eed5f33e3e0f
+50086d0e065d5ee7c4fc8234860c2daf0ac703bf97b30788dd109d84a4db83ca
+ab69f3f1450125990c2eda22549fabaa0b429085d8de9d40ca4f4e2865b5e12a
+74a2cbe57ac8f07d0e7fd170d42f820ebf8a610e52772e4dcb210e817ac0b461
+519777b9151b4770d2d97d9a66a6e40aba0cb7291a517f5b79a8bff03ea1b183
+9b70b9a6d595e87ed2e8a6dad65840b91d58c4d2e5502875716962dd30cde125
+38fefacbc5c5bd2f332bcaac29217b70c5ba18a58796e1a920b7d5f41691d38a
+3e83fbd39e9a8f67f6ebf951ea7a2b23c2901e3c80c9094ae32dccfcb53a497d
+98438de3d7255f7b6cf633a58c6f85a1ec31f95c8410f61cbfa0bf7351e5f43c
+c1e5c88b53a86ae66252c7a0c3fb0570c7ce839c3aa6b59d6ac3d03eca2e77fb
+c0fa3e0c460c30784ab5baf996cfd283d6bbf3a41c11157fdcfa3e41b68545a0
+78509ea3b96175748c65f5391745e5393bcad99be2815d6e51571e38759bdefb
+2f525b0810f541cbf2ecc878250b44ef35a9ec3beb108ca7e523556cb5c6b531
+0e43ba3ed2aae783b05eaf13abf1575d120efa6042e07a5a1eab856fed89d5d7
+5ae59898fb71945cc0cf987635ba73b6a80af4ed58f67652926c75731ff3dfe5
+d0e27501c55eb1a5a004c7545cb674ed642987a11d693efc7c264720e14d771d
+f49b44c5c1714209d94b3a69b54f359e60090d5c0288b80acc8775c0089b66bf
+453c4790dd93dd1550ad38aa9fb6da74ef7c6aebf33f749389433d3372e5bdcd
+3fb5674e1a481a6c8b2db9eeabadb30375857b7220b017747eb63e396ed9049b
+49fc0a4b4d1ff40e9f1383f907cbf2287a066bd376407eaea68e59e1dc5ff56a
+0d5cf12c75b5613986b7c0840ba9695dfdf7d135aa5e75c4bcf17ac3a62ba79d
+9b5bb5180274e8e1e26f6382a2c95f2c0db1914697f21b642aac6c3bf00cc2c2
+a34f2a7db4b4133068ef8e16ee8c39e92ef0cb122e040a216aad5bc871d6d04c
+453e20c8e2f9baf2715b330b22c57d34aed1a309bd76d2a24cd223a04a8530df
+a132bd32dd75fc94db551cdf673057a2b70b61f3fc4380866b003d6edeaa7da3
+1bc95f221600403d0cb233aa552b3c69a0fcbe1fc802758210445f3139e5ed1e
+11b14b0789fa3ea6de0f3ee50c2e039c1f812ad7542820ee2adae97a92e238e7
+33cd732a277f5176d4610d903700215451e822235309edbf5b9e37f3846df85f
+afe4b92ad06e5d4751ae8a8cf976e0e4d46fc222b512958d83c482798f21221a
+96a9dc1de701e9e54438ba55a4dc5eb4ccf206efe8a3cf072f8b9b161c0ffd87
+c509164624562a15eec35008cb0fd5676bcd7b649dcf2715001a1e6c302cd654
+e809ff768da5fff9a3f46de8498c34087fea7d65f70827657170d25e6293b3b8
+6eb825d01dc2181c523da298d3fcfd4afaedbd33b35c80a76df1cd279c6b6f04
+6908c7bf7dbf791a68413c3c9fd2a0f61ee9c94c8817bf9d8332b059c21bfcec
+b055c96aa0ec60207e76ca7160411edcc61a4c7386d53385fe6ab899e0827b1e
+59075be124a25956d21adc79ffeaf0a81a74b65fad7532e6036d033005de0da5
+5d69a8f9ec183a1b003d5fc9652720f016d72ac6d65f0eb6ff4ec9f29a58c1d0
+1684a220e871b2babd7b2288d0f3732ebf71369695e776fe2b38551bc71086b1
+9c245294952185b9e7389713820a1306603d205b67004a56eda30d78a9df0445
+f509467b34115350cea6f72c020a8cc1c6db9ff07aaf234409d34149da781d3f
+61ba459a2e4bf03239eb1fd6f6af118f9aac56d8828feb03da1f26ecc293f715
+f820855e45301c45e70c0fc7a33e17756af3c6828fbfe7bcc9e57d0652c36997
+e45b34e2c1f69c2ffb7baa220347cffc31f70863e86a6c39917f1c007f2d53cd
+741c2bd408844798ea7389eeb68c74c656050a1cb16b4841b015673ade151529
+d7f88af9d7ab1742e453e31c41cc4bf60224e99c2acb846e3c289cfacb4f03ad
+c30ad76cd18390210022cbd1fab91821b28e5306473d861af97f24db321f96c7
+c12ebb6aff8e6f7cf3376409b826de9f1295726b04276ab95f333106c3622353
+952d35cde588e2f0b7256399be37b91409b70e4ff7199a42a4dd68dfbcd0a3c0
+10a7e374b38fa6e21214834c522ba81e46fb0650c629e6f03bbbaf70efb76466
+1f849b71b1208855d40778ec7307d3485275dfcf8d4f6670957929de6a4db8c4
+bf0bf4e33daaa5db5c5da9200d448cb95f0f822757f96b7b0c5409c223c2fc0f
+4e4e66c9741c9fd130616e7c4aa7c77d4e6bfb7b67f5eeb9099681cb5cb3970e
+43c5268e350099030d2d9eb16f26e95e1a4d2d07b755a174c0658d7e17bee09f
+ed08fefdf73f687400cdad541f4d2c42bda687f7799fe2ace66ee662094b7412
+5d7e5d168d191d06788964f3029f6829cb0c13e8999e5705ec65c4ff1a3efdfe
+503beffc00486d214b5d6ee59a24c825283c9522ce88876e5f5be1f239acc55f
+55bb812c38623bd4a1c15a3b89adc53832b048fe10a311f7965cfcb373366d40
+0b6474b276e7b2fb8ef89af3e5192927c80d66ea768739794b48a1a65e55200b
+7eda32472b65bd4ddf4e7c70cfc1a0c5a5d604b9580fe1595eba57de5d3e172c
+07e537eec376e7140f6b3a16b494246a5a5a42591cd2d971c9339930f05807d0
+9681a826ae7c5c68ef28c35fbad4360583198aab1fd8e105da7b8dd1f7c87bb6
+5b97edcc7b48ab797ce989ff7b2dadfe2cb29fc1c8900647f2d9d92e77e034ef
+2e0859cec90429ad0ec54edc771c0b1dcbccedacefbbffe498fd554c25a95684
+2b12b76e7755235a831005ce3a9885306cb9396512dc1f09cf644bd551bc8cfb
+643b7128a558b17755a7386285c295962037a72ef87e1dbd32715262e541f5f9
+b7d3f3ef4125f156de6ae09cc9376e0a5f5849b312573b348e05096b841b8fbf
+aac8942845f67cc2530fcb1a9c5c4187e56a76f46bcabdc8312480bb2543545b
+806c6948d74ed5d6738c2e13a171a583eb1455e07131ee0c9a889a5d2fec5e6b
+72660378fdf2126f2cc8fcdd18da1dc687e9f9839e53f332dbfb953e72ec82e2
+c1974f1aac79a8116c11d0b50478ad3ddb14410e5d49b2fe857b4f323f5e360e
+9765067fb057bc14d1576e678462766afc88dd6f5dcec4332f4ea5a021ee5726
+535f96900e250b579588a43b5bfb210c1585c8f2f261b67f7dc08a8d23e950c0
+dba521bf2300bf603aa1be04d7dccf380dc92d5a64bf3289e44fb5c8a578b39c
+81b340402d996691d284d47cc548010855617eb748b5107a1d316d0cb2958399
+29f6a7f51b153792e1168bfe04f2534830c2ae59d953420aefa0cc0838dc3acc
+4fd00931f97b4d92e237a633e430b6d2645fe03ac5e8cd8652e3bed7dcbb3ddb
+0708618694908567d9a26d17b365d61c051a9f439d8e3a7108bb69385bc621e1
+9b142de584cd65dab71a9fdd5c74ca8f8020cbf9cc9a99b517eeb570ae679dcd
+821c7beefaf8abd0dcfcf40013d067d9861f8764a149a4ab1a4dae073342720c
+ede94ae7987464d8a7499093cec892bf7d549193421752ca9da3d5b8bdf616b9
+99a0c7de11cf30d77d2b114bb430efb34a2ea0e47f8f67cba7b576b432c47a04
+24be8f0734a90752345fbfc58940adaa7cee25fc7f619196fd520d3e3856a9ad
+f8939e6e63d20079f67bbee3206f4a5ec0dbf5274b76008ca45e65b33987183d
+ffac4113eae6a69a4a8ca21f20bc6c550aa7060e910f52dcd630a74918509d38
+d780180cbfd7d75e1cd04e433a8cd8a7a3c6828314120d7f7ea48d55c6a21b03
+a311c8d344f6fd0506d8654203afcfd61c4a0856725fa9793c4aee19c703a7b8
+eeb7bb1e475cbae39b542a556b328267f4953b5706d043388086cb76950bac3a
+405c35b6ae6c286b289a0db03809deb6f32749b2308b9764e4251b1c935a4ad2
+625690f7555991e2d080e0e4755cb88ff582201ac0c874ca84af76bdaa74ba37
+2fed5da2877f1ae1fa7165e3c23c7d3347994ab74ce6f167eb004793284f1d84
+44607ed31bcf584b96a95f8329b35ca823c7774e8ba96541d7c59b42eaeab3f1
+22a292a66f1bb00d4c3f98fcd250935fb842ae3d71e503ee53d177e060be7e39
+4880b982cbc8997b03fa349548056b0b058c00983fa23bc0b0cacf05a67f0d35
+da6268cb29adac2fcd25e14879190779b75883ece69dc7e3790776ea50c8cdcf
+5224d6b8c4bb0ae3f3d5be1a4607f0ccce7658af8c9fbf3a82df3c635cc340e2
+1cede24ed459cb673326ea15b278023de2daa06fc95a211c5b8a6e77c9f59464
+6a1de6ae1058339dba7dc68bc73541daaa1028f70f3a4b004bcda23d15a38262
+02acfba6158243b66c34f23cf62b39f76d0a1e8a1b34eca8302bc4ff10e00fd8
+2175fb9d65bc7bccf9cf62c974b9b1d6ed9dfbaefde1d233b556d8ad0ba98648
+ab896887b4332235e23d4171bd47dac7a158a42086bb510e98437184c1d053e9
+919f04dfc573c234ecae192de9f18d071b91448d1b155edc961192db903e9cd9
+a625b42ad3ac341107afd7d6098d3358980fa8a5fae07b5e55c26f2fbbbe0d43
+26bcc1bbb1112643f9a4679af19bc658b109e97aeca3a3ee2712879a7440c9cc
+a9f327d52d97d421b457580768145a920343c308a1618ef2825198b67f6c0139
+994856cce7bc2a1d6c50de08c482f001c28d569b2fac3beda57e8dc436de14dc
+24d4f987a279a69a00bfe723eceb41f20d3b51feb37ee1d55a600ad072bad704
+60a9922972d22868592836031123789171e3092108bfb04b7635f80fbf11e8ea
+b0c021550e915993313d15d4335f6c828055beb1d7ceaabc6028bc13a6a04501
+cd4519bf60d58b262bf0fb34602f932374e2b2b6d5f35272887ca52b1337f23a
+b45bb11d124a53a360b07a05df562df6b410db2c8e8082f3362ffc275ffd4e86
+e8b79659b871f22568c914f42325004aea280e7ea65947127d6bc9eac7804f39
+80c21af73eee20345481d1b99aedfd3a2ddac74ed8f9324810ff701ddc563419
+3707cd085d8d56c4e667dcc87184d5099576f2698874f418aeadbcfb438fdc96
+b1b9a7376c06aa8aef4478020ea79620176b82e800bb62ba4ebd794fc7263e95
+44c700fa409eeb75aaaf3ce676fc3c8c6a53bcfdae477788c32313dc5ae261c7
+3bb5ed09e54f96e8e456d78adc17bdd2e23161c834162586ebe8d718248a8395
+4695c70159c8ff278dc04bf74923ebc2fe7c4421426dc4a7cd15061fb5e9b7b0
+97fc8bbcc0d24eba72fb300a6ca95288a69d72efebc148b5f0af2a3a1c74f714
+c52767df305417c17dd42fc1d6472dbc995d168820d61f15c1f166fab3e33032
+3cb301f3cc403710e28ceead2eb4bcb73231e69a3b7c5168e2bc9948ea219792
+6040c2739b8f27702be0d7cff735d99bd2a3fec60979169c297093c5168d8dee
+9ccd4710052a67f490137d56819e01f5b6fad259b8e97b4c8221ac60b309a5ed
+38bda4a5e512eb3a62d33dbc87669b332f83c9d24e0fbff384f8d1784c5d96b4
+a423d4fb804741fad0aff9fcccc372bcfff830fb9cb5af0fca777c78bcbbdcd4
+979a1fea1590d3bdeb8123cb111534cf971afc9769e3a7be30eb9c45b3c03760
+159393c9b21d33ebd87d7e07054400ac358e1d110385342f3beaba3a7856b1d7
+3545cb4c0000674d60541aa5c3071974b78449b753720add9330a748a190d6e2
+5a5c522e29e1b8444dbacc886c525fa6765e05ad235cec1ecb53163c1e70d244
+b3d01ef0f8ad22a4bdb5a5fce201ad8f31c109a763cad4b9cad435624255d3b6
+567cb5a0ee78e146d86bf9d1f8e943dec16c8785c73c0f57237f361b5068ba84
+0e60c099eb88158708bb92e4a9146b5fded1952deba9dc874a28df80ef76d8ab
+9e2e673a863a6d56b14da700dd8fd2dd10fbf6844fbf67fd6c5ce970723375f6
+aa21e479917a4ae40118800d85e36bb26770ab1344ea3c4cf424b685a2f310fd
+f31238ff1cd4b6a1aea4b36ccedf1f807ef56a7b38bb6002f9dd1db80253c64c
+700026b8433bcd1a481497171e06dceca3a627cdd0a47a96b1b03d57bc3930f0
+fac24237482cfb88303be384c514fe2b429bcffe7640ffe074b6c4a714f2b3cd
+45d21c3f90bf0cef030a43297057315e477700b3af3e0e698f42b20b263f32e8
+00f34eff7083aed3b7cc610fcf9676d1e19dd76fca9d849f802cbb89eb69d644
+ee28c4eed2648b889bcdf43152a92aa3e631de76988ba8af1e7d45312c458ab3
+50334d7eb6c48cd5f5075d32942b625abae985237be5371667316b59f9af04cd
+987f1ac9f810656fd0e32e411f069aa398b941810fd5cb76adf012a391e88b77
+9c71551751ba9a7c4b48ca076699d8b1363adcc1ddd7804a1332e5d13837265b
+2c52abb97d1dbef6259d038ca5f5be2a1fd833252da9c3af558f07e5ddc87a17
+ec9d015e3763251c325308053e4b5a4b00b8d758cad87add1df483a2afed3b69
+348c0c24d4412faa7b2bcf4fa735f754f07f650c77ac4a35727e11d62b984d2e
+ac7042a03a5b5657cb86d43549f1705beeaf7774ace9ceb6ddba9d17a82cdf41
+e2b7ef4faecc13815d9ccc2303f94d44500b4435fda9d4098e75f1ecf96e15af
+d1ada67ed113133821ece3f646743a6949c683d4c9532042b234dbdf7bd4ec54
+308bafd25b0d611a24a0bc6efb028f83813ab25776d255f39239647623b3f84f
+a2cfc4031e1a3fb112c01762296bdd28bebad061bfac4397e5b8f1946576f734
+40198b709742d45123f4f459f188dd3761fb3893d3928143573fedaddc29c362
+6ba3cf664873eaec3b904af89d59d637359fa1cf8d91542bf698de17756b6ca2
+605a092ce66b490b93a357f29098380ddd201d094682479eb3d4c35355d89898
+9bdbe3ea97a0dec8b2f85486a2355ad0abcb339fc5bb581aa7544da94477b8c4
+9bd9b90ac4be98afeb9ebf23c8bf43e456e54b164e800bc877c04d01548bf8c7
+ebd47fcda4c5092d66f112c5263ba68d8683bd3093b8ad41e2bd51f221a4a791
+c6983fee462bb74e05d604fb8a157212d8932a2d7b6526a70c5d7079a1998ed5
+52a65a948a094b8c48c4b525f9518577344b805cc445afb2809241e94f84f3a1
+6e4d5369daa55f49c8a9516a838000be5e1aa9da892fbf76f427188a8eb14ffb
+5c457989047e7e59f45699a0414f8bdedd54ef0214b78c810271f9ce9e35d955
+977ad6ece2e0fa2f81bb868567615d48e2952f6844801d3843d419a60130f130
+ec3aac418f6b6f7279b1b2fef3f3877532ae2e2892c281f077ce6b34b11d7af7
+b0fd6a12b04dd6fd1bd720eaa5ba7833031c4f8b3cac0db53640fb5ac1b1a19d
+491201a7a7cce0ca8649d2e466ed6cdb7b80ab8d79b39c7a65bf4375c120d9bb
+92a4e95f8e6f167dd23d5b63fa6ff33f53f5ee9d239c1095b5382daf230b3687
+3a20fcf50c9ac92ce9af02a502d5e95a55a8008316ff6a61408bb8ddd90f168c
+c4c7da2aa5114102a6f518ba17d3e476a40b025b0ccff255ba423c5877a555ab
+9cd4ae8d9c329f87c1fd034df388995ef031b1350acc0b6876b51e58e4a2dd9b
+62917e83102b4800f522f983c36bdb468b211c487a7de62e7b21cb510059aa7f
+b1e43af1bbf828c365f7df8ad9afc1a3adae64b68e5fcc1877b9e047091f53d6
+0475f26fd3232f59ab323a644218d4cc5e558ad5790a1cfd134027f00149b8ae
+847294af29dc7bb204e757eb5a7f5a7a9baac629714e7df3f13743db3dca8798
+f0898f428f644a7a6adfcc56267b50ed4268cca5ca59b344e4246e6070e71905
+e6d7156e4766013ad5905c0dfc898085e4d40a5163563090292eb4d8bc909499
+203a1f4231bcb1ccf3240cd2e112fa09964131c0f0e2ba2ecbe9e6e3170ee297
+26c3375a09269703b1819486c008e492ad0b8dc591f43fcbc41c8d76a881b35c
+633a79821509c9e0d8bcf9a9b071c784b019d49f9038d13f51693629c4bf6649
+27e8d99ca2d1d9ca0f1c7f705ceb9044586bb33fbe48f5fa87846cedef53fd8f
+23442daa7ddf41882af3b964a1a4e0a1e4c96b98e26f963829ab158983c6e02d
+810fe3574b6a3ba31c549fec27c0703279e6a0f0c4ef
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR10
+%!PS-AdobeFont-1.1: CMR10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:52
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 1 /Delta put
+dup 8 /Phi put
+dup 10 /Omega put
+dup 11 /ff put
+dup 12 /fi put
+dup 13 /fl put
+dup 14 /ffi put
+dup 19 /acute put
+dup 34 /quotedblright put
+dup 39 /quoteright put
+dup 40 /parenleft put
+dup 41 /parenright put
+dup 43 /plus put
+dup 44 /comma put
+dup 45 /hyphen put
+dup 46 /period put
+dup 47 /slash put
+dup 48 /zero put
+dup 49 /one put
+dup 50 /two put
+dup 51 /three put
+dup 52 /four put
+dup 53 /five put
+dup 54 /six put
+dup 55 /seven put
+dup 56 /eight put
+dup 57 /nine put
+dup 58 /colon put
+dup 59 /semicolon put
+dup 61 /equal put
+dup 63 /question put
+dup 65 /A put
+dup 66 /B put
+dup 67 /C put
+dup 68 /D put
+dup 70 /F put
+dup 71 /G put
+dup 72 /H put
+dup 73 /I put
+dup 74 /J put
+dup 75 /K put
+dup 76 /L put
+dup 78 /N put
+dup 79 /O put
+dup 83 /S put
+dup 84 /T put
+dup 87 /W put
+dup 89 /Y put
+dup 91 /bracketleft put
+dup 92 /quotedblleft put
+dup 93 /bracketright put
+dup 94 /circumflex put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 106 /j put
+dup 107 /k put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 111 /o put
+dup 112 /p put
+dup 113 /q put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+dup 117 /u put
+dup 118 /v put
+dup 119 /w put
+dup 120 /x put
+dup 121 /y put
+dup 122 /z put
+readonly def
+/FontBBox{-251 -250 1009 969}readonly def
+/UniqueXX 5000793 def
+currentdict end
+currentfile eexec
+8053514d28ec28da1630165fab262882d3fca78881823c5537fe6c3dda8ee5b8
+97e17cb027f5c73fdbb56b0a7c25fc3512b55fe8f3acfbffcc7f4a382d8299cc
+8fd37d3cea49dabdca92847af0560b404ef71134b0f3d99934fc9d0b4e602011
+b9cfb856c23f958f3c5a2fbe0ef8587d1f5774879c324e51fcb22888b74f2415
+50d7401eb990d4f3a7af635198422283cac1b6cd446ddbcbd915db9bff88844e
+784c6bf7389803d9450b0c21756a017306457c7e62c1d269f306bd3402e266de
+fc3b5e7d8a8d2f5bf0fe6ddd40d07391df4fad4a6018dce29a2b8f692b29f202
+3a7c0e66de8ed85c14f1f8492167357f51a7e84cc5d92e0fee4d81cf7fbc8de5
+2d2e7bb57142033993f9c08c315abade8dbc4a732e84e142d3bee51557910e12
+cd8aa37c459a5e6b7f5269f59078aba3be4641a11ac48d0b625c8325b38ec08e
+4c9e5e7fed976a5650d99d82114f449b9ca14c4ec957702295a39a93ef93f618
+99b8ea06b092c3c1e503e6e436e0a9fa22576c8930ab3dc8c20f5d82b69cddf8
+ff4dacfa9c54bed5a3aa3ea5b129fe96be632843b9b6bc91b615581a985db56b
+1e01ca60ee69ca92cf5c0882ece62edad3e106d835348822400f0b66af658f2a
+e56ed08f8b0010571807009b73ab12a8cf14ca6c71f03c2a48c500f9d62266af
+154a6375ff600d9bac3f05ce34142d6867a79581c533176bb2f3117336671e2e
+44638a97167e2ea9644e31ea16c2ad2990ea33c54001e0c8156e6de8ab6a4d40
+a7137ba275f39589fea2e2db8256adc103d6f9cc038037a47e8fd469c5f98a5e
+3c15bd4ace40d340018b1cff7d1ed8abb0ac57b5b5a2c20a51957b96c453edb7
+dae5affd91a46d938fe0a13363001d844ded4323f1ee6d30012aea19b024a552
+315505535c85dc26bad31e09c50e6512802976d298c4e90d0044c362e6bf3ab3
+62a454ee93de25ce54411090c29e9d75c80ce26a84404bd9de3aee0e3f921ac5
+87f907572b8354a5c3165eea7e8b2ba4e333802132f760b41a900c698eb3d273
+8bea0aaf7aae96a558f08b61aec7c7d65b2889bb7b99800cffee5ba19ac90fce
+11437be1ddfcf0bca5670b543b9644a71c8726d0c1005abdb96f6e0cf7caaa31
+95017ca81519151c2c0b04f81e717c0691b63a76e9b25329ce2625b711cb7bf9
+9d23ec2bb5ec8aefb8c1a3b422ad617b3da4d49685fd44cc21a1fe5e1541163a
+b3e1594601d63c7e98801d7746474377ce93f81404f3570afbd5dbfe77578605
+917ab96963987e6efc2d3f99fa56ecae6422579852567f90cc90e4ef6d6f71d1
+858270205477e221018a375ca83c572b3f972c5181d18643cecb04909d84cf76
+7174b3c0c8ec69bf1e9fdfbc0fc7ed97ec67d878ea4ddac8caa522fdc6932df7
+21b81af837a200e1d96e90a7ad7589fa917658d7a173a511db53af1848892270
+44c4603be1a5ac1893c15a21fe5979a09aed3473a98e06c98356dc01ed3f5e14
+1c3c057c3f97e2f9e8718b12bea7715a3432abe07df50291d1a395e7ba2f06ba
+7cf20988904310104fa43c7a1f6d32f5fd290d4d572cdb5ab4b433bb849dd1a3
+58b292cbd5c762262751c26d8756c7a3c4e6bef14ad9a628fa2ef5c0010ee4a8
+d530f3786bd4e0af07d5587e90e19687d1a31921f975bff26ec2cf07f3efd4fc
+54fd4f92f08a60ce2b3beb2dc8d81a303c8103283e6e5341eaf61191f0122624
+2a4a88caca606438a767277972e2ad7ddc9a36f43d5b2d010b30cac07a383c1f
+9c18c89749e610d026f72e5ee2477286eb57b77567af9c4f20f7454a5719b0f1
+9581ebf64277e8f2ddf1ce08ee33f2a532228509a9ec0d95bec2b7beb23319d4
+236fb1446ff7df90952101435fdb0a0fe7622a6a3972afa4b2cd99b5822b1bbd
+c28f623efa3532adbe2bb8f50ee214454f95d282af029d174edec357747b4d50
+b02e2f47b1e9d736f85d789b58fc9ef2951954f075ea9fe373318b67a917096d
+d42424e1aa676b2a74c3884c66435e9183ba2559d85d0b6324fb4d4762451abc
+740b64a53c5a631b6c07dca48a300620142a53eb735cb766d2498da48f90dbc7
+5fb27ef80da2deddcef6012b8033648f89c18a4ab69d8df089041c5d0673886d
+060e54e6f2ba0562ab6d2acc623b70d9f0942e64b542e609e688dc8d8cba3069
+5a19987b0ae02ec45bbe6af8c5e84e43abaec2b7cdfe89236d857168d424319f
+054dfb95e1abd2445266e279886bc60fd18a05f9c21f684d0874264d933326d9
+c88b9668da837ceb89213019d211e757edc72e2303bb2b40954f254de88622d5
+601e0bcc65d903271fbdc32bcea059e5a0c32b9545a2c6e8262eaa912df734d3
+f46bbadf4640f3957b5c01ed33616319deb18f9f602de5d6fe326269066c3273
+8e9d0f99038be34ba574ad957f6b7a197f66f06956172883849e7ccb21f271bc
+4ee1c357c752886254e0bba6fc13e301986d5cad37ffbdab3069ef8417fd6d1a
+69e26263688b4ca921aef70783041a8abc1c751302f0657fa596dd3724a480b0
+5c037ed88981a99e2443a38cca3fb92c18aab5f67e1228506b4f5c7e99c08a5e
+e87a49811966564caea15d5602f0dd4eb1116048a7e49cc29498a240bc7e9c22
+dfbc699ee270dc8e3aa694ad439469013a0e480a061ac9569f972d5d308337e1
+d433b4f108bdd6af35febd0fec567f249265b5e3ee8868151c943e0eb606ac71
+50378e7c790f3e31b5d22d2e3a143ccdfeda4aac9fa69de57210cdea7ced9e04
+137ecfc978dcbc8fac0baba3de6602b0d0288de3526611c811453fcec09b08b0
+8fb514c6f2db0c8770a1be1be605ce5c851e195d976c33840542d446a3617299
+f99bc6929f70839cf3a27a4cc3c350832b2d9b50b7de3cfd1133c0bdb825b5ef
+b75a1d7194b096f400faedb7ee15327987b28c4a1b96314ed9486755d64799c2
+d0d3ff8503970bdfc9ea099bf06d90fc88bb512e76017c4f3b2a0fed291aad8a
+0f3dc32dd5f08098bc600a30e2f8c170d2c5c0794cd9ad2e01d560c1ff40eab6
+001ef931195705e5d7e8a7cd2f0741b88e3491134d9a28ce6bd5ddf4ea320b95
+4609d24b53fc2587583d6b3daf1dbaf44604d67800b05d966d3423f138eb960e
+a7ceb5c3679c466bb9e59bcbe482eab715398c4e5297a239cc977b61e853694f
+df75728c331dd90a43dc7acc8e752eaeef32e23d24737f6db0227f856c47d726
+fd221115551034baba90738d8a2a832754ea21b4cb437f60d5e9598dc218e2fb
+695c6c789a58eaff7041bdf4fcdc37a128fd6eb9d9ebc22a755e9499f1d0d9ca
+49c008600191dc9cce8783e4afaff581a986dbbec5cbd4e8da639b241cd1f0df
+f70b27d91f152d4e245e9dbf7dccbf4afe8e22d838952a0a2d91642dbd27e176
+9d6d5f90b8fd9bc84b94ab8eb17b0e62cfdc0e78c9e11b294f5f1347c85f4635
+16980766d9c387f0393ff9f532146ec7ff297a7b3000eabd54893383fa030e46
+3211f8f53ab4464e045b48afb0dec9167020dfd4d1cae71ecf32608952c7c3fc
+f1c3be9c6bad89dd019cca32be6efa86214ed1ffb1a6cf4dad9d8f58974028e5
+60f54d16d911ea0da2b257601085f94a642f082262d0cefaec93c2cae7b698fc
+ead0044d713f1f69e6c8835f7d027a4e0cb500bca8bb7eac6801655fcccfab8d
+21e48e2aa8b42f36c1bf4a39b8a8f0c7c8de17d9abad925e2999583b6fa61756
+be51150dce628dfe9d4d05e389b427f062efab63db8aedabe0a50c2dea08f095
+1784a735771e58163e1b083d3a5b8c8db80838d0031fcab2063144d554577e33
+947948cdc0e0818f99868c67c1ba5959cebfc99ca3b4e927c39c92736c54e98f
+2376d88a8e495a0aba0966cc01bb3459d1a9bb16653c59da0f21e214f4e342d7
+d6b35426c09bb71ec93eabde31ff4c3d657e058386f97b5b0d7565c9c6d7e3bc
+486e1086e9824cedfa80c0591e1ac4a0e46b04d1c502a8408f1b399a55f86390
+7717860dcb5e816542b37be544a7ea9f9f3712d3ff986be9961ecb9c927dd27a
+3b7740a8924f572dd2059108990ee3cb5fe87b76425619e02de39966f64a32ca
+26e9daacab48776a9cda828c187c9ed220e7d135468a1b35a49d53a1926e62dd
+528ac0bbeaa882e334a787a1a4580b05c88d4cf648c4dc50ec7ede530916cbe6
+fce2a2ff4f03943adc5ec543268b0833c8e8c0f8d3295da127c51e7e501c3f2c
+02cbc555eb744f42f625ab34a1614921258c2a73c969a076248ec549730929e4
+8d64f7a07e1a150d36ebae24476a34d5e2ec706d19a485ac61a6cb9ac628cafe
+615cd14df7a10d4c0886ca0be8c7c20e2e70862b60a44e147fb1be5684a2288f
+c68ae9287e6bb54ba665d4c01280ae50ebbd2d6f6f2b2716bf16ee7e6ed6775d
+e810af333693469a6e99a33a9533b9b1fe61cd1f962753092a800897883684e2
+db9cd91668b608847c759b7e465373c797770bec3aa5a0cc9073e851ab2f27b3
+c59475c586a264ef263e1003ddcfd2e583fae8bff66b9ea5bcc2e517e87c3227
+1cf7882dd45fe4ab0cc4e8bf8362fa5800dfc3ef240af21753c26f9050d391d6
+b75e22998592a74b06f201429e5285eaf749de5536ccfe75e45b511dcfcd3f29
+6df14a09142477cb83bb0faa20326997551dd1b037e3f973c6b71e123003fd50
+ca395a20f6de9883ea4114fd3cb5ef3bf928e51e203732e9fac0268e740317de
+17cc84c09d6e27c448c027f5424d04b67bb791dce4b40ac66a768a97db358d6f
+c5c32ef9aa1ce68cd5edf9a61005731bf730783501f5c43786724f3d31513947
+04cd43cd4e4adb81edde7c01a22da6f543e55909f4195785d19abece5fe62be6
+2e7ab5c5ced8229b30c229894769c253bb656a53c8ee344d849fdfb20206bedb
+2d5e5a1f3812974f61096fd4c4c87d27b43dbf116ef9c10ede96ddb84ac10819
+eea925d277814713e39984383fc7a0beea3a402360fe8fc256f21f1219793475
+aa4e71afcff1cd1d330a8eaa8c74fb829a9907e6d98a50d9f606fddbc7ffce80
+f136befacedea17d12a1472bab80f42c1dec071774c3789a4e0bb5bbbb1f4f71
+8f1948c09e86b38cb40b4936c3a6267676f101d8789389e7bd365438d1825483
+ca34a740ae7f8cd7ac27e80e559c18892c6452a1a4b4452ae8a314bd03429dad
+9c67c79971a701d789d38a032e39d0abc9dd8ab09633080bd042c53d9e8e449f
+89d09efc7506a1b0d448e561eac8375151f594f1a9b42f71b929ab847a600f54
+3cf0dbd3c1d1a4f39ea3b05fedc6a8d3651ed7dd56a8a54432bfb8728080d2e6
+8d0b61f00d92714a1cc2b64e2c079e09ee3cc866ba5e7ce0364eb0e22833c964
+ea40247c62f0001e8dbe66389fc10f686fb30e9f7702688e35c0c90bd1c53623
+e46f40eb0fb42c12298082c7b4b1e1457d3d76b92a99e0bf5816a10dd22e5568
+3be2d97de2945ec87c16fd9fa240e1c165f56979647b69019f4e3a1519a3a86c
+25d2aab62174af62526706f6c49129733f81e5a63c0aaded9bc746f040da879c
+1348f3022e5c3b39d659aa87d6e7d105b9b7029fb7e8eae4469bc478baf18859
+97cfbc70f1193c8dfce109717d9e576c6c7de2727e8056a6dbebcf91e6ccb2aa
+65af48ac505a3b89f61877065d3fd79fc89bcdb0165f404afa563e81543db19e
+8207fcb26fc3073d265f7c7dd74d7bc4b05a23ec3291f5203b6806c302658c61
+4b7b9b8584eeb2847c1b4b070434e3d50e040b4715d48d06182c5d1c232125ec
+75b72e25bd9ecdb5f8937ae8b92938de5d30fb067e447ff388c1a08d7ef1ef83
+5d3c5ba89aa8edcf2491f41d6d1110fe31019c4adcd3967d6ffe33f1ed8d9d06
+e79aec0f3f95d4417ab16316f66fc7acc8a9082692780d7862043a00ab0689f7
+85fdaa8f4c75752b726ae4c704922f49844483807e16af019b4bd905ca8816cc
+8763718ce3998c4b9f7bd5a6859333774d3f9e8d7aee946cd9d5c6c5846f0030
+44edfabf7006b4f6321f8eb833badf3690dc283623dfa7ee35bab5bc86bc46ea
+beb720e13e21768e551fbde2f003ec3ff6085e54493477844525a6604d256634
+d37daa73e308e13f2f4df915b07f53638514328c6f26acf1321438a140246c4c
+402f8902486d028c3549585efb9b9c58061798977a65efddbc9a4576d26e9772
+629f7ef532c7b18c51d675b84c77329b04c2a23fe0a0f4b9347b8550337127c6
+692e80e365fca46815a6e11754c466f957b7ea8d468545a0af0c1d7a1fc3135a
+83096cfd0bafd397518641011e4756337c5cb7de0e94f2374f2a1cf74d596ad2
+1be06533e630efbc8e27492e4084f08e56ed8687a32c2ce5e0a01f5a8b3598f3
+dc007e8757f64d9bc7f7979a6a36b70a0702ef43ffcaea3d8446bada7f3890db
+f29bbfc459808c8c97fdaaab4bfe6ce2739a2fa52d28580b343d814f3d0529cd
+304011622346d4e9a7fcdded7245bd8417aba90104f24ca493eb2a7ddc6e5df4
+cdf6872f1733f22acdeeca0a660a4f74142b5466ad76747c7f558afa6b997d49
+5bda8b577d70ea0faee81b34eaed8f823ca3fc6a2984a0d207ee8a505011c6cf
+806f7cf37c34b6f1920a27c97144c5b787646a41b73ece348739785b86a1c745
+a0c0475a6c6f82142c6d9e17d6b2b2a544be1738d50381b1ddf9152a393b4cbe
+5cec04679897515b3e3640a775ab3501320cec975e74a52700fa70d9fafff8d1
+254109429a31f1e5674ef72186f10bbb65937d4f4a841a88459d492f21b38458
+74899b49271e52117fb01b2b4e1f4d1236db85acda95fdd60361e7f40e5854cc
+f9fe9b4f2c8a3cee532bcb4bd8a933c30a21d43001907ab21dd7f193d1665c8a
+29b363a9288c3a22c27d4007601a7333b584171a4c8cf62bfb3cfc6dbd691863
+4998e7eda8b657182a82624744e54b6049ff55b982fdba66dddfba783e749a4c
+ba4c187458f30aa4180aec9e6970873d7fbd479bbb623f92ecee1e764d0ada70
+aaef8a65c6f0a12dcf381512a3ed2d7c1fbca9fd4c339f54e9e07751e76bc41e
+076c810d371944ee53550509c36494ac0c721ddd4d4e1e56c2b28255a922f443
+eeb39be4d1d9f3093edf4f50e98ace4710b14664b012adb5bd89a434c686e4f8
+9d08835c0169cbf9208332512f5f54cebf4dea1a226900f93a59cfda627aa736
+33118fdced43b32d602dfa09e3e7dd97f962befa7d3ec4732ab665ca19269c22
+32ca37623967cab87ebc0e883786a3912e6d727ee79b57e12f7e55a82d205ce8
+c6ef96ba1e070a5eaa38864d45d9c3a0c09f0aceff82add96481708e61f49638
+c65e2e97a538c98a9c38d59deef0df54dfd473300f174e8e284c3fed1bba95d5
+6890f49e3f6474248d904ff92aa7310fb9d7ac03bf8762af4f438ad547ee149f
+4bd091747e8692c58798ec4e38b0e127b7adc842aad4ffaf8b516491880643db
+f61bda9628a5b12a9352d2bf0ab476bd551ff2df950ac860d01e56beccced7fb
+89e299a7d14bbaad3986e32599c71cf3152518e8f7227d09349119f21a02388f
+3937e7e7b59c9256865ac867cf6281c08860b5e1a759bb2f5ef45ce8af4e1a44
+ab231b1580d31e740485c269a43e958293386b6620ca3d3a1bde0dd59c5b7009
+b4cd0e307323acd1f3bdfb34f1b064084eab7ade9a97a64f80bd0330708f993e
+5f1cfe25af6736172d974f060effe7450f48112fe515af2e48506dc426fe3ee5
+deee30e475bc8077de4f409beb2449080c32e0f4aa67fe891f05e28ccfaca02e
+7cdd24cafe6fa5c5103c3875c69177d3fda49a3734f56ec1bbc5876854f80d4c
+24583fa83e423f362c1aaf15376ad679fe115ad7b2405958f7d75fe431574a71
+3c0645148e3f5058ca1e2a01480f05a0072e74a7e00e789f7a4e73d9d7a6ca31
+97d549a590ffa592f689aa8f78e5794ada22465fd28fb1f85b2b9e8aebff4478
+515c7a0ee09cee08f5a000e35cbc09aaba9120f68d0d13ab4c6e2ca137c8eeaa
+8797a1500a046eff4b5225c2dcc1a0aece46d4462dc69c0a162425d2ee38e7b5
+d8d0714983a94bef8990267b7e6e4ec61ae03092d3731c96e7de891109b61c1b
+e5e2fe6357aa63ccb881a27b3e4e7c4729cb9ff7daa426c51ca11c0460f41e7c
+adcbab982a9ca4080a62e8fa0486ce7851dbb49b994d6763ce9b7c6f165ce6ea
+0a41ce3dd71e1d9fa393fe69c16de92c952b9f8989cc7a7d1f67d968a29d1f4d
+b5733a3e10bfc89e243e21915220813451969593eb43b00888bf791c0aba7666
+dae91c65a93b8b8cbac730a3ba7ac5c8be74a6b40f6eb7193b68c1a662434f2c
+d6752d8f4e3dfb94f0d74e8e8d4a32880670141dcf5788b8e5ecb6390097b9f0
+dd13e0fdd3cf92e6c9537c927e0f14ea023207a38040a85897939f8616b6db16
+699c46e7fa915cc0f953e6cfe0a6ae224d99e360cf92657009aabcd521bbd7f4
+9907623df385245546ac1aaa54c15438ccc278a2f1b4d542ac2105881f990d67
+a9c17ac10cd1a3734572920d2fbe94305f338a3189b6a33cb226ce1faa107058
+cf2923530ed6ec6b39da94de955f1779f480739c120cdadfd91b62a3d8f132bf
+f9fe42f0c0dbfe83003c4f99872e0ab6bcae9696167fcf36a5c915697944e758
+e74e6980da0c6cfe3572c27bbd2f6dcabf51a7d186085a941286d81c1e0c0a64
+23a287e8ecd11e3618da7a668dcfe8c857bf66cf5ff866517ada4f2fe6b2ae30
+62ace29fb869cb803a8c04149be3157ebadf810d30d223741bf2e464889fc55b
+768322c47a32219645be960d30cd017ad32440ff572d5b6fa13130e448a47e1f
+1a1484a3bb1672aa597f4a3c1056018df3d9382dcac8703f18918a7c513bf42a
+78acadfb1b49e2f6273dbfcb51d06fe631680de7eecbf2b8ef014d720a4da7e6
+c4a3921794f63e402c36d77fe5ba1cc960ac2959ae8e4486e0f2f33630f641c4
+7790b7b689f60775f3eaba5d626b64444751d464a7b88fe5521ce190f5e31ead
+181b5b58ced29c6a2426ac4470130f40576d6da2f8c773cd34fa701843dd5afc
+10561a36404b38b3723adab28205fb5222e86f56fc1980cd966dbd72759603ed
+4e13b12f33ac167ab07e9c9800b5233acf0c2f567dd1581031232b090cad9640
+e98585a183eb9d6baebcd1a41d892c5094d4111c6a9f25fbea8002c5c753bd9d
+04b871bbd040d59e8750dd5c55e196c57457ea5f9419ea5a24357ce7d92fb76f
+38a1733a46e3fb78402041caef0f08e487e356641568ec1ecc6bd9426ca5986f
+af9b3a6e4549cbbb5c862e95fe776f211e8e0ecd7bef5dafea96c0a7eaa1de0c
+0e0b4563e6cad7533ee0bb48221b9a2f1d28452e3b95e5a2b6fe3c988f91a840
+af705a3912ecf67c19b4c70b77d6594e0396a694cb18e3985872e804bcd0199f
+cd6363551578b3e1f8662d0cc4757a2132ea6c0f2fb3c7dd583bd96d37cb77a7
+fb7620d06fba720dcbc7f941f72cbefdbb60b00a533ad2b33ff4a93001dfd876
+510e3dfd5c13ca50b460abdf9f2e62e3f905311fed6075b69857fb6c4375d9bc
+9c7ad3c09b68131600f08c7b65291425ef2860d5342d5b848246db9b566d0f79
+d55c79b7e2050c55f4a4c324d1f90bb612c66cf6dba2ef84964430caf49b3a22
+6f69eda213ab844ba63caa2193801bc69791d9f96b6b341bcd22f90b2479564e
+334bafab111cab39e2b642f40e68142cc117c9c3101107e9f57b0779776ade8e
+64c5b63bbd8417a51887eecded57c88757b03b2d8c7ff443cb7c928f1593a304
+63028099104ac1843fab7a6ae7f766bf98eb2d25cdfdf5849e91456ac3cfd3d7
+ce7377f5470d6730e7c7f8e704b21ce4ccff7552f5789ab3076e43d84bb0c80c
+44eda42bba72d6fe2369097949b4d13d3077149af5ddf5292ed311400ec60624
+abad78a00857e69f9464523ab1791493f62000081a56e2de70e90ea0f21ff005
+b14bbf10a43ef2145e21296bb56689cc3ae5542b364001a1523db41ca5b62687
+95a10ad583d933b5974ad6ab632c79c632e3c59a16142705c8368460faaba9f4
+420071c50a54ef544414dfb71284db6fe4422dfa0df97dc33c9929acaa229d5a
+ce4ba10658d4cc1e6ea26b4f6ec5febd8ab50a6a18df75275407fdf3b31a84b7
+bee9de120e81b1744fb9152ddad1335292a1614a6e70dd33cf9ddc306c60a36c
+c5e1bcb3c3b7685eb5e4d7580273239ceaa84adf57ce1b36d3d7baacf1d58d9e
+4a3925d3b1c2f4af856eed3d237f708993b8f040ef00da03c80f71f1c93f7d2b
+f4248dad2a8a4bba75070b3414be02abcdf60f2f73e055541c1421a154c1dd8c
+cc6fd9c8cd920555137835690111d8b2ffee1bdff793d1bf13923518f170295d
+c52ac34170ffe825564967902a48ed232ca6e1058585b0ffd48b2a540abf3297
+e6738c776100195569fd7a1ee8f99226715aa63950aa8c9e58137faaf049612e
+7dce103f313652c105826fde10e7f3037c3dfda674912c2bd196924f76df04ba
+9400e2b7461e89cf080f76f1f3ffd2b97c11bed972082fe39ac214fc8fd9d893
+c14fef3a2be39537de1128d095feea28d8ca06f23053531d39990febd12746da
+b702467999e01bda59185a9adcd63f2decdfeadbcddff01eb23d61cbe1fe216c
+5ed66953877f5a9fcb924ec7ca78315748a59deee67983f4a609c6b1ab229ffd
+2d1ba3aec6845720695619be40abfc84d27b8d6e5ad0d99186c7751932ebda32
+940f9e644e64959076268deb307e4b7ac71ed9b0c31729c5fc6e0c322ab54af2
+59a99d3c77ddcfff33e22b2c5aba398b7ee54aa3e3ef0ddded70dcec4fbd573b
+52a04f0fdf725fde3ac6be96694869974cd4abba8207dc2ba441d24394ca7352
+56dc9ce701e6dd846f2c3f5438a9421fbe734ece254bf01a9d194e38e99389db
+8b8ac9fdf2937769221483efb16b926891f770adb8f14c8eb08b66470e10def6
+b603a7c6ff985ef6b4d5e70db8f35ef81606665ac243176e1403a87c14f1077e
+9c5f4b9613c0b1ee375779e0b4afafba1837891921a2e0014a153e7dcf384096
+0ddcd16b47917abf6afea23f3995f92d14dd3ea8c2374affa9b8bae577a8f1ed
+c609e6f439950d1812a704017a837fefe028bef8f4ca25239e80a9f9f56a7a68
+d2e709b84458a1be684068f500c1ddbd91068238d6d81bd87152e601cdd6d9f4
+d0e2d8fa8ad851ada277b9b75696d85518a5c05406c4ea28cb9224f4ca07a6d0
+861223396d0e8a672437aa404d1cd3f6492283bd5396ce249aae86e4b36179a7
+0bcd800625d9787f30f73b5b77fe0a89757dea0723c177544a081a4612e9869b
+58b925e25f90790f0970a9a7d8085f8e5f665d26651ea0f8a7e59377536f9039
+b798e1300768d283301bc144646b6cab6908a6b3e6893ff31fdd36682a3ba11a
+25e266a179286413aa0c05ae9f6edb5a7708d5f015eeab9cc2a2029689783367
+790e79989d17ce431ea33c7c6e3dd1ab2f49a7b014fd8190f0f61bd7303d1583
+a850543d9c0f766f00989d82e3e3eb90d3ae0048a743d1d95fc2828d16786d72
+ae0b08f3a6b9e4c886bc569a71e6b0d7b71d99406d12cdcad7d0ac8e722b2e8b
+3cb4e91814c89d0a23784b48ce33902b1013f701c06bfd431bcf8fbcab428b7e
+47baa21e77db69547504d5cd4ad8ca68f6735f75c6007e0a28a56935924a4360
+8a693822857e5e63138fa6f62f5d7213515f503b507c9e9d0bb74225893840d9
+efd0d205c007cca7aef6e26103bd713a790ea0b732fac802a2ed9c8e93ed4687
+193c70e80ef98e91069d20f966b6923aeb0fb2611ad6209d058597095c13d30f
+e4853808c77ac63f9cad98f060248fbbcc341054542cca09b6ee574c03e46f27
+50f58ac2870af9643735162cd9c8ca92b34b06151efa7fa20dfd65943af9c0ce
+93feed224469c7ca8f5019719678e1090f1accb24a506d50c85e96c80c17a3b9
+2f4138b25424da0b47fe69bd87651e0ede08a552d4b561b936654d0e0715ae98
+d21dbc03e82c784c0a05be9b8152a01e4908fa1192234db3fe8528f38fc436ec
+1065fc4000a34d86b06b46d77f8e20fd7abdf2c83797828f4cc7bb6b03a26695
+6f09888fb45e088ad2627e2a8c16600ca022da2d217d4fc84239e0c34d9bc904
+9fa7bdb49b7f2f8516e2b0d14ac6931a5b1c80daf47cb787191833a434950b20
+7f30d7aa23c0a59b2b29b8ef5b8c078df0da796720c684e313a5392c9a0beb92
+1a24c094447dcac8cfe9a33bfa473dcd5c6cf94a59afef957406da114fb248d1
+d81d603413ae224de104081891d6f3e006aec17e09b96d3f2bd5f716edb5a630
+806b15379febac723dd889b850ca28b56bd19fe23106c7da95cee26a87feab90
+d7ebf3bccce37c464757fe7b8b64b7b4e3634f9ca658c762780e7b2c57d3757c
+0eb14ea621c15ad3ad018a2b993ef65189aa2a89702d5e3b4236e502cea8eda6
+795115274c745e87256e2ecced919b7e582dbf8c0115cae9ce8361a771dcb82e
+78fa222875762ccfbe9ccd78ee0999c4a6b6de22506fd878265432f9f533a069
+1028988011964ff7bf5fcf6bbaec121f77594ad8030f88e2cddf8d73904413d7
+1d3e4c5facd19418f866512df9755b5204c3abfaaca69ff92d075a81c2fe299b
+bc8e5254f1a4bf96dbc2aa3e50c53b93344cf7556fd7427b6f7244cb78679157
+287d9ba441c243e4ef4b0ad36c2712c1868ad585d40f6dc0d136d46630b90584
+cec60c100bd93efbd82b0124905000993f1c5bc71031446da0bb1e9d8637b942
+0c98e16a5f755560d7682a46e42513a232d0d1fe1fba77c9ae23eb629d43fcd0
+b1b9c0cfdab678e793d85f0482254acecce4ad807df3c78f5d7cde6c019753bf
+25321ec2005c287e2fda0f13d19e136d98a8c6fc5559704941170a372615dc60
+8d6514e4523cb4c89943699b733b0d8e1eec7c0e1dabadebd3d26cdb3e6e3b8d
+e22509e1337ba480131137daccbe5c7eb0cfdd1d7deebfa378cfd3f958d92700
+2dbae1e3ebb67da61b74352e5ce25d44ee86e0e05a350e10c322006d2bcdc6f9
+cddc111063b9e32f713f75c0e4131c3f0ec7a7756bc6aca09adb5f2600ee4be1
+6baf2ca4943fdba744ef0e25199907aec67c08429a75f47fed8ea4e347d30406
+bd8262e86ea3b2bda3946b47d43aa0ded683e51f10bd89798114324ce0d36d78
+f7d57a1a4f5eab9eed5371eb688ab14e601149dcb7c81e97414fbd18985c6db6
+c4e1d6c830663cb5361ae808dbfad9a799f1aeef5d3931a4461f5fea80c7f1bd
+941247993773007a04b80d1b742754ff1baf845a59aaf397404576d9914bba74
+14d3680b220697a80876648f03cb05dc289410c263e71033f1fb136b899e1ca2
+1ff0f75d78d869e43953b1f48b6feaa8dd9c996d025de3f8e920a601b229f242
+bf1e2dc7c3ccb09609bd6c07dd29f6c4e43467b6a24897c49fc30d9d40d6251b
+5db00a27ac9e3ba31f0674350b0f15a056b151ac22bae56a91767969f6f3eda3
+cd45946a2aa86f594f8e5b3ce08095af6b7e7094e3d8523fe518660a2433da0f
+7b64f687c1803c2f2b9103a4e2898160a954b87a068a6aaa35304771e466e539
+c4a8319310805881e7ffaa319182cd40d9fd98ac7d3f2046080070c505acf070
+d6836b1d6ea48c5cb5d2be8c73f8eaf46fd0d07dec52a96f0a60aaa1eb393799
+b41a5b9d683093d30897ec93537893e7f15ab7086f871bd8593b953dc9492b94
+8a51904ca999bc890bbe92c8cb927aa7321b027086c72bb6d2fc1cb6bdcdb216
+3de7bcebdacdbeed306b0611ecc170712adc01925ca2dd77cbe9d9a3c6a75a5b
+1486e3c736bae26438dcaf9b70819b0ecf90441ec57e6fa7c0d4e5d8df318b42
+de4c4004ba7249649d4b74e5823670ba18dda9f44593c1a941fceb5f8c8b80aa
+4db4a8bf5451b915e1098328ede089f626f8df6445c5057e9b7549b0fd5e2244
+32787f9fc2df42cae9a3d63af3c9c3919f2d49fb278d0af1612d4fc29b89816e
+fd2241bcafef8fee74fcbcb324ef593a2f3df28647d31ae106fe8f844e3344f1
+d731e6de21166fa3fcfdf67fe4395ff214035e21e160c73f1802b68fcb5c8418
+651bfcebf502a3fd68cd49af9ef85d4720026244d76ca085f7db8551659eae38
+8e023c33e20c5837b30220b823178e721d8637a7cda8a4daca9dc5b2e7966568
+bd239ade15729b823f2cc4504b5c5971c82cfb7981a67cfb04befb9a785b2662
+d59f12d909388cc2bdb32b6205f619644c06aa9d15944843084e3d26c6a3855e
+c7ea537fc70cab978545be18dad23fb231ba6e9c94f418550fae668e0397cd38
+913608cb2e273034cf9315eea33b6cb9b3d2313edc6108b24fe84b370babbf28
+102eb92b2dc6abd1a7793f5168153459636a9d7ba34de9d4ad1f5f443e016799
+9f3c08e30731e6fc8ddb830d6c883e84cd88be9be6ed1c6c2ca2abb859bc5239
+3e4cd913e165c8494b622763e3c98956065497111804034094e426585597618f
+377c4787782d96c17397d0161f9c9ad786fc0494ff66c382ec06b67042874d7a
+1a3fac936e74e7a23266451f45a007805f2a7e006c921ee45f8150c48360b167
+f6cd447a4c64cd292c38cc7f8f9e4f2777331122e53e4394eba63f0b6dba76ae
+6099f16377e1fb7c20d090fbc96530db5a4f1c85bfde805809de1539a049635f
+67db71db139500642abf08c8fdbed3e580f08ee07efa1e65f266c02e6071062c
+7d71481d44682bc2409884f072f4df7f213bf4ae2917fd01bd44dc0c4838b11b
+6edc242e4b29a9eff5381c348ec2a43284514fd6c0c74447ab6f507d5f15b7df
+d75da2979228e21e893fd048e2ff74810314399be42edffc133666ab4a198bc9
+54c43faa1608b30cfd16b80766522bba0b9eaead4c7fc78a3fea34bf9c4e7c86
+8165bb285caf76f517ad73210e40942985e6aa8ed9ab2a807d672eba28482fdc
+772a4ce9c0e089e3635c7cc2cc3e7ba917855f22931b20e64966c8e5a05c7a1d
+622a0db3f46e6dcc450ec2307866d5161d90057357b7c4901a06e17b676cca13
+3a5f03e5f4dfcf88cfbbc8dcdb3f082f45738ffe9b945e5d5a24d7c83d241d83
+e6ce0f8d6e2ddaec5c3c8bc4e2bb5fde73b0df392b0a558337a444af1938e394
+057d0d8dab8957643cd51fc771dbc25090cefb656a4d8bc3cb50db3fd73a3f98
+774f6e400363bef02ff40f5c5e01269291e734ec9f48b9de31ce52a0a13d5004
+c46048f354aeeb0c5043da6b741fbb31df61826c99f788c1923a3d8729fee351
+185fd0e451e66aab88193f6fa0f62f915f147e06ed9b2fbb719d20570c00088c
+42a5482774f25d5fa87e1b4958de97a97c4c107ea5ad6b7196c565e75b0a21aa
+1fb06250d80dd99bc74bf099659f5e18b09d151bbcaf12da91c796151450804c
+bcfacf4df761c1ec3fcd0a5f5f18f76d2392be6c7e2ebfbd8bc74d0b9715f92a
+07f39d6bad9404faa4ef401325966717e05d8e9f81f61eff39f52a10f2bdca55
+633967076fafac89f1ac71419a868b8870532a29a10bb5997899e1bff54b6a0e
+f6a4b4992ff286a30105b76a6ec1e01fee2a5fb710332657b68c9a9c04a931b6
+f19ee576da7c07c6a26a60043c48db2f4f181fa7f2c61a15dd0ff8b6844428a4
+024d690d8594c8d55ac5e7194280a06fd45e8a3604d316b9d94934fafed77bb3
+4d1a8a5a7c0074f6bec5f2698cc345bf7f41d65f74987c16edab9f856f156e49
+20282e77d2da027361aacc3fc9b00b054ca46ec3ceabe2d79cd506761941e9d7
+ae6132ecaf19443acecdecda81d7645980a92445a745bad81f23d54ab61a6755
+4246a9e4b500478e3e033f9020ac3a663ba59d1a15f2ee86c714440aa4f78149
+5174c776c560120ab417ba580ce6249d3afff64f6531d682665a8de1712a4fe5
+49d0cc0ad7f274fb1c94712fdf1c8afee5ee5763969042fac16613ade30a41cd
+5812ed4c5cfaf0ed5371e1dd4713101e6a28358408a5a678f4240e2bcf59576b
+e935d2eb8f7b187ef1c3252b4660cf8868883a1e34af76a51e1a2cc298a0d869
+555c14b4f699f7b5ac31be8597bb837d4437d076ac20da918b2bacc74aae016c
+751aac2c883d710f13480505382071d1c575fb5d03fdffd72d6a2094ee88e83a
+25c7722fc2de6bcc7feb52bd518ff005e39768f05c880ddf9ffec733909867ca
+cdde2a2bbb9de48341b46f9196e7f8734c135703f398f53dc2bbf4d682cfa15a
+16c66b2dd9d87baf522ce7fc6995c42c2baf739a7bae0c8c704e7acde6e3b45d
+e63495dba7683cba496577579625c85eaa79d478e28ef698fdf629b9fff7d293
+5dba7e431b288a5826ba7c28c9930d84f1acb4a75d48a8d9d23a27ac7300482c
+132c3daabb5848f0988f89d87f9871391b0c3a5460db1836bf90478ddddf39ea
+87186908e87ac8c455994249c326ed6b96abd204b37cd863070625a7e1eb2542
+3c9a6df27ae269110f020586e7694551ba05c8dd93f2f589585ebcaf8df0f959
+bbaee3aa4dd5d544022b07a9bddc7cfff9c63d28f40dd05433ba65d1f738a045
+c742ef69183e999f0fe3e7694012dcd94f44c02a46d91bc55fee95ffae8c0d11
+3e0d4ebaad6caac508d3feb748fe15c88b617f05f07eaa611edb5fb376335439
+0416fc97aa5903130a846ee8339c05aa28e7e4cd40bbd6e54c65a6075cd40bc6
+11c3b56026dbd648e0a0d81886186ab74ad765b8c962830b353b324853d4da55
+4c3ca93c06bf357edde434e49abe2fa45579d09260ad59664c3585dc51ea473b
+e749f82fedf4e57e6bc8c68ca375fcd8a5eb096036357d9e03429b5e1c87dced
+39b5ccbef31ba751bb0f18ccf31066a591348b9bf0bda45b5c3f9b4f9e44be65
+fd9b07ef18cda6261f09bf80fcc4d7d47a1b875b1b54b6009b342f75741ff79c
+3e9e24f59d2f1b40319d6d34f51731214accda46db534f5eb6ba4cc60ac321e3
+969e1269dfb72916a56af2449049de085626563221b3f59df08b3f0806eeb5b6
+08e143b0972073188d936e34aff2980991b97cde6c2d914cc8983e7ee1ee0932
+216bee4e5c190967d199c0ed6215d760618423221f92cc15b4ba2bb8bb006f35
+e3fa42e74ba98c78b3c2217b4d64727dc036ed148cf29a7bbb6313ecaa0dce49
+91f71f16da69c779241167253922dcd59c5186f2dfb78143df850d6e4260241d
+e677af13010da78ac45610825c97004e929977eafa85283869e5244d10ae08c5
+106474101c7bac56b80339a912bf749aaf8497bffbfd6ceeebde42b536140d16
+c447c40038a77f696745cc8cf78ebbed7d448cebc5f94539af2a28de4621a142
+024191e27431676fde34151137283ee00272a3cb383fb6b62d9c7ff6e525b37c
+76b3cef3c81d3955857833e3fc0bfd561f7b2ec83b0f884602c2e9a07471904e
+6071dd72af32912d4743e3939bf4e215d5edf2a8c0e79d3f26ba239ae6d919fe
+d210388cb6ffa9580568e5f1d277b1c0339c72244c11f071d0d47f10e9258d72
+ece6dcc22f03c783c8901973d69c19a791ad8259c67803c0dca86ceb44903c1c
+117cc5bd0f507c173588a4b6751694c2e2b2c1221da7a9d3fe11c0eb464350c6
+8ff963fb5d14cba8b884dc9244727d1fce9afc93a3e3715428fb0772339943ba
+94e4b54eb0878cac02dd572dd5cc2b3a8aec7e0897316b4192f0cea168086c24
+c96d511f13680490119eef16a0fc8371aa5b9d5fa9749566fa2c0d250c81dd2d
+0cda28f7b32d894bba5f6cb0e33f62e52a2754ca699edb1f4e6afa65ce6dc617
+76b2911081fbf7a1f09d0545f8cf67c548a5e0963f07c42c22410448abb55d05
+38d8d88fa5a6b57188de4110fd3bd87fbdbe613675b3c9196cd630f9b7dc50d5
+2e76f6349a9198a827b4cc3d4610d7ddc6aba586b0c11fb08bd1cf8a1cc0dfb7
+3dbf5d9bbfaffb5c4034275298d4a7956395c1dcac02041c40425217fe8611dd
+9d03663b0832a10a5f4bd7758866856d4d480fddce109c3c26ffe6351f3eb159
+615d69058c32c240c8bbcbf84b828e5b275709c3bef7e8c56a5ce4e11a81b2f6
+5dd400cbaf59226d8753eea61b3a1c05f93993cd26f33e92550a1b5f81801802
+b7e70927fb7e3b476f1b21e21bf6a8b6ceee3f33aee9631ae2c456db548f83ab
+ca6be161038a083611596c361ae607f0e460dfb535b3f19cca6d8dce4f23e056
+e60e1fad2406cee07c5a5c42cfff9adb309a77d9be94e36411ef39f43878f7b9
+bd9b56924f19b1cc64e4c5dd0db62d27c25d3350eb2695d40a4d48d0274d993a
+d4fea893b7ddf6af678801939f33a366f7a47fd309980341a61f119b582322ea
+fb4aae95241ff180ae845a8360ac2c15306c7df0cd0b5dc00372b3e8453fbd62
+3437a8b6736ab8545c1b705f56905448f0149a1ac5f469bf63e856f3efe049ce
+d9ae727f3ec769f044f41c247f244ce7e506658ed068bd14c998f324ecc17ee5
+db9339bc8a48f29de7b8daa2b646c460a36414d0ce257287079f17fcc45c079e
+44a7bc49e67b88e36c728a98f4284153b07635f7ab4ce780c688924f1636427e
+4096935519f8d11ff62b594297a3f1579e403cb18b0945c4701e27870e3e4634
+b35952029cb1a22832402541c96e76393a02096ad4b139a863291255e7a4ba27
+f827485417e8fec67444b11961b5236d0b07a6ae188f8dbb86e81bde1901bc5c
+9e730284787aac89a4f52ace0a4b4aa32fcd943a8d070ce36c38212d0f856e5f
+fd1d55ed7e20cf5216c9a7cfd757e7c4d207c928d10d9d0df854a1f402ad10f4
+41e1ce4ceb76f06d48f91f18ede3be0a15b484bb20b3d2e9f5ff7fc29b05fc66
+53b5fcb100fcc44f97c96f5c5e90bffd6842c44d0e224301c4cf7e387466c5db
+53736ea732e361fd81b55a5cb1040ae1729f05eca2a970dee9c400555490e9a8
+ea1da61cdd0eb81bd11040453f887cb721401c01de8441bc0ee4d5cbc9bae418
+5e4b7a17998de56b9ce921bc1fd4443009b6bc82cae29704a2b798dd17dfd011
+307e888330d1b3ec87081ab27a2b35d21c50c59f75e5a190d6951b0402a4a8f1
+7584474b6407f237bbc2558ca0936a4c4be5d69292860cbd13f7fa609729b196
+1380281ccec11039a4a1df6fe5026ef18c55a665ffe4807de21cb71289048136
+8ff3de1c275e34031ba1d17a540e0d4f5a0b57bbdee87e4825d269962f3de6fb
+8fe75ad356412319592e51fd627d9a395ca4b5f9c3212126c05736f7c0cde20a
+b39165589373dfdec2b54634ee58ecb0465d00249720809620abb99c57307f4c
+0fbea4dcde56b66c9e84de579642221c1e9a9307f79fba1d1b91cadd92381dd4
+51ec2d6c6ff8f077ddbc5da659908ea03b4e2c2392bb40ebf2d7277affe3f61d
+330f55f28b25d06f42c5518a623842675a66bcb6ade4aa8c066038cc37e77364
+a28da5025111315c9a48f3325993e6701623dabbcf072574e23b8e902440e504
+d145f7a786f178e2a9a0568865e5d69c4e944f81281f8ca86dd1dcea53dca3d6
+051c893071c1562dea22b817356bd6307dad57c44d47a0ce248977113107ddc0
+2d994a55263259fdf52b4a0221ce39f39a77a31523ab0c8ac60f6626461a8433
+5f80e50e343dfc8045b407cce1cc61d0d9dffcef085de077ff0b8d11dbd073e9
+7ab09737f12f40d8e602c80d22abca05e68d827aee4451bf466f6205add41e56
+b4fe989b278fdfed8fc086c168c4859307e2104bbb74a2b11c9c08e56c96594a
+8e6f09b504fb5c18dccf956c1fa14c250ad8395fe676d8c2b5bdc8b3fdf34196
+924f0b33188301978635ee2a1a6ec8040f12e34bb2cd15c3716ef2f0edf0a1b6
+79f8b021dd56a95c54719da4189de035cc15da1880a3f7f9844c341f42dcdfb4
+3556e3d300697faf0dbce932875a83d1098890b169f67c1ae3eaa336b2bd0b5d
+27cec749553216cb15552a92e9603bc7a9438244f0143a14474f6e99ee7f6bb8
+e7ecc328f3bc25a54d87ac07922edd1d2cc211a330be20c413d883f38eda69cc
+cd00735409827ea7429dc48e43e5ff22318c6a6b691f18d05837da656db3116f
+11254d292701f6bd92edb8687ab02b15f67213105731b4ec90735c72cd33e17b
+7f701153ef785b1ab39303854e34a63c3da69a10ed9f018d95505aab7d2a6f8e
+bb9b33fee02c4f397a20c80649e9d88e6ae4053bda65690d398e7c6c5bfdd0c5
+4e31bc4d1c8f62369189421378638e0cc24646d0eac6084d53fbff200009a954
+01f4aa6b2c71a84eb5acf649ffe28d775736e6b06dde795a8e6050712b8365df
+47d9cfff08fc36e821398ff092366e1d1d623749bd80ca1a3ffa703174ac8b8f
+017dba3f3d753bb5536b0b40fd9f07de7d
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR12
+%!PS-AdobeFont-1.1: CMR12 1.0
+%%CreationDate: 1991 Aug 20 16:38:05
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 44 /comma put
+dup 48 /zero put
+dup 50 /two put
+dup 66 /B put
+dup 69 /E put
+dup 72 /H put
+dup 77 /M put
+dup 83 /S put
+dup 84 /T put
+dup 87 /W put
+dup 90 /Z put
+dup 97 /a put
+dup 99 /c put
+dup 100 /d put
+dup 101 /e put
+dup 102 /f put
+dup 103 /g put
+dup 104 /h put
+dup 105 /i put
+dup 108 /l put
+dup 110 /n put
+dup 111 /o put
+dup 114 /r put
+dup 116 /t put
+dup 117 /u put
+dup 119 /w put
+dup 121 /y put
+dup 122 /z put
+dup 127 /dieresis put
+readonly def
+/FontBBox{-34 -251 988 750}readonly def
+/UniqueXX 5000794 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf
+5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b
+edad3b72ad63c2918b6e5a2017457e0d4ebc204a520640fd7c4d05e35ea5486f
+a43d0e970787203855daccb1ed0b16325828b13b7c767a1a58c87902f0546ea5
+404440fa6526975783c2d7a9572b8e5d5176bac598b8960609f49016aebf3763
+89c1adfe6a1ffc0c53b3acd9d168ec3a278fd4f1d9b085dc2df701346c9d0887
+3d230a161692b42a45bb5da343b4edd839dd60685a59aaa49fc65cd8e2ad2a9c
+5cab953495172a1a9f40d5f38e922443a519dd96f667201a408bd1d89e35f4ab
+98e2f68c3366efc14b5afe1018d9c845d808d4f8e07ea8168518a171ab4d6e21
+70eeac099eb7ef46eb9781384da1fac3b3133bb718bc80082eaea88759745188
+f266b31d0c7e791d633f16ed94e05517a32163e74cbd96dc5db066f2a5313d6d
+7f09465608cb404613e0f058073af000e5bdfafbbf9da0c0d5c02a3447f2cdc1
+f56481901e34265c26d331ac3f85bdcbc7c51ef9eddf2b9c189c5253f8e74282
+d6f053d7d183ae17ea175e5ebc401e67d21a9fea139cbbf3bb1358c713a75843
+b39a69aa2b1a7b975f53ff22d1dc3bdf7acd17afa1da21568310c68241b31d3d
+03bf404bd30baf9cc19c75b958bce7155f03cb0cfe2cae0327aad4b603284a51
+7c26de75b8c6f6aaa9debe4aec08ca4b646d787a9dfac85b2c01760e9c6c6162
+fbbc67dbd0796831e00c477d8e23c375ffab46d289be9d2328aec2b7534ae4cd
+d782ec2453e7787f6e6b4537b46c01545cba6f90b8e9a1bccac1937bceeaa5e7
+8e9f368ce067a0a31da98bfbb545be555a7270f0031fadd4f9b186629e5d2c5f
+d264f8f24cd5a1c0f68399ff4b29fd77c4a54d82965234121dcfc95e04370c28
+d64929bfeb9ff4f28dfdc4a4652968683eff42d778fcdf289227f64e13bd9292
+68f9acc1a2bc66d018df949d6c794030609fe89bdffe1f5cfd2b51dbe9f1ecf5
+26acc116fa1e5525a59c8ed8973774bed98ca3288cdd22f53604ed47fd53fda3
+c7965e31f5e6f00a589e7712cfac3d361e096ab30fcedfcfd57a556dbcb4d379
+69055e450f37fb7686e482a84a746cad4c03b4adfabd6a5d61fae8a7198daae3
+32309661c3ff3eda6c2909101ca253b91574857f77f6fb002eb81b2476648a3d
+5c0e17349c459cc7bfab1ee2b8d5960c05afb4ed469d1aaeb3b34b8890cffc8d
+d159388c2b0b9021be4e011ddd667a5cb5bc2f9101ee010115adc66d7bfbad78
+a8a6401144a558e4b887caa6ad8283df4794d02738ba4bd8e37529c421354a3d
+1b16027db74965a1ec575cf97d600b3d48c74b12cf547c13b871cf80d216c71f
+cadf111fd83d52c0fc240c49af8c529f6787c9eb582728ccde7508998ed429b1
+98e5b2bf94ecddb566fe81b83a4b33f67069fbcfd1e679361c93c4b90b90d534
+9a81d51d8e2a2a6cf04347511f68b65212e2710c4b76c2b1204e657291988de5
+68a82dfc20c5d49e2d168909a043b6fa258e24e8f0a905de6ef3ce8b7a907360
+1704773886c5db7b088985c809a4905b8c1a7c3bca4e9392d5db6ba1406f6211
+9bc0c0a65a66068916011225b97a77db011a01240e35c04da36e9d898ab7045a
+20d51bc23d88a4d0f24f2029730b48b24695495aac2894de1d91de7401dd53f4
+f7be0487b22168ecc40cea2b4e77b0372ee0cd1e04be810b65ca98c9e5597556
+31837b721446b8dff5b5bdfc8c1978c150bb82901b0bd2b7c03de4e5e298c4f4
+286b58199d564f0c9511c582ad9d11e973d059d72e6018fa19f5ab8bb6ca25b1
+80158e99f095105039447beda3e34a43e863e115d57c76cbe33c8159f4b10fe0
+2a9bfffb4638ec1abee13188b59ca7460a6b6830581eba36ccc2ea6370f19fa5
+b15722fa1dbae99c1c453a2398e07fa3d3503c403f5be341623aa1ace3a2f925
+6e7b7b0e25244c5b45d0df37e4a64af63bc5b7cc60edb7ce1140b356e4c5b1ab
+fe29af3a87fcacfefd6943bb13eb5d5939fbc33b591d8ead4e54bbc9b34f8e00
+671c5b8ea129d609f6f51eab562d3e4f76bd8978ebb4a23707f49639d2f4ed9b
+40787d4a635ffbb531f2c7bb9fe0165d4e471e11e51c0d033121fdda26a5391e
+45203b3fc27d9d34d2f756f45f6409f2b906cc2bc92fc0cb04999d9657982575
+801e4b7c46c6f8561820a3225b8595fe9eb51ee46f66460a6cef9ffaffeae7ef
+f55a86f51b5329bcac4320897c8e1ac4e6d49c649ed4fa6b257a38d777722234
+ff7dea4f248d827dea6cb748cd2fadeaea24bfee1b8ef9146c379b1f14c1c71d
+1815a3d1352b240784e8176f9047a413ac4bfc8af3cf6a2262bad3afe71e9557
+96ed95a9dda893c10d22314314385ae19b2b0b99f401eedb85c973759a2282f7
+0607d1600baaf56c769a1c46ab52e4bfa0c8bba42ca11d4c1b6ce2344a83f9cd
+52fda2de36c880ff7aaacaad5504fd77e549872892aa26ad14a30f6b308de436
+654e447df32cd6dae0bd8123069739131529264427d4730881114d0956344bdb
+78e2998c44bce0bfa4fcf8a926b66b2e8060f3a1d28255021824b3ef0a750080
+75c345add1f28298eefe0c2cd8a8d4bfcee4bb47dca267eff2db6eee52fb618e
+51c41d62d85b2d05826db83819f49ea4934fcb8eb0714532b5f666e24cebc3d1
+8a07c382889758492be197b4cd6659a5b2779a7c843e26a563e53c487b0626c8
+51470da3998e661519706bce94db33f98666eb1450ef37ab7bc49d90b208f56e
+a4bdc356668a0782b0f4cea076733681cbedb623d912b1448e1f6de3dd536977
+8da655f41f580a0f4ddb4b8ae54089b4c4e6952f887034e297ec1abce3e5128c
+c08c2a86232361a18b9daaf9be265cbfc7d4fc743964abac39ea2163cc583bd8
+ba05fc1b0632a412d67e80a812e5bcf4a7a6108f300a19c39fa6ea1c0089b6a2
+35946ced7574cea0a53cb8190e5a99c81bc824b4c15826b7752f530dae60bf5d
+1f2c3b8cc1dd32bae7ab9c6cd3640b07e2a4324f33297ef5b5c1b19ca3fb4647
+1c85c572e400c383d5db5cb4e8f913ed6502ea5dfeeb391cfc002ddd7a6d583d
+38d0d3e5d5a5a985768de91795dde9d98090d7f9f20cc36d1a409eb3f1749666
+2f4853d739792023c85fcc667b7298cfca13474f009c2306be84507faa60063b
+bd395409f5e25a65da18235a4a581802b78891c9c335469e3b942ff555e311e7
+7ee6d1c4ea6ff2a53c70984cd2d19a91d2a3f259bc44baa7158d84e21582d49b
+3ea5bae04d5b32f2831e079f4541276c471c3237fdfc910ad56587c9fabd33b5
+4bbbcc530b71a85573636e30b3a820d6f414fa0b0a45f4314d65ef8f11cce617
+c44e501c8c161d556927c0fee825b1a98aec4afbd10477ae3de0c1418e3d0a63
+e5604e9949db08fee78389f8889925fcc3fd51a324803ba58e299cc584518640
+e44e05080349d59a409d7e4abe33a3128f99da9385b44cbe27c018e5630d3e1e
+8a8b1010a089a4af2ea4a1f1c9b6736e21b3ce7130d5a1ffa44da7752595d038
+6b62d245706b3d0a3b2106953c8d016b59b6a10fb911c74ae6e3059d62b8ddde
+03ca3dbcd47ea4e75843ff144f3f30167797c803ee30d1290e8d2a9bcf899e55
+e75b9b3f5e5ce04a2db7b82f3630c4a2c706809939e8d7d847e69466740001d6
+8fbfa7f9fa4b3093d970b9a6ccfcc82ede0749ae050f99c04025a7b5b4f4d0b1
+0271b628f1e5bfaec70fdd7c80c687b5155874c8a541fd85141519b804a65727
+6d9b125f0280fb01f4ff546e28409c3fa714cd384ef47768dbbdfc038de4ff2a
+c1de9b43e7d9d2d62ba4110596d94a20644420585f735d87697fbe97c639bd48
+5c7225b18acc2034821e136b6a29f4563e8260b7215f53bd83985f0b2b10da60
+6984ade8c9aea46d98dd85c99dbb0fd0eedfbc4fb93898e36c422b49a0c93412
+f1f1e301bc7070a1590b6088e9fad166c553054e1a1ca2441ca2cdf53eb78ec5
+480e70dbed42dde10c85bade30c88edd3fdf9c07d802a8003eb4fef03dacebab
+5a6dd1d8736081a7c3073859655de8db331a902a27be01c358de3a27a7965661
+edb1bd249369470fc41b04f036973a1461fcf24befcffc6a3ea1a7082b821e07
+6343839d66096c448915059e7330b6ed524af20a61d0c528a999786eff1118a1
+1f381fa65e1d98f0be571625217590ef08f68a600f08a4a6d7fbb56d9e199d10
+d81ab1159fa48fed4a40a3cbcec30280451c3163d5ad7110116f378f2d5bbb28
+62babb9c1a72787773601d0dc4b3017c46958d6106acb356d34f04872871aaac
+1aadead00e3c195a83f3c1adbf66c4f140da0daf618285f83e7665b8db6b37a1
+5b7b39686fff8e113b2897952fda0dcf6e6f5fa53936c2ba6f48cfbf33c5e03e
+38d486e3bbc716be6174396f310a3956188879a019fb4bac194041c98e4873aa
+85ad472d97d47d2af2d753ab10ac100d07faeecbe3baa5b4a196b955a7e10b07
+a6230c62bf44cd57519cee73bf3be94bc3730e5037ef6e1400db1209b111a809
+5c5b2b56f748346102f8d97b4ad4d2665a928d468683599f7ae842166e423607
+c7faab073651c771dd47cbbe6730fcc442a76c0272b44caf93e6086fe153336b
+efa41fc52dcefc9e2f7ff514904fa5fb506a54380a1b0f04711115ada32a6fe6
+e68e6c7de7cea029bd8b21fcb83f4bf43d34fc8239ce92fcc1d9a9f86700bd02
+a04eb68511136b9cc47367f62bd601459b08c72b09f4df7a40999332c5be467d
+dd83f7de33741e9b6be82ab6facc7cb8b8da567a16957ebd7f3a694c41b6bb2a
+4b82de1d85b7c28f4a510c4bfada3ebf1cab17ab8efeefc7c2996c6fcb263ce8
+b5868cf2a9a587e74307c8bde142af63601e59de0031b282a075d70e7b18866e
+3725872e224c83571bee2a98e113128cf71fdbab36d8214c4663cc8a8df2caad
+e8a46787c726818f292518ea40838189dc66d55b1862687a794616dfcef2c1cf
+6446f2a20daa5b6f3e059eb222d6e03e7fba92bd3cc56adde303f2478b0f02e0
+d1bcdff34ae31fd15cd4597fc352c0c176db6f75d4d00b5336560c0451453c5f
+57c59cdd66557b3008aa998cfc708a9ca7dfdf160efc978283f6fcf6573d2a6e
+9868dec9689f4269b4e98c061f3adb3a5e16b2487760f493c2593873b124c34f
+21a35ff5ad5faadcd34dc6b50a863a462abe24d9b7aa59e6a03c3db0da0c4894
+011f25345ff3ad6cde3ac2df58607f50aebd4bd2bee95d21eae6b4e0e90cac13
+399c188b7e693d648f2496eb9e406617b1c113eb996f0a7f44fc8c465cdd6c95
+7211fd550935818945cbe984344b5b6d7b87dfd7de82a6521b0923c87fde92de
+3e956348bcd7170858df8780cb4fdae79bca6dc31b40df5b687b4032e005c762
+5b55a08c57cc340681675f708217931a9e3de86fc0b0f0717e1ad38dfb17e8a4
+ab4645c23661c9e9090340403918782660200fd4a3117e3d80587911edd64abe
+b3a2e0a8504269279601bf23d74bcbbf957e5a2f198094854212e712b2948772
+0cb4bb7ea4279736c4a1fb650633ed22b35c33db57c17d5a2a6c1ea3ef4d3425
+49bda52d7a20b521ed657ddd201156caffe6f3e2611193b5639283fe956bb7d6
+ad775c3a9321b5f946cc9380f76fa73e149196bd35e3bb720dae3d8036c915bd
+b7894be538c58f06c4121af00d3b458438d46bd9d0ee6bd1a7a7fcf828192b1d
+90a6085a198345d4e093c748cd53eec4701c949087c125d5db577ed463504b0c
+69afc54eafb1a40d7ae7d2fd899110ab661bead22b0d3f57928cd214fc38b014
+c7cc400b53cd2f559b133e558f5a484ef1ce318d9347c5eb6ad03fe0cc50cdd0
+cd3d3e54c075a4fb923e335bab843b1eb715d120d754315796c6e0c7104f9edf
+f755259ed3a2d9f035976f64c3b3ab3d7f2d3218eb445edd9329477670bfa26b
+d975f9f68d7637d5636fdd82084953f46a7b0e673b099c960c03322acf23e52c
+cb4a963685a952f542110ba4ab174567f8a9db2d1b784624b056026f941fc024
+ffcc8dc32003db5809bd58ba1207265ea496065b05f925b313f06209ef83da94
+b5453533a144350c1c7dede0d5101a513fcad9b5ccb13eca2a53056853464bbd
+fcaf8bf0df1d5d1b389c2972aa00b702e61cd9ab3533a2862d80f9a58b1750b3
+76b4210eb7fd29ad2c1382ddad8631a2926103660d164329309ce99b465fcf55
+f2f33abc0d5063915fe1469e431c0f96e10147f2e7b149de0981330db3f67ed1
+e2947a448b6b0ec1dce097a050149d03de51c49cd467aa5075478b68cb5634f7
+5a3bd0427c88059666bce79c28bd4446484bd194f0329679bef277ad038d7bac
+5a8fa07e6714944b107b54ef8ab7b8be380c5571199cc150beb4148e6ea55471
+d18be0ef4c664e5f974d5c097245059898595b73f36a2ece852cb5c5ed7c3813
+71d91c73df7a0c05746f2b3aef2bba53512fcc4ad6f17dc7c143fba306fc2bce
+bd78503cbfeaedbade60cad708c34912c4b1c01f56c487d22e7ab70dee6f8f58
+266c9a79c5e13db7741608e9a30dbdcacd9ad4272f9760f65e0521873cf28c67
+cfbeae2aeb72df1630832eaefa394de4aa1e48f9a084258a96cc405056682948
+dd02745365d7a581ab43777b213f72569e1e533f845059f53f3914864f2658f2
+80c18f35b8ae1dcf266ccad0b6eb481f6727bcea10c559e261a4fab8bbdda2b2
+bf7e0bd4855c853e0169810d7be61dccd1018cf6622ccdc44ffc59e5a5da0ba7
+b95a860f4c9b3c8f38f878f98c0fdb16871ff0feef442000e2526b66bc02016c
+4e089aec867d9ea5e8200b194ffd9ced0e2da665b044b0466fb4709c3c852598
+3cdea107a21fc9ee3b7d04b8b627a565338c92377c6f53ddad9a66c0f26f3488
+d6fa8389f4f6c58a10df6d2d7ffa9c3b686cd22ed3e6850fe63a29266da60462
+64a3f58bdfbe25d87ce7c73e21e671e77222f4e7d9ae18a51fb2c8b36cd28eb2
+a4bfd6c535e58bef4252261763e120c9536e125d0b6ecc32356dbd865aab0daa
+78606b3f9b5eb84dc79b6df0df9ec2e2130c0091b3aa808a26feef1c0335599a
+a68b23178af27858f7b4c63c411e054d11e92320c033c58c2d3322f01e05a4ec
+d335274085a0768bfef664886a97930624365cd15f3706c259e5a57aa554e348
+6025ef93c878b27dbc676187031bf82fc03f3d6628cc40e0d15ae9a0232eed5f
+c26a21059baad438e80333bdddc245872371030c0b184febcb251b6158403833
+947378ae0a83c254f42d0ad2d92ac2bc5462d316e28550e4b5924764d85aada3
+097409d4f3bf6e115a22ccbe41cde5c611fc69f49e1ed0af55ba24f145e90573
+d60d26b150d542a22262b09599c75e77e55a24b0b6d30764ee423534167fc3d0
+43a1294cb9f6d0bf7d864cec71e84e6436b2278d0fab4cc2fcbbc98434db5099
+68455bf1070758007ebc1d17447eff296faae7c9e0253396c03689b4456a9f55
+aa93a7f75b8d42c17257dab88a3175cc699f9db6f090d02ec3eb535a73
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMTT12
+%!PS-AdobeFont-1.1: CMTT12 1.0
+%%CreationDate: 1991 Aug 20 16:45:46
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 46 /period put
+dup 73 /I put
+dup 97 /a put
+dup 100 /d put
+dup 101 /e put
+dup 108 /l put
+readonly def
+/FontBBox{-1 -234 524 695}readonly def
+/UniqueXX 5000833 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be79011d1f5b667eed85fade30ab2ec4e1c2f
+4fe750cf9a69506458071de8896261c001b1c290937fa42a1fa87de406e9f86a
+4c9c0f03f69fba719114f8ae51040a4c03a58b6f3de027f6726f32743dce7395
+14c2c6f3c2de1aeddcfa8eed7da56dd68dbcde33c29ff7a694769049e4325ec9
+61b2df16add2ad46f18781fbd63eec62c26f1db41e6a666a09886382dceba91d
+8ff7cedd64ddc8a2f15fe34076a064c46febd1f4dc3707aede0ce8af161bcb8e
+4ada202d0954baca5be71c28ab8bf32fd72029aa07f27d658a68f454a4bf386f
+6314224d16c7f0a8624f6b86319a4e2fd178f596f3b20db032ea28c157a68a69
+fad2bc88881658d2286c0d4ef061bc070c3145f2a37ebec03f51de7cda34cd97
+7eeebd86b00f9758b3a496f41d9a74279ef3c6322dc54945f95062c5f37a1e51
+cf7eaf45f2b3634b2d7d01ec3b298ff35b6616cd3020e096f6c6aa2bf04c4a93
+61c19f3c67a28d936ffc8120f1e46980b29bf54047c5f1fa48e67611a74fa434
+3384f802a4079b28b94681e119ab0c1692de5bbf426440ad1023506cb80732de
+c64d9061869cb34de924d2c26e404b7dbd9be55b9c0c5ae3095c15d278adbb49
+12df1484ed2d73128e5d9c1f1a3b9ac19e2ce5366c96644f5b3d3eea589caedb
+586fd9b8f4df32ec910e9b7434d5bbe57e03892eb03890567df5b811afa0da5e
+929d456af362fda0789aa0cff464e238029294fde86cfc8d7d33d5c98b18c76c
+319811e4d3d49560f2ac39103594ec513e0b1377c2c3e22979866c19b61448d5
+a7201ca4b7538aa370f6347253b0853d4c5d575a7572f93cb73a598e2e26b11a
+d46a1126e44e7e1795dff01562316b6ccc6678663e66a73db285746df3f4405d
+d51714679581946ef7272a38f41798f0c0cb66b7e7b525e0437c12ac8d4568c3
+f37379470d93b09babe1aabd17f20c07908f1908c4177db0d7dc73fce84bfc5e
+8a1daac7004c1c0fc0f1af83e4946f560408efe85dd014668bfff2d51f3442ad
+86e0c4292debd64376ce1aacfc0b21da230958c6a4e4fc75f8ccc09b3bfbffa3
+6d0589e50b5a2c67b299bee3378e33b59dadbc0b5dcb724ac58d274387f2a479
+ecccf173832a3c33b4aaf172c9043af569f5c04b29fe7bcb5aac415e409fba6d
+82ce66e4901498ab8a2b2b6853d1d82e10a0b5d672c65d9b102048137bd2dd49
+d962973a91bd8a1e7e85fa2edc25f24c2d1ed63c138280fe6c7af10ef776224d
+6c8ae754aa2eb851c786f862cb52e58b51630f238f3b2845e4814568e0248017
+cd18639feea7c4f1bc5d21ccd62dee3c822320941e5dbd058f92947ff957258b
+4daa2c24d2541f16811f19babdf0d40c2ee470579c80fbb776784ddb3136ba9c
+d782cb10f699f45658c7e544b8a46a58802ab7ea9c708325d74f03e388d00b87
+f3c8358ba3853155b5e4133946ca165f4ed605e522995cd06752db1406d4bd88
+0685fd14a8c67353056549d3224c18c5e905d61d6fa723b0b85e3cfd16c0dc4a
+9ebc37a4adf757a9a831bafad0a70c27a83de810238f74d2b6056f8be7b00782
+7c151f28f0e77c6f474c649b71803e688a76d12da609a91eece6e266cf6d4ab0
+2fe97321802dc1aac743e0c85b2e08f04d2c46d1db63e7fe8d2c540907be97fd
+a189965832117c499484c6ef64c08d68b7cff9affa39615d880163490f400cea
+f1feac75bed02b3e0a490bf2b73294d8e840aa30c60f2c0034123e8e6c415c2b
+6848f972a4ff965b58a6d2f2b9e94ce50d0b96811d802daf14b4bc9169a4ca0b
+49c78cafa3d78a966cf7a25aacfbcdd0bf914dc95d118f5929e4ddd32c75122d
+43458cd20b237ae3fde46db81222d297801bb4a8d9dd6bec8d2f08f43411b93f
+67b8e72cd3879ff8ac02888e44bfaa85da3035b5b9294280fb6334d05f175d49
+5d32eafaacffe930ba72a16a1be5bf68b1b050e2636efe6cf5039a7618c77f03
+89fbe0cf224beb18b79f54910ca148613d7989a1229f782574f4606079414344
+4794d352a5f431353ce93ff1d5139b2d1067a7b6bccf128f3b57a6c96fba11f1
+9990e2bb9c6ab0315be36fecd6d6b436cc9606384553b5c31341e675286c143e
+170223b1450b26fae16bffbd2a36b414273b04b9a6
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+%%BeginFont: CMR17
+%!PS-AdobeFont-1.1: CMR17 1.0
+%%CreationDate: 1991 Aug 20 16:38:24
+
+% Copyright (C) 1997 American Mathematical Society.  All Rights Reserved.
+
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR17) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR17 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 65 /A put
+dup 97 /a put
+dup 98 /b put
+dup 99 /c put
+dup 101 /e put
+dup 103 /g put
+dup 105 /i put
+dup 108 /l put
+dup 109 /m put
+dup 110 /n put
+dup 114 /r put
+dup 115 /s put
+dup 116 /t put
+readonly def
+/FontBBox{-33 -250 945 749}readonly def
+/UniqueXX 5000795 def
+currentdict end
+currentfile eexec
+9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0
+0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3
+79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3
+2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8
+b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d
+823385fe55f3402d557fd3b4486be356c29c3aec91ef17f5d31183b1e489f1fa
+559a6693fbdd04d4f7e99886d8cb7cca13d4aa9ceb34a708af22e69ccef0e504
+c3997075243585edf60b6447c8d01cffb04b6e3ddbaa7da5891286861322a795
+e9d990fd56af2f5c2b35801a0b07874e4ac3170481d232e150443253c92a8b05
+513d4a4154a99d91f629ccd30376500f5d16aaa9b203bad6350e4b19424c0e33
+75f2949bc1927a6f6221252f8a96618e646aa1b0810753c98becc26b37837775
+24bca72b818d314074c1c91f4e1f4148d3d703d12d179ee6970bd55d04aa9a9d
+97f63f2c7dbd129ec2ed3ba5f8080270ea5854ea165dbcc061e2f47f1aaf0997
+2ac9a689a2a9620b91b53f6b5092884372f5f7afca495f331138d85a97c5bb83
+d8072dc88010fc89108b60bc06d4f93c722e8908d7ce3c1ea3c70e9e65edd769
+7db17ce0e012ad37d4030f33d30a73fd655b7a2e572f3378ac933dd75082f2f1
+68702be19bc60cef6bd5f0ada180d21408c04b7f7db9b6dbaefe09e809a80ddf
+a5366d10930d3e68ca53e4721ff525853f4c784f2c2c3aa0129a34d9df00debc
+ae4037e4c0fbdce3989f35964b4c07e7817b805bfe8c15f0c0ebf226cff606b6
+2954f0f42dff8c214a6537ab666d25389c44db7b5866440bbfc137712bcdcc89
+c68cd1adfd85648b1ed29bfb45a564b02172137feef782d604e0d7e1f1737c96
+719cca9e4b9dfdc87e5999b886a15ac572183dfafd8c4176cd98430c204d4e7c
+e989e1dea814d3088a21d9ae6c5fe7ab3d399b2982fd605e65509a8ed6790c21
+a08a23e53dbe70f676d0e7b2e8261b092dc3415ac785635d133d309ac670c0c5
+5868fd863ce42542ff1e83e1fa20a7a0e5d680dec3a22700f7f48d2582b8411d
+757d17ab7530ceec0c6727c6a80f2493196b0b36e727bd6595b5d4f5baef0318
+f3c8107380a2a731f5d5ac8bd86ab3b2d774b8a256e4f52628d6f8d0e40f1163
+6026c69f76f274283931ee02d73937f334b843177f8fbfb051019ecf7a56a07a
+81a3809c71515bbe9c043437a5c1007ca9ba87bc597d1c84d4585de379ed04d4
+c53958e67875f5b49403df15843727ce4199229066016f33ddd7a8cd1ab88c85
+8653e20c90c2304e7dfbfdc69c0267ffa4bb3d605fa3cf9b9f540d115108b370
+a90059c35cb2a7ddbe72d48be3b8b393e03d07b793c0e7ef7566510a3da0af14
+6850f0db2413057385a635c3a412d31689248523e8c872350e0e78e5e455434d
+85bbaae7111b59fa84e5a16ea843f527d3e398d03e09fe3b362056e5e0de9dbe
+059bbc07c0dd42bfd9793e6fb82efe052d2f7a99052933a0496004e8f275da81
+d057d670172a1813d3107c5f41460dd9165420769b7f53979dcb41d6dd227e21
+3f1048b696356a07c96ee32fc18956b3d39953105906ac952d6246617a0eb07d
+13fbc467c5ace362567a8602abbba19346bcbc9af3a68b4d35d6b30c411d4359
+de75bd50920366be8a1d82329766e28aa45ae7b8359d7bc4ea8cf1348b997fc2
+682d84e09e363dd855c07d8eba0ce8641a73fd51555ef8eda75e13d1ab68d0d9
+da5583b935ebe895c27465d55985c3ae229dfbf6e9e97fd240e94344f95996c0
+44d8b46fca2d9e479a46f0c7855a59424d865bddd4b8b2715025b1aa920712b7
+c10d1c1aa764bfea3644d2a36a573728a9e1eef8afb3ec97b83936964577e8b3
+59c15fa4747da752b3b90e70bbb5b864496622ea8cb412f9eb5439c4c587a4e5
+fac054a1a5a1d992f63ff57d4f4281431016f9d3c107fe07ba12b0c5a82dfc31
+f1ccee58266f49e1cb8fe4d11edf30c6d0e52e8bfb183e178b994b27c6a8cb22
+0ae48dfa9834170902b06fc025b1e178d14cda92a496c85d204b17c2df9489a5
+aa1c6b0ebad624dc2b80c55cfef54072a1a3acce666ff043eb8bac830da01ac5
+f46441985156788679836dbc89c54cf97b7cf286b5c81c1a3603dfd2a573a9c2
+ea43e5c0df58037052e36df2039425b26fe8bd5efbfb8f848647197717cc1fa8
+23f52d1530713ed4f598f57c22c51b8d08d14d9a690967a9c17ad6c41215723e
+aac82de701334898d5530664f5d196aeb609eeb7d17eb0e9649fabae457e9db4
+0b92c57c0645a2cc5af867fff332d673361f09d72eb5bc9f4694b8a980a50d19
+e68710f6901aa6666c8274cbe16350efb313b05b1540c59e302402e662e62112
+2d0564795639954f1e56c341e5f2d99379d1164aebd5cd4d85d83644ecd5755a
+1ef9e3f66950207cf657cd339466352e4959d3e0f5ed10730b1fa65a539aec23
+9440bf8dd18ce753221301ed42e234549cb914c8f15324358b1bbdfa162b5e39
+92f2451d67fb403982e74083bfb7eb84b61f04f1621331563e8ed8cc8427afab
+9b2b356e85c23135359cc7dbc798c57c4667be292e8ad7006f55c342a5c4e153
+c175595d93e46763eeecc9b68088f9c732a3fcc2d18d702b96232022ee08c605
+0c07a0f866b917fcda0103d2250ab9cd8eab1067e28bd54331e447583d5cd6cb
+2c395c6ac49826d9077a7560a2b2652b9b3bb296d94089f5b8d2ea10ea46dd69
+c6cd8eb28cdce5a23848f1939be39528e28948d41be8c9a6f33c7656c90859c4
+befdb3eac63fe60893826ae55b8898e537c9856cc945a16b3a6fdf32af252bb0
+c40405f7cb615e9bb17cb6f23a86304faeac7a56f7b85488d3525adc7b9da686
+56d8211b27fc863134ed3a9054fe6bd3d21b59dd6d6c3718f6e64217d8d5e882
+30ec37d8ba92bb638864484082d9530ce9031f8bf15a9a07ba9e3c3cca56267a
+e10c7a3e7c13f449d9b02fa731f52d97c9500151f866b217e3018c5cda7432ee
+2220789a006e298a9ab501eff5ffb6c3079b9e60bffc9127f6c8b9e04df6ebdd
+dae8e9323a5d699dfc0143bf8ed224f2a076850075f5f5665ed82190516be315
+a91fd410679b82443c993a1746cc54d4597cfe722db5e8d0a9b4e5195052ed5f
+422177715c237e4dcb7567a332d011a38a078454d16d323ebcb92186eba23992
+4cd7002933e081b430ee2bc421abbc45fbfd9b41ffaee25a935b20991c377056
+a383d73750cd1d55804bccebe430ce22b16592376f54a18a9cbdfbd1de92ea50
+c77711c69722ff6ddc1a5c6297493ee4cd63c50e8412b4e42b8a5729e87fd435
+54316f57db2792258bfa2f38383558c5d85acd5abf65e54cbcd090eb34554be2
+1734e4374158e800c28050165b81bf94791f8ce24d0f45f05fb2df681ff0181f
+0ac9d37cae93dc938783a3e8a9b20fdfcd2e31d22de9b7fe061f91054a0b32fd
+97069b7cf02150b83bd7cc1d9ba29a5a112be9e28b9349344d535f719822c8b7
+a55d92a1a4084102d110f32ab3b59d1a7493b1bcf549eb583e6cea6744cbaf7f
+436704653e774435ccf84a37faa5443b4969041ef2f16b659527c6f01aa540f3
+5396f7c7c03f4dae8828ab2ad194b5972b2691bd414f5e25246c83918d455fe8
+2c1c4d5f704bf8f95357af4d9ab0155e9f1b9304d67d0ebef9a47827dded45b4
+51339f0fd7a914add1f59c07cf74f7aa0a12549b441e12dd5449bcd1de00ddf3
+13637d693da44cfb22a4e73093d64f9f86328322fc39a343cfe752b904aecf1c
+145c05d133f7d2d8606a3df1bcacfbab34e457e685f459d731ffa68f383a6182
+70edc182d4678152023981b39a150c87cf9cd2603527b80d5a94e9281ac1ea8b
+cb325cbcea7e638b5b43aa0c0ca95d103528c2841667bba973080813ca05ee4b
+96974224c9724ed6a7512451f95b180cae87ab46c61623154d6540c03c616b53
+8251b40c69c57276f72340aa2c83fc6a40fd440dc5aa9ae8fb438f0cc156fa52
+4afb2ed766a7bdf0c7b4f49877448c293ec40d13969da521b68480e6294ae3e7
+ea1ea3cd5ffd766cce3a2e3fe4800e16780c9d89a0f2533aad21c9b78afde506
+f53ed9389830243c250f79daf56551d8bf2d1337e53f31e1f77feb379a3b8fc6
+27fd03a8b30b0cb71b8a6a1c9fa058a8f24631622719fb0a3aed5522c872056e
+40f6c350c8ffd334887feb234ef8f78a09fe93891fe303539f
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+
+%%EndFont 
+TeXDict begin 39158280 55380996 1000 600 600 (assemble.dvi)
+@start /Fa 135[50 69 50 53 37 38 39 1[53 48 53 80 27
+2[27 53 48 29 44 1[42 53 46 25[75 1[63 69[{}22 83.022
+/CMBX10 rf /Fb 138[62 44 44 1[59 1[56 62 1[31 59 1[31
+62 2[51 1[50 1[54 12[78 62 28[56 56 56 1[56 56 2[31 46[{}21
+99.6264 /CMBX12 rf /Fc 142[27 113[{}1 41.511 /CMMI5 rf
+/Fd 171[39 84[{}1 58.1154 /MSBM7 rf /Fe 171[55 84[{}1
+83.022 /MSBM10 rf /Ff 205[45 49[52{}2 58.1154 /CMSY7
+rf /Fg 165[46 1[120 7[88 12[73 73 73 73 14[73 73 14[66
+66 5[62 6[61 61 50 50 14[38 38{}18 83.022 /CMEX10 rf
+/Fh 142[30 1[33 2[21 35 27 23 39 32 3[30 29 36 12[39
+5[53 2[56 15[20 59[{}15 58.1154 /CMMI7 rf /Fi 194[51
+10[33 33 33 6[26 26 29[47 10[{}7 58.1154 /CMR7 rf /Fj
+141[69 7[23 2[42 42 45[46 1[0 3[55 16[83 83 6[65 4[65
+2[65 1[42 12[65 23 65{}16 83.022 /CMSY10 rf /Fk 135[47
+59 40 48 3[37 42 40 2[25 1[34 29 1[40 41 1[43 36 36 44
+10[48 57 3[66 2[67 2[71 46 36 2[53 4[62 44 2[42 65 23
+23 18[54 6[54 8[41 50 48 6[37 1[47 12[{}37 83.022 /CMMI10
+rf /Fl 133[34 2[55 38 45 28 34 35 1[42 42 47 68 21 2[25
+42 38 25 38 42 38 1[42 25[64 2[63 9[25 12[30 32[47 12[{}25
+83.022 /CMTI10 rf /Fm 130[44 44 44 44 44 44 44 44 44
+44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
+44 44 1[44 1[44 1[44 3[44 44 44 44 2[44 3[44 2[44 44
+44 44 44 44 44 4[44 44 44 44 44 44 7[44 44 44 44 44 44
+44 44 44 44 44 1[44 4[44 33[{}64 83.022 /CMTT10 rf /Fn
+133[37 44 44 60 44 46 32 33 33 44 46 42 46 69 23 44 25
+23 46 42 25 37 46 37 46 42 2[42 23 42 23 1[62 1[85 2[60
+46 3[65 62 1[52 65 43 30 62 65 54 1[63 60 59 62 1[39
+1[65 1[23 23 42 42 42 42 42 42 42 42 42 42 42 23 28 23
+65 1[32 32 23 4[42 14[42 4[69 46 46 48 60 1[60 6[69 1[{}78
+83.022 /CMR10 rf /Fo 134[71 2[71 75 52 53 55 1[75 67
+75 112 37 2[37 75 67 41 61 75 60 75 65 10[102 1[94 7[81
+2[50 5[97 1[102 6[37 2[67 67 67 67 67 67 67 3[45 32[75
+12[{}36 119.552 /CMBX12 rf /Fp 128[49 4[43 51 1[70 1[54
+38 1[38 2[49 54 1[27 2[27 54 49 30 43 54 43 1[49 6[60
+2[100 2[70 54 5[89 4[73 2[66 2[69 15[49 1[49 3[27 44[{}29
+99.6264 /CMR12 rf /Fq 147[89 6[89 89 2[89 23[89 26[89
+46[{}6 172.188 /CMTT12 rf /Fr 139[61 62 61 3[88 133 43
+2[43 1[79 1[70 1[70 88 79 31[119 65[{}13 172.188 /CMR17
+rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+%%BeginPaperSize: a4
+a4
+%%EndPaperSize
+
+%%EndSetup
+%%Page: 1 1
+1 0 bop 670 427 a Fr(Assem)l(bling)51 b(matrices)h(in)g
+Fq(deal.II)1417 661 y Fp(W)-8 b(olfgang)32 b(Bangerth)1293
+777 y(ETH)h(Z)s(\177)-51 b(uric)m(h,)33 b(Switzerland)1623
+977 y(Ma)m(y)g(2002)330 1251 y Fo(1)135 b(In)l(tro)t(duction)330
+1433 y Fn(Assem)n(bling)23 b(the)i(system)e(matrix)h(for)f(\014nite)i
+(elemen)n(t)f(discretizations)e(is)i(standard,)g(at)f(least)330
+1533 y(as)39 b(far)f(as)h(scalar)f(problems)g(are)g(concerned.)71
+b(Ho)n(w)n(ev)n(er,)41 b(things)e(b)r(ecome)g(a)g(little)h(more)330
+1632 y(complicated)26 b(in)g(implemen)n(tations)g(once)f(problems)h
+(are)f(v)n(ector-v)-5 b(alued,)24 b(and)i(in)g(particular)330
+1732 y(if)39 b(\014nite)f(elemen)n(ts)g(are)f(used)h(in)g(whic)n(h)g
+(di\013eren)n(t)g(comp)r(onen)n(ts)g(of)g(v)n(ector-v)-5
+b(alued)36 b(shap)r(e)330 1831 y(functions)28 b(are)f(coupled,)g(suc)n
+(h)g(as)g(for)g(example)g(for)h(div)n(ergence-free)d(elemen)n(ts.)455
+1931 y(It)32 b(is)h(this)f(case)g(that)g(w)n(e)h(are)e(in)n(terested)h
+(in)h(in)f(this)h(rep)r(ort,)g(and)f(w)n(e)g(will)h(discuss)f(the)330
+2031 y(implemen)n(tational)h(details)g(user)g(programs)e(m)n(ust)j
+(follo)n(w)e(if)i(they)g(w)n(an)n(t)f(to)g(use)g(suc)n(h)g(ele-)330
+2130 y(men)n(ts)c(with)g Fm(deal.II)p Fn(.)d(In)j(order)e(to)i(explain)
+f(the)h(problem)g(in)g(a)f(simple)h(w)n(a)n(y)-7 b(,)28
+b(w)n(e)g(start)g(b)n(y)330 2230 y(reviewing)c(the)i(algorithms)e(that)
+h(are)f(used,)i(\014rst)f(for)g(the)g(scalar)f(case,)h(then)g(for)g
+(the)h(case)e(of)330 2330 y(\\simple")j(v)n(ector-v)-5
+b(alued)26 b(\014nite)j(elemen)n(ts,)f(and)f(\014nally)h(for)f(the)i
+(most)e(general)g(case.)37 b(Ho)n(w-)330 2429 y(ev)n(er,)27
+b(w)n(e)h(do)g(not)h(in)n(tend)g(to)f(giv)n(e)f(an)h(in)n(tro)r
+(duction)g(in)n(to)g(the)h(deriv)-5 b(ation)28 b(of)g(\014nite)h
+(elemen)n(t)330 2529 y(metho)r(ds,)f(or)f(of)g(p)r(osing)g(a)g(partial)
+g(di\013eren)n(tial)h(equation)f(in)g(w)n(eak)g(form.)455
+2628 y(The)19 b(in)n(terface)f(for)g(v)n(ector-v)-5 b(alued)18
+b(\014nite)h(elemen)n(t)g(shap)r(e)g(functions)h(with)f(more)f(than)h
+(one)330 2728 y(non-zero)i(comp)r(onen)n(t)i(that)g(is)g(describ)r(ed)f
+(in)h(this)h(rep)r(ort)e(is)g(presen)n(tly)g(b)r(eing)h(implemen)n
+(ted,)330 2828 y(and)d(will)h(b)r(e)g(merged)f(with)h(the)g(library)f
+(after)g(v)n(ersion)f(3.4)h(is)g(released.)34 b(Th)n(us,)22
+b(it)f(will)g(b)r(e)g(part)330 2927 y(of)g(v)n(ersion)e(3.5)h(or)f(4.0)
+h(of)h(the)g(library)-7 b(,)21 b(dep)r(ending)g(on)f(whic)n(h)h(v)n
+(ersion)e(n)n(um)n(b)r(er)h(w)n(e)g(will)h(assign)330
+3027 y(to)33 b(the)h(successor)d(of)i(3.4.)53 b(By)33
+b(then,)i(the)f(library)e(will)h(also)g(con)n(tain)f(an)h(implemen)n
+(tation)330 3127 y(of)j(Nedelec)g(elemen)n(ts,)j(for)c(whic)n(h)i
+(these)f(tec)n(hniques)g(are)f(necessary)-7 b(.)61 b(The)36
+b(in)n(terface)g(for)330 3226 y(primitiv)n(e)g(v)n(ector-v)-5
+b(alued)35 b(shap)r(e)i(functions,)i(for)d(whic)n(h)g(only)g(one)h(v)n
+(ector)e(comp)r(onen)n(t)h(is)330 3326 y(non-zero,)26
+b(has)h(b)r(een)h(part)f(of)h(the)g(library)e(since)h(its)h
+(publication)g(with)g(v)n(ersion)e(3.0.)330 3600 y Fo(2)135
+b(Linear)45 b(systems)h(for)f(\014nite)g(elemen)l(t)i(metho)t(ds)330
+3782 y Fn(W)-7 b(e)30 b(start)f(b)n(y)g(brie\015y)g(in)n(tro)r(ducing)g
+(the)h(w)n(a)n(y)e(\014nite)i(elemen)n(t)f(matrices)g(are)f(assem)n
+(bled)h(\\on)330 3882 y(pap)r(er".)34 b(As)24 b(usual)e(in)h(\014nite)h
+(elemen)n(ts,)g(w)n(e)f(tak)n(e)f(the)h(w)n(eak)f(form)h(of)g(the)g
+(partial)f(di\013eren)n(tial)330 3982 y(equation.)36
+b(In)28 b(the)g(most)f(general)g(case,)f(it)i(reads:)36
+b Fl(\014nd)30 b Fk(u)22 b Fj(2)i Fk(V)48 b Fl(such)30
+b(that)1320 4164 y Fk(a)p Fn(\()p Fk(u;)14 b(v)s Fn(\))23
+b(=)f(\()p Fk(f)t(;)14 b(v)s Fn(\))1855 4176 y Fi(\012)2074
+4164 y Fj(8)p Fk(v)26 b Fj(2)d Fk(V)5 b(;)330 4347 y
+Fn(where)31 b Fk(a)p Fn(\()p Fj(\001)p Fk(;)14 b Fj(\001)p
+Fn(\))32 b(is)f(the)g(bilinear)g(form)g(asso)r(ciated)f(with)i(the)f
+(partial)g(di\013eren)n(tial)g(equations,)330 4446 y(and)26
+b Fk(V)46 b Fn(is)26 b(the)h(space)e(of)i(test)f(functions.)37
+b(F)-7 b(or)26 b(simplicit)n(y)-7 b(,)27 b(w)n(e)f(ha)n(v)n(e)f(here)h
+(assumed)g(that)h(the)330 4546 y(problem)d(is)g(linear)g(and)h(that)g
+(then)g Fk(a)p Fn(\()p Fj(\001)p Fk(;)14 b Fj(\001)p
+Fn(\))25 b(is)f(a)g(bilinear)g(form;)i(if)f(the)g(problem)f(is)g
+(nonlinear,)330 4646 y(it)k(is)g(usually)f(solv)n(ed)f(using)h(a)h
+(sequence)f(of)g(linear)g(problems,)g(so)g(this)h(is)f(no)h
+(restriction.)455 4745 y(In)j(\014nite)g(elemen)n(ts,)h(w)n(e)f
+(de\014ne)g(an)g(appro)n(ximation)e(of)i(the)g(solution)g
+Fk(u)f Fn(b)n(y)h(c)n(ho)r(osing)e(a)330 4845 y(\014nite)g(dimensional)
+f(subspace)g Fk(V)1397 4857 y Fh(h)1468 4845 y Fn(spanned)h(b)n(y)f
+(the)h(basis)e(functions)i Fj(f)p Fk(')2712 4857 y Fh(i)2739
+4845 y Fj(g)p Fn(,)g(and)f(searc)n(hing)330 4945 y Fk(u)378
+4957 y Fh(h)444 4945 y Fj(2)23 b Fk(V)570 4957 y Fh(h)639
+4945 y Fn(b)n(y)i(testing)h(the)g(w)n(eak)f(form)g(b)n(y)g(the)h(test)g
+(functions)g(from)f Fk(V)2576 4957 y Fh(h)2620 4945 y
+Fn(.)36 b(The)25 b(problem)h(then)330 5044 y(reads:)36
+b Fl(\014nd)29 b Fk(u)793 5056 y Fh(h)859 5044 y Fj(2)23
+b Fk(V)985 5056 y Fh(h)1058 5044 y Fl(such)30 b(that)1219
+5227 y Fk(a)p Fn(\()p Fk(u)1343 5239 y Fh(h)1385 5227
+y Fk(;)14 b(v)1462 5239 y Fh(h)1506 5227 y Fn(\))23 b(=)g(\()p
+Fk(f)t(;)14 b(v)1803 5239 y Fh(h)1846 5227 y Fn(\))1878
+5239 y Fi(\012)2096 5227 y Fj(8)p Fk(v)2182 5239 y Fh(h)2248
+5227 y Fj(2)24 b Fk(V)2375 5239 y Fh(h)2418 5227 y Fk(:)455
+5409 y Fn(No)n(w,)39 b Fj(f)p Fk(')775 5421 y Fh(i)802
+5409 y Fj(g)e Fn(is)g(a)f(basis)h(of)g Fk(V)1418 5421
+y Fh(h)1461 5409 y Fn(.)66 b(W)-7 b(e)37 b(denote)g(the)h(dimension)f
+(of)g Fk(V)2686 5421 y Fh(h)2767 5409 y Fn(b)n(y)g Fk(N)9
+b Fn(,)39 b(and)e(will)330 5509 y(henceforth)e(let)h(all)e(sums)h(b)r
+(e)h(o)n(v)n(er)d(the)j(range)e(0)14 b Fk(:)g(:)g(:)f(N)32
+b Fj(\000)23 b Fn(1,)37 b(to)e(k)n(eep)g(with)g(the)h(standard)330
+5609 y(notation)f(of)h(the)h(C/C++)d(programming)g(languages.)60
+b(With)37 b(this,)i(w)n(e)c(can)h(expand)g(the)1809 5919
+y(1)p eop
+%%Page: 2 2
+2 1 bop 330 390 a Fn(solution)25 b Fk(u)690 402 y Fh(h)756
+390 y Fn(=)843 328 y Fg(P)931 348 y Fh(N)6 b Ff(\000)p
+Fi(1)931 415 y Fh(j)s Fi(=0)1093 390 y Fk(U)1150 402
+y Fh(j)1185 390 y Fk(')1239 402 y Fh(j)1274 390 y Fn(,)26
+b(and)g(b)n(y)f(bilinearit)n(y)g(of)h(the)g(form)f Fk(a)p
+Fn(\()p Fj(\001)p Fk(;)14 b Fj(\001)p Fn(\),)27 b(the)f(problem)f(ab)r
+(o)n(v)n(e)330 490 y(is)i(equiv)-5 b(alen)n(t)28 b(to)998
+633 y Fh(N)6 b Ff(\000)p Fi(1)1010 657 y Fg(X)1012 834
+y Fh(j)s Fi(=0)1155 736 y Fk(U)1212 748 y Fh(j)1247 736
+y Fk(a)p Fn(\()p Fk(')1377 748 y Fh(j)1413 736 y Fk(;)14
+b(')1504 748 y Fh(i)1531 736 y Fn(\))24 b(=)e(\()p Fk(f)t(;)14
+b(')1842 748 y Fh(i)1871 736 y Fn(\))166 b Fj(8)p Fk(i)23
+b Fn(=)f(0)14 b Fk(:)g(:)g(:)f(N)28 b Fj(\000)18 b Fn(1)p
+Fk(:)561 b Fn(\(1\))330 989 y(Denoting)1143 1159 y Fk(A)1205
+1171 y Fh(ij)1286 1159 y Fn(=)23 b Fk(a)p Fn(\()p Fk(')1504
+1171 y Fh(j)1539 1159 y Fk(;)14 b(')1630 1171 y Fh(i)1658
+1159 y Fn(\))p Fk(;)347 b(F)2113 1171 y Fh(j)2171 1159
+y Fn(=)23 b(\()p Fk(f)t(;)14 b(')2427 1171 y Fh(j)2462
+1159 y Fn(\))p Fk(;)330 1329 y Fn(the)28 b(equations)f(determining)g
+(the)h(expansion)f(co)r(e\016cien)n(ts)g Fk(U)2312 1341
+y Fh(i)2367 1329 y Fn(are)g(therefore:)1671 1499 y Fk(AU)32
+b Fn(=)23 b Fk(F)r(:)1236 b Fn(\(2\))455 1669 y(Note)26
+b(that)h(w)n(e)g(ha)n(v)n(e)e(tak)n(en)h(a)g(rev)n(erted)g(order)f(of)i
+(indices)f(in)h(the)g(de\014nition)g(of)g Fk(A)p Fn(,)g(since)330
+1768 y(w)n(e)h(w)n(an)n(t)f(the)h(linear)g(system)f(\(2\))i(with)f(the)
+h(solution)e(to)h(the)g(righ)n(t)g(of)g(the)g(matrix,)g(to)g(k)n(eep)
+330 1868 y(with)33 b(standard)e(notation,)i(instead)f(of)g(to)g(the)g
+(left)h(as)e(in)i(\(1\).)50 b(F)-7 b(or)32 b(symmetric)g(problems,)330
+1967 y(there)40 b(is)g(no)f(di\013erence,)k(but)e(for)e(non-symmetric)g
+(ones)h(this)g(is)g(a)f(common)h(source)f(for)330 2067
+y(problems)27 b(and)g(a)g(rather)g(common)g(trap.)455
+2167 y(F)-7 b(or)26 b(partial)h(di\013eren)n(tial)g(equations,)g(the)h
+(bilinear)f(form)g(used)g(in)h(\(1\))f(in)n(v)n(olv)n(es)f(an)h(in)n
+(te-)330 2266 y(gral)20 b(o)n(v)n(er)g(the)i(domain)g(\012)f(on)h(whic)
+n(h)g(the)g(problem)f(is)g(p)r(osed.)35 b(F)-7 b(or)21
+b(example,)i(for)e(the)h(Laplace)330 2366 y(equation)27
+b(w)n(e)g(ha)n(v)n(e)905 2574 y Fk(A)967 2586 y Fh(ij)1049
+2574 y Fn(=)22 b Fk(a)p Fn(\()p Fk(')1266 2586 y Fh(j)1302
+2574 y Fk(;)14 b(')1393 2586 y Fh(i)1421 2574 y Fn(\))23
+b(=)g(\()p Fj(r)p Fk(')1719 2586 y Fh(j)1755 2574 y Fk(;)14
+b Fj(r)p Fk(')1915 2586 y Fh(i)1943 2574 y Fn(\))1975
+2586 y Fi(\012)2049 2574 y Fn(=)2137 2461 y Fg(Z)2183
+2649 y Fi(\012)2249 2574 y Fj(r)p Fk(')2372 2586 y Fh(j)2426
+2574 y Fj(\001)k(r)p Fk(')2590 2586 y Fh(i)2641 2574
+y Fk(dx:)330 2786 y Fn(F)-7 b(or)24 b(practical)g(purp)r(oses,)h(w)n(e)
+f(split)h(this)g(equation)f(in)n(to)h(in)n(tegrals)e(o)n(v)n(er)g(the)i
+(individual)g(cells)330 2885 y Fk(K)35 b Fn(of)30 b(the)g
+(triangulation)e Fe(T)i Fn(w)n(e)g(use)f(for)g(the)h(discretization.)42
+b(In)30 b Fm(deal.II)p Fn(,)d(these)j(cells)f(are)330
+2985 y(alw)n(a)n(ys)d(lines,)h(quadrilaterals,)f(or)g(hexahedra.)36
+b(With)28 b(this,)g(w)n(e)g(ha)n(v)n(e)e(that)721 3167
+y Fk(A)d Fn(=)906 3088 y Fg(X)894 3266 y Fh(K)t Ff(2)p
+Fd(T)1051 3167 y Fk(A)1113 3132 y Fh(K)1177 3167 y Fk(;)346
+b(A)1608 3132 y Fh(K)1608 3187 y(ij)1696 3167 y Fn(=)22
+b Fk(a)1827 3179 y Fh(K)1891 3167 y Fn(\()p Fk(')1977
+3179 y Fh(j)2013 3167 y Fk(;)14 b(')2104 3179 y Fh(i)2132
+3167 y Fn(\))166 b(0)23 b Fj(\024)f Fk(i;)14 b(j)28 b
+Fj(\024)22 b Fk(N)27 b Fj(\000)19 b Fn(1)p Fk(;)330 3420
+y Fn(where)39 b(the)h(bilinear)f(form)g Fk(a)1301 3432
+y Fh(K)1365 3420 y Fn(\()p Fj(\001)p Fk(;)14 b Fj(\001)p
+Fn(\))40 b(only)f(in)n(v)n(olv)n(es)f(an)h(in)n(tegral)f(o)n(v)n(er)g
+(the)i(cell)f Fk(K)6 b Fn(.)72 b(The)330 3519 y(imp)r(ortan)n(t)23
+b(p)r(oin)n(t)h(is)g(that)g(w)n(e)g(do)f(so)g(since)h(for)f(the)h(lo)r
+(calized)g(basis)f(functions)h(used)f(in)i(\014nite)330
+3619 y(elemen)n(ts,)i Fk(A)754 3589 y Fh(K)845 3619 y
+Fn(is)g(a)g(matrix)g(with)g(almost)f(only)h(zeros.)35
+b(The)28 b(only)e(elemen)n(ts)h(whic)n(h)g(are)f(not)330
+3719 y(zero)34 b(are)g(those)g(corresp)r(onding)f(to)i(indices)g
+Fk(i;)14 b(j)39 b Fn(indicating)c(those)g(shap)r(e)g(functions)g(that)
+330 3818 y(ha)n(v)n(e)20 b(supp)r(ort)h(also)g(on)g(the)h(elemen)n(t)f
+Fk(K)6 b Fn(.)35 b(F)-7 b(or)20 b(example,)j(in)e(2d)g(and)h(using)f
+(the)h(usual)f(bilinear)330 3918 y(shap)r(e)26 b(functions)h(for)e(a)h
+(scalar)f(problem,)h(only)g(the)g(four)g(shap)r(e)g(functions)h(asso)r
+(ciated)e(with)330 4017 y(the)33 b(v)n(ertices)e(of)h(the)h(cell)f
+Fk(K)38 b Fn(are)31 b(nonzero)g(on)h Fk(K)6 b Fn(,)33
+b(and)f(th)n(us)g(only)g(the)g(en)n(tries)g(in)g Fk(A)3122
+3987 y Fh(K)3219 4017 y Fn(are)330 4117 y(nonzero)25
+b(where)h(the)h(four)f(ro)n(ws)f(corresp)r(onding)f(to)j(these)f
+(indices)h(and)f(the)h(resp)r(ectiv)n(e)e(four)330 4217
+y(columns)i(in)n(tersect.)455 4316 y(In)j(general,)g(assume)f(that)i
+(there)f(are)f Fk(N)1769 4328 y Fh(K)1863 4316 y Fn(shap)r(e)i
+(functions)f(with)h(supp)r(ort)f(on)g(cell)g Fk(K)6 b
+Fn(,)330 4416 y(and)26 b(let)h(the)g(set)f(of)h(their)f(indices)h(b)r
+(e)g(denoted)f(b)n(y)g Fk(I)2016 4428 y Fh(K)2081 4416
+y Fn(.)36 b(Then)27 b(w)n(e)f(can)g(de\014ne)h(a)f(matrix)3226
+4395 y(^)3204 4416 y Fk(A)3266 4386 y Fh(K)330 4516 y
+Fn(of)33 b(\(small)g(dimension\))g Fk(N)1182 4528 y Fh(K)1268
+4516 y Fj(\002)21 b Fk(N)1421 4528 y Fh(K)1518 4516 y
+Fn(holding)33 b(these)g(nonzero)f(en)n(tries,)h(and)g(w)n(e)g(can)f
+(obtain)330 4615 y(bac)n(k)27 b(the)h(original)e(con)n(tribution)h
+Fk(A)1502 4627 y Fh(K)1594 4615 y Fn(to)g Fk(A)h Fn(b)n(y)f(the)h
+(transformation)585 4840 y Fk(A)647 4806 y Fh(K)647 4861
+y(ij)734 4840 y Fn(=)822 4723 y Fg(\032)925 4780 y Fn(0)568
+b(if)28 b Fk(i)23 b Fj(62)g Fk(I)1777 4792 y Fh(K)1869
+4780 y Fn(or)k Fk(j)h Fj(62)23 b Fk(I)2147 4792 y Fh(K)2212
+4780 y Fn(,)947 4867 y(^)925 4888 y Fk(A)987 4858 y Fh(K)987
+4915 y(local)p Fi(\()p Fh(i)p Fi(\))p Fh(;local)p Fi(\()p
+Fh(j)s Fi(\))1535 4888 y Fn(otherwise)o Fk(;)2466 4840
+y Fn(0)g Fj(\024)f Fk(i;)14 b(j)28 b Fj(\024)23 b Fk(N)k
+Fj(\000)18 b Fn(1)p Fk(:)330 5070 y Fn(Here,)27 b Fk(l)r(ocal)r
+Fn(\()p Fk(i)p Fn(\))f(giv)n(es)g(the)h(n)n(um)n(b)r(er)g(of)g(the)h
+(global)e(degree)g(of)h(freedom)f Fk(i)h Fn(on)g(the)g(cell)g
+Fk(K)6 b Fn(,)27 b(i.e.)330 5170 y(the)i(p)r(osition)f(of)h
+Fk(i)f Fn(in)h(the)g(index)f(set)h Fk(I)1577 5182 y Fh(K)1641
+5170 y Fn(.)40 b(One)28 b(could)g(call)2277 5149 y(^)2256
+5170 y Fk(A)2318 5140 y Fh(K)2410 5170 y Fn(the)h Fm(reduced)d
+Fn(form)i(of)h Fk(A)3243 5140 y Fh(K)3307 5170 y Fn(,)330
+5269 y(since)e(the)h(man)n(y)f(zero)g(ro)n(ws)f(and)h(column)h(ha)n(v)n
+(e)e(b)r(een)i(stripp)r(ed.)455 5369 y(In)k(general,)g(when)h(assem)n
+(bling)e(the)h(global)f(matrix,)i(the)g(rev)n(erse)d(w)n(a)n(y)h(is)i
+(used:)46 b(when)330 5469 y(adding)27 b(up)h Fk(A)784
+5439 y Fh(K)876 5469 y Fn(to)f Fk(A)p Fn(,)h(w)n(e)g(do)f(so)g(only)g
+(with)1823 5448 y(^)1801 5469 y Fk(A)1863 5439 y Fh(K)1955
+5469 y Fn(b)n(y)898 5639 y Fk(A)960 5654 y Fh(g)r(lobal)p
+Fi(\()p Fh(i)p Fi(\))p Fh(;g)r(lobal)p Fi(\()p Fh(j)s
+Fi(\))1492 5639 y Fn(+)-5 b(=)1662 5618 y(^)1640 5639
+y Fk(A)1702 5604 y Fh(K)1702 5659 y(ij)2098 5639 y Fn(0)23
+b Fj(\024)f Fk(i;)14 b(j)28 b Fj(\024)23 b Fk(N)2533
+5651 y Fh(K)2615 5639 y Fj(\000)18 b Fn(1)p Fk(:)1809
+5919 y Fn(2)p eop
+%%Page: 3 3
+3 2 bop 330 390 a Fn(Th)n(us,)34 b(indices)f(only)g(run)f(o)n(v)n(er)f
+(the)j(\(small\))f(range)f(0)14 b Fk(:)g(:)g(:)f(N)2277
+402 y Fh(K)2362 390 y Fj(\000)22 b Fn(1)32 b(instead)h(of)g(0)14
+b Fk(:)g(:)g(:)f(N)31 b Fj(\000)21 b Fn(1.)330 490 y(Here,)30
+b Fk(g)s(l)r(obal)r Fn(\()p Fk(i)p Fn(\))e(denotes)h(the)h(global)f(n)n
+(um)n(b)r(er)g(of)h(the)g(degree)f(of)g(freedom)h(with)g(n)n(um)n(b)r
+(er)f Fk(i)330 589 y Fn(on)34 b(this)g(cell)g Fk(K)6
+b Fn(,)35 b(i.e.)56 b Fk(g)s(l)r(obal)r Fn(\()p Fk(i)p
+Fn(\))31 b(=)j Fk(I)1547 601 y Fh(K)1611 589 y Fn([)p
+Fk(i)p Fn(],)h(where)f(the)g(brac)n(k)n(et)e(op)r(erator)h(returns)g
+(the)h Fk(i)p Fn(th)330 689 y(elemen)n(t)28 b(of)f(the)h(set)g
+Fk(I)1040 701 y Fh(K)1104 689 y Fn(.)455 789 y(The)c(main)g(part)g(of)g
+(assem)n(bling)f(\014nite)h(elemen)n(t)h(matrices)e(is)h(therefore)f
+(to)i(assem)n(ble)e(the)330 888 y(lo)r(cal)35 b(matrix)833
+867 y(^)811 888 y Fk(A)873 858 y Fh(K)937 888 y Fn(.)60
+b(Before)34 b(w)n(e)h(go)f(on)h(with)g(discussing)g(ho)n(w)f(this)i(is)
+f(done)f(in)i Fm(deal.II)p Fn(,)330 988 y(w)n(e)e(w)n(ould)g(lik)n(e)h
+(to)f(commen)n(t)h(on)f(the)h(ev)-5 b(aluation)34 b(of)g(the)h(in)n
+(tegrals)e(in)n(v)n(olv)n(ed.)57 b(Since)35 b(the)330
+1088 y(in)n(tegrals)i(are)g(usually)g(to)r(o)h(complex)f(to)h(b)r(e)h
+(ev)-5 b(aluated)37 b(exactly)h(\(they)g(ma)n(y)g(dep)r(end)g(on)330
+1187 y(co)r(e\016cien)n(ts)24 b(app)r(earing)g(in)h(the)g(equation,)g
+(or)f(the)h(solution)f(of)h(previous)e(steps)i(in)g(nonlinear)330
+1287 y(or)33 b(time-dep)r(enden)n(t)h(problems\),)h(they)f(are)f(appro)
+n(ximated)f(b)n(y)h(quadrature.)54 b(Assume)33 b(w)n(e)330
+1386 y(ha)n(v)n(e)18 b(a)g(quadrature)g(form)n(ula)g(with)h
+Fk(N)1535 1398 y Fh(q)1590 1386 y Fn(p)r(oin)n(ts)g Fk(x)1878
+1398 y Fh(q)1934 1386 y Fn(de\014ned)g(on)g(cell)g(in)g(real)f(space)g
+(\(as)h(opp)r(osed)330 1486 y(to)31 b(the)h(unit)g(cell\))g(and)f(w)n
+(eigh)n(ts)g Fk(w)1469 1498 y Fh(q)1506 1486 y Fn(.)48
+b(Then,)33 b(for)e(example)g(for)f(the)i(Laplace)f(equation,)g(w)n(e)
+330 1586 y(appro)n(ximate)679 1833 y(^)658 1854 y Fk(A)720
+1819 y Fh(K)720 1874 y(ij)807 1854 y Fj(\021)895 1741
+y Fg(Z)941 1929 y Fh(K)1018 1854 y Fj(r)p Fk(')1141 1866
+y Fh(i)1188 1854 y Fj(\001)19 b(r)p Fk(')1353 1866 y
+Fh(j)1411 1854 y Fk(dx)24 b Fj(\031)1612 1741 y Fh(N)1665
+1749 y Fc(q)1698 1741 y Ff(\000)p Fi(1)1638 1775 y Fg(X)1639
+1950 y Fh(q)r Fi(=0)1797 1854 y Fj(r)p Fk(')1920 1866
+y Fh(i)1948 1854 y Fn(\()p Fk(x)2027 1866 y Fh(q)2064
+1854 y Fn(\))19 b Fj(\001)g(r)p Fk(')2280 1866 y Fh(j)2315
+1854 y Fn(\()p Fk(x)2394 1866 y Fh(q)2432 1854 y Fn(\))27
+b Fk(w)2550 1866 y Fh(q)2588 1854 y Fj(j)p Fn(det)h Fk(J)8
+b Fn(\()d(^)-47 b Fk(x)2887 1866 y Fh(q)2924 1854 y Fn(\))p
+Fj(j)p Fk(:)222 b Fn(\(3\))330 2119 y(F)-7 b(or)28 b(other)g(problems,)
+g(the)h(in)n(tegrand)f(is)h(di\013eren)n(t,)g(but)g(the)g(principle)g
+(remains)f(the)h(same.)330 2218 y(det)i Fk(J)8 b Fn(\()d(^)-47
+b Fk(x)609 2230 y Fh(q)647 2218 y Fn(\))31 b(denotes)f(the)h
+(determinan)n(t)f(of)h(the)g(Jacobian)e(of)i(the)g(transformation)e(b)r
+(et)n(w)n(een)330 2318 y(the)e(unit)g(cell)g(on)f(whic)n(h)h(the)g
+(quadrature)e(w)n(eigh)n(ts)h(are)f(de\014ned,)i(and)g(the)g(real)f
+(cell,)g(and)32 b(^)-47 b Fk(x)3293 2330 y Fh(q)330 2417
+y Fn(is)25 b(the)h(p)r(oin)n(t)f(on)h(the)f(unit)h(cell)g(corresp)r
+(onding)d(to)i(the)h(quadrature)e(p)r(oin)n(t)h Fk(x)2796
+2429 y Fh(q)2859 2417 y Fn(in)g(real)g(space.)455 2517
+y(Since)37 b(all)h(matrices)e(and)i(righ)n(t)e(hand)i(side)f(v)n
+(ectors)f(only)i(require)e(kno)n(wledge)g(of)i(the)330
+2617 y(v)-5 b(alues)19 b(and)h(gradien)n(ts)e(of)i(shap)r(e)g
+(functions)g(at)g(quadrature)e(p)r(oin)n(ts,)j(this)g(is)e(all)h(that)g
+Fm(deal.II)330 2716 y Fn(usually)38 b(pro)n(vides.)69
+b(One)38 b(can)g(see)h(this)g(as)f(a)g(kind)h(of)f Fl(view)49
+b Fn(on)39 b(a)f(\014nite)h(elemen)n(t,)j(as)c(it)330
+2816 y(only)f(pro)n(vides)f(a)g(certain)h(p)r(ersp)r(ectiv)n(e)g(on)g
+(the)g(actual)g(de\014nition)h(of)f(a)f(shap)r(e)h(function.)330
+2916 y(Nev)n(ertheless,)21 b(this)f(is)g(en)n(tirely)f(su\016cien)n(t)i
+(for)e(all)h(purp)r(oses)f(of)h(programming)e(\014nite)j(elemen)n(t)330
+3015 y(programs.)455 3115 y(In)g Fm(deal.II)d Fn(the)j
+Fm(FEValues)d Fn(class)i(do)r(es)g(this:)34 b(y)n(ou)20
+b(giv)n(e)g(it)i(a)e(\014nite)i(elemen)n(t)f(de\014nition,)h(a)330
+3214 y(quadrature)i(form)n(ula)g(ob)5 b(ject,)25 b(and)g(an)g(ob)5
+b(ject)24 b(de\014ning)i(the)f(transformation)e(b)r(et)n(w)n(een)i
+(unit)330 3314 y(and)j(real)g(cell,)g(and)h(it)f(pro)n(vides)f(y)n(ou)h
+(with)h(the)g(v)-5 b(alues,)28 b(gradien)n(t,)f(and)h(second)g(deriv)-5
+b(ativ)n(es)330 3414 y(of)25 b(shap)r(e)g(functions)h(at)f(the)g
+(quadrature)f(p)r(oin)n(ts.)36 b(It)26 b(also)e(giv)n(es)g(access)g(to)
+h(the)g(determinan)n(t)330 3513 y(of)k(the)h(Jacobian,)e(although)g
+(only)h(m)n(ultiplied)h(with)g Fk(w)2120 3525 y Fh(q)2186
+3513 y Fn(as)f(these)g(t)n(w)n(o)f(are)g(alw)n(a)n(ys)g(used)h(in)330
+3613 y(conjunction.)55 b(It)33 b(also)g(pro)n(vides)f(y)n(ou)h(with)g
+(man)n(y)g(other)g(\014elds,)i(suc)n(h)e(as)g(normal)g(v)n(ectors)330
+3713 y(to)i(the)h(outer)f(b)r(oundary)-7 b(.)59 b(In)35
+b(practice)g(y)n(ou)g(do)g(not)g(need)g(them)h(all)f(computed)h(on)f
+(eac)n(h)330 3812 y(cell;)44 b(th)n(us,)d(y)n(ou)d(ha)n(v)n(e)f(to)i
+(sp)r(ecify)g(explicitly)f(in)h(whic)n(h)g(data)f(y)n(ou)f(are)h(in)n
+(terested)g(when)330 3912 y(constructing)28 b Fm(FEValues)c
+Fn(ob)5 b(jects.)455 4011 y(In)20 b(the)i(follo)n(wing,)f(w)n(e)f(pro)n
+(vide)g(a)g(list)h(of)g(connections)f(b)r(et)n(w)n(een)g(the)h(sym)n(b)
+r(ols)f(in)n(tro)r(duced)330 4111 y(ab)r(o)n(v)n(e,)38
+b(and)e(the)h(resp)r(ectiv)n(e)f(functions)h(and)g(v)-5
+b(ariable)36 b(names)g(used)h(in)g(t)n(ypical)f Fm(deal.II)330
+4211 y Fn(programs.)e(With)27 b(this,)g(w)n(e)f(will)h(subsequen)n(tly)
+e(sho)n(w)h(the)h(basic)e(structure)h(of)g(an)g(assem)n(bly)330
+4310 y(routine.)45 b(If)31 b(y)n(ou)f(ha)n(v)n(e)f(already)g(tak)n(en)h
+(a)h(lo)r(ok)e(at)i(the)g(example)f(programs)e(pro)n(vided)i(with)330
+4410 y Fm(deal.II)p Fn(,)d(y)n(ou)i(will)i(recognize)d(all)i(these)g
+(names.)43 b(If)31 b(y)n(ou)e(ha)n(v)n(en't,)h(this)g(w)n(ould)g(b)r(e)
+g(a)g(go)r(o)r(d)330 4510 y(time)e(to)g(lo)r(ok)e(at)i(the)g(\014rst)f
+(three)h(of)f(them.)p 690 4604 2280 4 v 688 4703 4 100
+v 740 4674 a Fk(A)498 b Fm(system)p 1569 4674 27 4 v
+29 w(matrix)p 2968 4703 4 100 v 688 4812 4 109 v 762
+4761 a Fn(^)740 4782 y Fk(A)802 4752 y Fh(K)1300 4782
+y Fm(cell)p 1481 4782 27 4 v 30 w(matrix)p 2968 4812
+4 109 v 688 4912 4 100 v 740 4882 a Fk(K)489 b Fm(cell)p
+2968 4912 V 688 5011 V 740 4981 a Fk(N)k Fm(dof)p 1437
+4981 27 4 v 30 w(handler.n)p 1863 4981 V 28 w(dofs\(\))p
+2968 5011 4 100 v 688 5111 V 740 5081 a Fk(N)807 5093
+y Fh(K)1300 5081 y Fm(fe.dofs)p 1613 5081 27 4 v 29 w(per)p
+1774 5081 V 30 w(cell)p 2968 5111 4 100 v 688 5210 V
+740 5181 a Fk(I)776 5193 y Fh(K)1300 5181 y Fm(local)p
+1525 5181 27 4 v 29 w(dof)p 1686 5181 V 31 w(indices)p
+2968 5210 4 100 v 688 5310 V 740 5280 a Fk(N)807 5292
+y Fh(q)1300 5280 y Fm(quadrature)p 1745 5280 27 4 v 27
+w(formula.n)p 2168 5280 V 28 w(quadrature)p 2636 5280
+V 27 w(points)p 2968 5310 4 100 v 688 5410 V 740 5380
+a Fk(')794 5392 y Fh(i)822 5380 y Fn(\()p Fk(x)901 5392
+y Fh(q)939 5380 y Fn(\))329 b Fm(fe)p 1393 5380 27 4
+v 31 w(values.shape)p 1952 5380 V 26 w(value\(i,q\))p
+2968 5410 4 100 v 688 5509 V 740 5479 a Fj(r)p Fk(')863
+5491 y Fh(i)891 5479 y Fn(\()p Fk(x)970 5491 y Fh(q)1008
+5479 y Fn(\))260 b Fm(fe)p 1393 5479 27 4 v 31 w(values.shape)p
+1952 5479 V 26 w(grad\(i,q\))p 2968 5509 4 100 v 688
+5609 V 740 5579 a Fk(x)787 5591 y Fh(q)1300 5579 y Fm(fe)p
+1393 5579 27 4 v 31 w(values.quadratu)o(re)p 2171 5579
+V 25 w(point\(q\))p 2968 5609 4 100 v 688 5709 V 740
+5679 a Fj(j)p Fn(det)q Fk(J)8 b Fn(\()d(^)-47 b Fk(x)1012
+5691 y Fh(q)1049 5679 y Fn(\))p Fj(j)p Fk(w)1163 5691
+y Fh(q)1300 5679 y Fm(fe)p 1393 5679 27 4 v 31 w(values.JxW\(q\))p
+2968 5709 4 100 v 690 5712 2280 4 v 1809 5919 a Fn(3)p
+eop
+%%Page: 4 4
+4 3 bop 455 390 a Fn(With)41 b(this)g(v)n(o)r(cabulary)-7
+b(,)42 b(the)f(t)n(ypical)f(matrix)g(assem)n(bly)g(lo)r(op)g(in)h
+Fm(deal.II)d Fn(has)i(the)330 490 y(follo)n(wing)27 b(form:)38
+b(\014rst)29 b(declare)e(a)h(quadrature)f(ob)5 b(ject)28
+b(and)g(use)h(it)f(for)g(the)h(initialization)f(of)330
+589 y(a)f Fm(FEValues)e Fn(ob)5 b(ject)27 b(as)g(discussed)g(ab)r(o)n
+(v)n(e:)417 743 y Fm(QGauss2<2>)83 b(quadrature_formul)o(a;)417
+842 y(FEValues<2>)39 b(fe_values)h(\(fe,)i(quadrature_formu)o(la,)1420
+942 y(UpdateFlags\(upd)o(ate)o(_v)o(alu)o(es)168 b(|)1943
+1042 y(update_gradient)o(s)38 b(|)1943 1141 y(update_JxW_valu)o(es\))o
+(\);)330 1295 y Fn(In)e(practice,)g(y)n(ou)f(ma)n(y)g(w)n(an)n(t)f(to)i
+(use)f(a)g(di\013eren)n(t)g(set)h(of)f(\014elds)h(to)f(b)r(e)h(up)r
+(dated)g(on)f(eac)n(h)330 1394 y(cell.)53 b(F)-7 b(or)32
+b(example)g(if)i(y)n(ou)e(do)g(not)h(need)g(the)g(v)-5
+b(alues)33 b(of)g(shap)r(e)f(functions)i(on)e(a)h(cell,)h(y)n(ou)330
+1494 y(ma)n(y)25 b(omit)h Fm(update)p 969 1494 27 4 v
+29 w(values)d Fn(from)i(the)h(list.)37 b(Also)25 b(note)g(that)h(b)n(y)
+g(default)g(a)f(bi-)h(or)e(tri-linear)330 1593 y(\(dep)r(ending)j(on)e
+(space)g(dimension\))i(mapping)e(b)r(et)n(w)n(een)h(unit)h(and)f(real)f
+(cell)g(is)h(used.)37 b(Other)330 1693 y(mappings)32
+b(are)g(p)r(ossible,)h(for)f(example)h(quadratic)e(ones,)i(or)f(a)g
+(mapping)h(that)g(mak)n(es)e(use)330 1793 y(of)e(the)h(fact)f(that)h
+(in)f(man)n(y)g(cases)f(cells)h(are)f(actually)h(rectangular,)f(rather)
+g(than)h(arbitrary)330 1892 y(quadrilaterals;)24 b(in)j(order)d(to)i
+(use)g(them,)h(another)e(constructor)f(of)i(the)h Fm(FEValues)22
+b Fn(class)j(can)330 1992 y(b)r(e)c(used,)h(whic)n(h)e(tak)n(es)f(a)h
+(mapping)g(ob)5 b(ject)20 b(as)g(\014rst)g(argumen)n(t,)h(b)r(efore)f
+(the)h(other)e(argumen)n(ts)330 2092 y(listed)28 b(ab)r(o)n(v)n(e.)455
+2191 y(Next)f(w)n(e)h(de\014ne)g(abbreviations)e(for)h(the)h(v)-5
+b(alues)27 b(of)g Fk(N)2213 2203 y Fh(K)2305 2191 y Fn(and)g
+Fk(N)2533 2203 y Fh(q)2570 2191 y Fn(:)417 2344 y Fm(const)42
+b(unsigned)e(int)592 2444 y(dofs_per_cell)e(=)43 b(fe.dofs_per_cell)o
+(,)592 2544 y(n_q_points)170 b(=)43 b(quadrature_formu)o(la)o(.n_)o(qu)
+o(adr)o(at)o(ur)o(e_p)o(oi)o(nts)o(;)330 2697 y Fn(Then)28
+b(ha)n(v)n(e)e(an)i(ob)5 b(ject)27 b(to)g(store)g(the)h(matrix)1845
+2676 y(^)1823 2697 y Fk(A)1885 2667 y Fh(K)1949 2697
+y Fn(,)g(whic)n(h)g(is)f(of)h(size)f Fk(N)2640 2709 y
+Fh(K)2722 2697 y Fj(\002)18 b Fk(N)2872 2709 y Fh(K)2936
+2697 y Fn(:)417 2850 y Fm(FullMatrix<double)o(>)124 b(cell_matrix)40
+b(\(dofs_per_cell,)d(dofs_per_cell\);)330 3003 y Fn(And)21
+b(an)f(ob)5 b(ject)20 b(represen)n(ting)f(the)i(set)g(of)f(global)f
+(indices)i(of)f(degrees)f(of)i(freedom,)g(previously)330
+3103 y(denoted)27 b(b)n(y)f Fk(I)793 3115 y Fh(K)858
+3103 y Fn(,)h(that)g(ha)n(v)n(e)e(supp)r(ort)i(on)f(the)h(presen)n(t)f
+(cell,)h(i.e.)37 b(those)26 b(degrees)g(of)h(freedom)330
+3203 y(lo)r(cal)g(to)g(the)h(presen)n(t)f(cell:)417 3356
+y Fm(std::vector<unsig)o(ne)o(d)37 b(int>)42 b(local_dof_indices)37
+b(\(dofs_per_cell\);)330 3509 y Fn(The)28 b(next)f(step)h(is)g(then)g
+(to)f(lo)r(op)g(o)n(v)n(er)f(all)i(cells:)417 3663 y
+Fm(typename)40 b(DoFHandler<dim>::)o(act)o(iv)o(e_c)o(el)o(l_)o(ite)o
+(ra)o(tor)635 3762 y(cell)i(=)h(dof_handler.begin)o(_a)o(cti)o(ve)o
+(\(\))o(,)635 3862 y(endc)f(=)h(dof_handler.end\(\))o(;)417
+3961 y(for)g(\(;)f(cell!=endc;)d(++cell\))504 4061 y({)330
+4214 y Fn(On)34 b(eac)n(h)g(cell,)i(\014rst)e(tell)h(the)f
+Fm(FEValues)e Fn(ob)5 b(ject)34 b(to)g(compute)g(the)h(v)-5
+b(alues)34 b(of)h(the)f(v)-5 b(arious)330 4314 y(\014elds)26
+b(for)f(this)h(particular)e(cell,)i(and)g(do)f(not)h(forget)f(to)g
+(reset)g(the)h(lo)r(cal)f(matrix)2953 4293 y(^)2931 4314
+y Fk(A)2993 4284 y Fh(K)3083 4314 y Fn(to)g(zero)330
+4414 y(b)r(efore)i(adding)g(it)h(up:)592 4567 y Fm(fe_values.reini)o(t)
+37 b(\(cell\);)592 4666 y(cell_matrix.cle)o(ar)g(\(\);)330
+4820 y Fn(No)n(w)32 b(comes)g(the)i(main)e(part,)i(assem)n(bling)e(the)
+h(lo)r(cal)f(matrix)2415 4799 y(^)2393 4820 y Fk(A)2455
+4790 y Fh(K)2520 4820 y Fn(.)52 b(It)33 b(consists)f(of)h(a)f(lo)r(op)
+330 4919 y(o)n(v)n(er)26 b(all)i(indices)g(0)23 b Fj(\024)g
+Fk(i;)14 b(j)28 b Fj(\024)c Fk(N)1334 4931 y Fh(K)1425
+4919 y Fn(and)k(all)g(quadrature)e(p)r(oin)n(ts)i(0)23
+b Fj(\024)h Fk(q)i Fj(\024)e Fk(N)2753 4931 y Fh(q)2789
+4919 y Fn(,)k(and)g(summing)330 5019 y(up)35 b(the)h(con)n(tributions.)
+59 b(As)35 b(this)g(is)g(what)g(w)n(e)g(will)g(discuss)g(in)g(detail)g
+(later)g(on,)i(w)n(e)d(only)330 5119 y(denote)28 b(it)g(here)f(b)n(y)g
+(an)g(ellipse:)592 5272 y Fm(for)42 b(\(unsigned)e(int)i(i=0;)g
+(i<dofs_per_cell;)37 b(++i\))679 5372 y(for)42 b(\(unsigned)e(int)i
+(j=0;)g(j<dofs_per_cell;)37 b(++j\))766 5471 y(for)42
+b(\(unsigned)e(int)i(q=0;)g(q<n_q_points;)d(++q\))853
+5571 y(cell_matrix\(i,j\))e(+=)43 b(...;)1809 5919 y
+Fn(4)p eop
+%%Page: 5 5
+5 4 bop 330 390 a Fn(After)25 b(w)n(e)f(ha)n(v)n(e)874
+369 y(^)852 390 y Fk(A)914 360 y Fh(K)978 390 y Fn(,)h(w)n(e)g(still)g
+(ha)n(v)n(e)e(to)i(sum)f(it)i(in)n(to)e(the)h(global)e(matrix)i
+Fk(A)p Fn(.)36 b(This)24 b(is)h(done)f(b)n(y)330 490
+y(\014rst)i(getting)g(the)h(set)f Fk(I)1086 502 y Fh(K)1177
+490 y Fn(of)g(the)g(global)f(indices)i(of)f(the)g(shap)r(e)h(functions)
+f(that)h(w)n(ere)e(activ)n(e)330 589 y(on)i(this)h(cell,)g(and)f(then)h
+(distributing)1603 568 y(^)1581 589 y Fk(A)1643 559 y
+Fh(K)1707 589 y Fn(:)592 750 y Fm(cell->get_dof_i)o(nd)o(ice)o(s)37
+b(\(local_dof_indice)o(s\);)592 950 y(for)42 b(\(unsigned)e(int)i(i=0;)
+g(i<dofs_per_cell;)37 b(++i\))679 1049 y(for)42 b(\(unsigned)e(int)i
+(j=0;)g(j<dofs_per_cell;)37 b(++j\))766 1149 y(system_matrix.ad)o(d)g
+(\(local_dof_indice)o(s[i)o(],)1594 1248 y(local_dof_indice)o(s[j)o(],)
+1594 1348 y(cell_matrix\(i,j\))o(\);)504 1448 y(};)330
+1608 y Fn(When)28 b(this)g(is)g(done,)f(w)n(e)g(go)g(on)g(to)h(the)g
+(next)f(cell.)455 1708 y(Within)c(this)f(framew)n(ork,)f(the)h(only)g
+(op)r(en)g(p)r(oin)n(t)g(is)g(assem)n(bling)2548 1687
+y(^)2526 1708 y Fk(A)2588 1678 y Fh(K)2674 1708 y Fn(on)g(one)g
+(quadrature)330 1808 y(p)r(oin)n(t.)37 b(This)28 b(will)f(b)r(e)h(sub)5
+b(ject)28 b(of)g(the)g(rest)f(of)g(this)h(rep)r(ort.)330
+2081 y Fo(3)135 b(Assem)l(bling)45 b(scalar)h(problems)330
+2274 y Fn(F)-7 b(or)22 b(scalar)f(problems,)i(assem)n(bling)1516
+2253 y(^)1494 2274 y Fk(A)1556 2243 y Fh(K)1643 2274
+y Fn(is)f(relativ)n(ely)g(simple.)35 b(With)24 b(the)f(terms)f(in)n
+(tro)r(duced)330 2373 y(ab)r(o)n(v)n(e,)k(and)i(for)f(the)h(Laplace)e
+(equation,)h(this)h(lo)r(oks)f(as)g(follo)n(ws:)417 2534
+y Fm(local_matrix\(i,j\))37 b(+=)42 b(\(fe_values.shape_)o(gra)o(d\()o
+(i,q)o(_p)o(oi)o(nt\))37 b(*)1376 2634 y(fe_values.shape_)o(gra)o(d\()o
+(j,q)o(_p)o(oi)o(nt\))g(*)1376 2733 y(fe_values.JxW)h(\(q_point\)\);)
+330 2894 y Fn(This)28 b(term)g(is)g(placed)g(in)g(the)h(innermost)f(lo)
+r(op,)g(i.e.)38 b(is)28 b(p)r(erformed)g(for)f(all)h(indices)g
+Fk(i;)14 b(j)5 b Fn(,)28 b(and)330 2994 y(all)f(quadrature)f(p)r(oin)n
+(ts)i Fm(q)p 1171 2994 27 4 v 31 w(point)p Fn(.)455 3093
+y(F)-7 b(or)30 b(nonsymmetric)h(problems,)h(the)g(order)e(of)i(terms)f
+(has)g(to)h(b)r(e)g(considered,)f(as)g(men-)330 3193
+y(tioned)d(ab)r(o)n(v)n(e.)35 b(F)-7 b(or)27 b(example,)g(for)g(the)h
+(adv)n(ection)f(equation)1627 3369 y Fk(\014)22 b Fj(\001)d(r)p
+Fk(u)k Fn(=)f Fk(f)t(;)330 3545 y Fn(with)28 b(whic)n(h)g(the)g
+(bilinear)f(form)1444 3721 y Fk(a)p Fn(\()p Fk(u;)14
+b(v)s Fn(\))24 b(=)e(\()p Fk(\014)h Fj(\001)c(r)p Fk(u;)14
+b(v)s Fn(\))2164 3733 y Fi(\012)330 3897 y Fn(is)27 b(asso)r(ciated,)g
+(the)h(lo)r(cal)f(matrix)g(is)g(assem)n(bled)g(as)417
+4058 y Fm(local_matrix\(i,j\))37 b(+=)42 b(\(fe_values.shape_)o(val)o
+(ue)o(s\(i)o(,q)o(_p)o(oin)o(t\))37 b(*)1376 4158 y(\()43
+b(beta)f(*)h(fe_values.shape_g)o(ra)o(d\(j)o(,q)o(_po)o(in)o(t\))37
+b(\))43 b(*)1376 4257 y(fe_values.JxW)38 b(\(q_point\)\);)330
+4418 y Fn(Here,)30 b Fm(beta)d Fn(is)j(an)f(ob)5 b(ject)29
+b(of)g(t)n(yp)r(e)h Fm(Tensor<1,dim>)p Fn(,)24 b(whic)n(h)29
+b(represen)n(ts)f(a)h(tensor)g(of)g(rank)330 4518 y(1)e(in)h
+Fm(dim)e Fn(space)h(dimensions.)455 4617 y(Assem)n(bling)d(matrices)h
+(for)g(scalar)e(problems)i(is)g(also)g(sho)n(wn)f(from)h(a)g(practical)
+g(p)r(ersp)r(ec-)330 4717 y(tiv)n(e)32 b(in)h(man)n(y)f(of)g(the)h
+(example)f(programs)f(of)38 b Fm(deal.II)p Fn(,)30 b(where)i(it)h(is)f
+(also)g(demonstrated)330 4817 y(ho)n(w)e(to)h(do)g(this)h(for)e(the)i
+(righ)n(t)e(hand)h(side)g(v)n(ectors.)46 b(Th)n(us,)31
+b(scalar)f(problems)g(are)g(not)h(to)r(o)330 4916 y(in)n(teresting,)c
+(and)g(w)n(e)h(no)n(w)f(turn)g(to)h(v)n(ector-v)-5 b(alued)26
+b(problems.)330 5190 y Fo(4)135 b(V)-11 b(ector-v)k(alued)44
+b(problems)330 5372 y Fn(Since)33 b(w)n(e)f(need)h(some)f(problems)g
+(at)h(whic)n(h)f(w)n(e)h(will)g(explain)f(assem)n(bling)f(the)i(matrix)
+g(for)330 5471 y(the)24 b(v)n(ector-v)-5 b(alued)22 b(case,)h(w)n(e)h
+(no)n(w)f(brie\015y)g(in)n(tro)r(duce)g(t)n(w)n(o)g(simple)g
+(equations.)35 b(The)24 b(\014rst)f(are)330 5571 y(the)31
+b(Lam)n(\023)-39 b(e)29 b(equations)g(of)i(elasticit)n(y)-7
+b(,)30 b(whic)n(h)g(are)g(tak)n(en)g(for)f(the)i(symmetric)f(case,)h
+(then)f(w)n(e)330 5670 y(brie\015y)d(in)n(tro)r(duce)g(the)h(Stok)n(es)
+f(equations)g(as)g(a)g(nonsymmetric)g(problem.)1809 5919
+y(5)p eop
+%%Page: 6 6
+6 5 bop 330 390 a Fb(4.1)112 b(The)38 b(elastic)g(equations)330
+543 y Fn(As)22 b(\014rst)g(example)f(for)g(the)i(metho)r(ds)f(w)n(e)f
+(are)g(going)g(to)h(discuss)f(for)h(v)n(ector-v)-5 b(alued)20
+b(problems,)330 643 y(w)n(e)k(consider)g(the)h(elastic)f(Lam)n(\023)-39
+b(e)23 b(equations)h(for)g(isotropic)f(materials,)h(whic)n(h)h(read)e
+(in)i(strong)330 743 y(form:)1188 842 y Fj(\000r)p Fn(\()p
+Fk(\025)19 b Fn(+)f Fk(\026)p Fn(\)\()p Fj(r)h(\001)f
+Fa(u)p Fn(\))h Fj(\000)f Fn(\()p Fj(r)h(\001)g Fk(\026)p
+Fj(r)p Fn(\))p Fa(u)k Fn(=)g Fa(f)9 b Fk(:)330 987 y
+Fn(These)34 b(equations)f(describ)r(e)g(the)i(three-dimensional)e
+(deformation)g Fa(u)h Fn(of)g(an)f(elastic)h(b)r(o)r(dy)330
+1087 y(under)27 b(a)g(b)r(o)r(dy)h(force)e Fa(f)9 b Fn(.)37
+b(The)28 b(resp)r(ectiv)n(e)e(bilinear)h(form)g(asso)r(ciated)f(with)i
+(this)g(op)r(erator)d(is)330 1186 y(then)868 1286 y Fk(a)p
+Fn(\()p Fa(u)p Fk(;)14 b Fa(v)q Fn(\))24 b(=)f(\(\()p
+Fk(\025)c Fn(+)f Fk(\026)p Fn(\))p Fj(r)h(\001)g Fa(u)p
+Fk(;)14 b Fj(r)k(\001)h Fa(v)q Fn(\))1958 1311 y Fi(\012)2028
+1286 y Fn(+)2111 1207 y Fg(X)2152 1386 y Fh(k)2244 1286
+y Fn(\()q Fk(\026)p Fj(r)p Fk(u)2444 1298 y Fh(k)2484
+1286 y Fk(;)14 b Fj(r)p Fk(v)2630 1298 y Fh(k)2671 1286
+y Fn(\))2704 1311 y Fi(\012)2769 1286 y Fk(;)330 1499
+y Fn(or)27 b(as)g(a)g(sum)h(o)n(v)n(er)d(comp)r(onen)n(ts:)828
+1685 y Fk(a)p Fn(\()p Fa(u)p Fk(;)14 b Fa(v)q Fn(\))24
+b(=)1189 1606 y Fg(X)1210 1785 y Fh(k)q(;l)1322 1685
+y Fn(\()q(\()p Fk(\025)19 b Fn(+)f Fk(\026)p Fn(\))p
+Fk(@)1663 1697 y Fh(l)1689 1685 y Fk(u)1737 1697 y Fh(l)1762
+1685 y Fk(;)c(@)1843 1697 y Fh(k)1884 1685 y Fk(v)1924
+1697 y Fh(k)1965 1685 y Fn(\))1997 1710 y Fi(\012)2067
+1685 y Fn(+)2150 1606 y Fg(X)2171 1785 y Fh(k)q(;l)2284
+1685 y Fn(\()p Fk(\026@)2410 1697 y Fh(l)2436 1685 y
+Fk(u)2484 1697 y Fh(k)2524 1685 y Fk(;)g(@)2605 1697
+y Fh(l)2630 1685 y Fk(v)2670 1697 y Fh(k)2711 1685 y
+Fn(\))2744 1710 y Fi(\012)2809 1685 y Fk(:)455 1951 y
+Fn(When)25 b(assem)n(bling)g(matrices,)g(it)h(is)f(adv)-5
+b(an)n(tageous)23 b(to)i(write)h(the)f(w)n(eak)g(form)g(\(i.e.)36
+b(after)330 2050 y(in)n(tegration)g(b)n(y)h(parts\))f(as)h(a)g(kind)g
+(of)g(op)r(erator.)64 b(This)37 b(is)g(since)g(matrix)f(elemen)n(ts)h
+(after)330 2150 y(discretization)27 b(are)f(de\014ned)i(as)1519
+2325 y Fk(A)1581 2337 y Fh(ij)1662 2325 y Fn(=)23 b Fk(a)p
+Fn(\()p Fk(')1880 2337 y Fh(j)1916 2325 y Fk(;)14 b(')2007
+2337 y Fh(i)2034 2325 y Fn(\))2066 2337 y Fi(\012)2118
+2325 y Fk(;)330 2499 y Fn(where)27 b Fk(')624 2511 y
+Fh(i)652 2499 y Fk(;)14 b(')743 2511 y Fh(j)805 2499
+y Fn(are)26 b(t)n(w)n(o)h(v)n(ector-v)-5 b(alued)26 b(trial)g
+(functions,)i(and)f(it)h(w)n(ould)f(b)r(e)g(nice)h(if)f(w)n(e)g(could)
+330 2599 y(write)33 b(the)g(bilinear)g(form)f Fk(a)p
+Fn(\()p Fj(\001)p Fk(;)14 b Fj(\001)p Fn(\))34 b(as)e(a)g(kind)i(of)f
+(scalar)e(pro)r(duct)i(\()p Fk(')2546 2611 y Fh(i)2574
+2599 y Fk(;)14 b(Q')2731 2611 y Fh(j)2766 2599 y Fn(\),)35
+b(where)d Fk(Q)h Fn(is)f(a)330 2699 y(di\013eren)n(tial)25
+b(op)r(erator.)34 b(This)25 b(is)g(trivial)f(if)i(w)n(e)e(tak)n(e)h
+Fk(Q)f Fn(as)h(the)g(op)r(erator)e(of)i(the)h(strong)d(form,)330
+2798 y Fk(Q)g Fn(=)f Fj(\000r)p Fn(\()p Fk(\025)11 b
+Fn(+)g Fk(\026)p Fn(\))p Fj(r)g(\001)g(\000)p Fn(\()p
+Fj(r)g(\001)g Fk(\026)p Fj(r)p Fn(\),)28 b(but)c(w)n(e)g(w)n(an)n(ted)f
+(to)h(do)g(this)g(for)g(the)g(w)n(eak)f(form.)35 b(F)-7
+b(or)24 b(this,)330 2898 y(w)n(e)33 b(in)n(tro)r(duce)h(some)f
+(notation)g(that)h(is)g(used)g(in)g(quan)n(tum)g(\014eld)g(theory:)48
+b(for)33 b(di\013eren)n(tial)330 2998 y(op)r(erators,)i(w)n(e)h
+(indicate)f(b)n(y)g(an)g(arro)n(w)f(placed)h(atop)g(of)g(it)h(whether)f
+(it)h(shall)f(act)h(on)f(the)330 3109 y(ob)5 b(ject)26
+b(to)h(the)g(left)g(or)f(to)h(the)g(righ)n(t)f(of)g(it.)37
+b(Th)n(us,)27 b Fk(')2006 3052 y Fj( )-65 b(\000)2013
+3109 y(r)24 b(\001)2145 3052 y(\000)-65 b(!)2152 3109
+y(r)7 b Fk( )26 b Fn(=)d(\()p Fj(r)p Fk(')p Fn(\))18
+b Fj(\001)e Fn(\()p Fj(r)p Fk( )s Fn(\).)38 b(With)27
+b(this,)g(a)330 3209 y(simple)h(computation)f(sho)n(ws)g(that)413
+3479 y Fk(a)p Fn(\()p Fa(u)p Fk(;)14 b Fa(v)q Fn(\))24
+b(=)f(\()p Fk(\025)c Fn(+)f Fk(\026)p Fn(\))1052 3337
+y Fg( )1118 3362 y(\022)1179 3428 y Fk(u)1227 3440 y
+Fi(1)1179 3528 y Fk(u)1227 3540 y Fi(2)1264 3362 y Fg(\023)1348
+3479 y Fj(j)1394 3337 y Fg( )1460 3370 y Fj( )-65 b(\000)1477
+3428 y Fk(@)1543 3440 y Fi(1)1580 3370 y Fj(\000)g(!)1597
+3428 y Fk(@)1663 3440 y Fi(1)1783 3370 y Fj( )g(\000)1801
+3428 y Fk(@)1866 3440 y Fi(1)1904 3370 y Fj(\000)g(!)1921
+3428 y Fk(@)1987 3440 y Fi(2)1460 3488 y Fj( )g(\000)1477
+3546 y Fk(@)1543 3558 y Fi(2)1580 3488 y Fj(\000)g(!)1597
+3546 y Fk(@)1663 3558 y Fi(1)1783 3488 y Fj( )g(\000)1801
+3546 y Fk(@)1866 3558 y Fi(2)1904 3488 y Fj(\000)g(!)1921
+3546 y Fk(@)1987 3558 y Fi(2)2024 3337 y Fg(!)2113 3479
+y Fj(j)2159 3362 y Fg(\022)2220 3428 y Fk(v)2260 3440
+y Fi(1)2220 3528 y Fk(v)2260 3540 y Fi(2)2297 3362 y
+Fg(\023)2359 3337 y(!)2424 3587 y Fi(\012)1361 3740 y
+Fn(+)18 b Fk(\026)1508 3623 y Fg(\022\022)1630 3690 y
+Fk(u)1678 3702 y Fi(1)1630 3789 y Fk(u)1678 3801 y Fi(2)1714
+3623 y Fg(\023)1799 3740 y Fj(j)1845 3648 y Fg(\020)1894
+3683 y Fj( )-65 b(\000)1911 3740 y Fk(@)1977 3752 y Fi(1)2015
+3683 y Fj(\000)g(!)2032 3740 y Fk(@)2098 3752 y Fi(1)2153
+3740 y Fn(+)2236 3683 y Fj( )g(\000)2253 3740 y Fk(@)2319
+3752 y Fi(2)2357 3683 y Fj(\000)g(!)2374 3740 y Fk(@)2440
+3752 y Fi(2)2477 3648 y Fg(\021)2540 3623 y(\022)2601
+3690 y Fn(1)83 b(0)2601 3789 y(0)g(1)2767 3623 y Fg(\023)2852
+3740 y Fj(j)2898 3623 y Fg(\022)2959 3690 y Fk(v)2999
+3702 y Fi(1)2959 3789 y Fk(v)2999 3801 y Fi(2)3036 3623
+y Fg(\023\023)3159 3823 y Fi(\012)3224 3740 y Fk(:)330
+3964 y Fn(The)28 b(sough)n(t)e(op)r(erator)g Fk(Q)h Fn(is)h(then)464
+4209 y Fk(Q)23 b Fn(=)f(\()p Fk(\025)d Fn(+)g Fk(\026)p
+Fn(\))919 4067 y Fg( )984 4101 y Fj( )-65 b(\000)1002
+4159 y Fk(@)1067 4171 y Fi(1)1105 4101 y Fj(\000)g(!)1122
+4159 y Fk(@)1188 4171 y Fi(1)1308 4101 y Fj( )g(\000)1325
+4159 y Fk(@)1391 4171 y Fi(1)1428 4101 y Fj(\000)g(!)1445
+4159 y Fk(@)1511 4171 y Fi(2)984 4219 y Fj( )g(\000)1002
+4277 y Fk(@)1067 4289 y Fi(2)1105 4219 y Fj(\000)g(!)1122
+4277 y Fk(@)1188 4289 y Fi(1)1308 4219 y Fj( )g(\000)1325
+4277 y Fk(@)1391 4289 y Fi(2)1428 4219 y Fj(\000)g(!)1445
+4277 y Fk(@)1511 4289 y Fi(2)1548 4067 y Fg(!)1633 4209
+y Fn(+)18 b Fk(\026)1780 4067 y Fg( )1845 4101 y Fj( )-65
+b(\000)1862 4159 y Fk(@)1928 4171 y Fi(1)1966 4101 y
+Fj(\000)g(!)1983 4159 y Fk(@)2049 4171 y Fi(1)2104 4159
+y Fn(+)2187 4101 y Fj( )g(\000)2204 4159 y Fk(@)2270
+4171 y Fi(2)2308 4101 y Fj(\000)g(!)2325 4159 y Fk(@)2391
+4171 y Fi(2)2781 4159 y Fn(0)2116 4277 y(0)2511 4219
+y Fj( )g(\000)2528 4277 y Fk(@)2594 4289 y Fi(1)2631
+4219 y Fj(\000)g(!)2648 4277 y Fk(@)2714 4289 y Fi(1)2770
+4277 y Fn(+)2853 4219 y Fj( )g(\000)2870 4277 y Fk(@)2936
+4289 y Fi(2)2973 4219 y Fj(\000)g(!)2990 4277 y Fk(@)3056
+4289 y Fi(2)3093 4067 y Fg(!)3173 4209 y Fk(;)330 4459
+y Fn(and)38 b Fk(a)p Fn(\()p Fa(u)p Fk(;)14 b Fa(v)q
+Fn(\))42 b(=)e(\()p Fa(u)p Fj(j)p Fk(Q)p Fj(j)p Fa(v)q
+Fn(\).)70 b(W)-7 b(e)38 b(demonstrate)f(the)i(fact)f(that)h
+Fk(Q)e Fn(acts)h(to)g(b)r(oth)h(sides)e(b)n(y)330 4558
+y(placing)e(it)h(in)f(the)h(middle)g(of)g(the)f(scalar)f(pro)r(duct,)k
+(just)e(as)f(in)g(the)h(bra-k)n(et)e(notation)h(of)330
+4658 y(quan)n(tum)28 b(ph)n(ysics.)455 4758 y(The)20
+b(adv)-5 b(an)n(tages)18 b(of)j(this)f(form)n(ulation)f(will)i(b)r
+(ecome)f(clear)f(when)i(discussing)e(assem)n(bling)330
+4857 y(matrices)k(b)r(elo)n(w.)36 b(F)-7 b(or)23 b(no)n(w,)h(w)n(e)g
+(remark)f(that)h(the)h(symmetry)e(of)h(the)h(w)n(eak)e(form)h(is)g
+(equally)330 4957 y(apparen)n(t)i(from)i(the)g(form)f(of)h
+Fk(Q)f Fn(as)g(w)n(ell)g(as)g(from)g(the)h(initial)g(de\014nition)g(of)
+g Fk(a)p Fn(\()p Fj(\001)p Fk(;)14 b Fj(\001)p Fn(\).)330
+5188 y Fb(4.2)112 b(The)38 b(Stok)m(es)g(equations)330
+5341 y Fn(F)-7 b(or)27 b(a)g(nonsymmetric)g(problem,)g(w)n(e)h(tak)n(e)
+e(the)i(Stok)n(es)f(equations:)1543 5516 y Fj(\000)p
+Fn(\001)p Fa(u)18 b Fn(+)g Fj(r)p Fk(p)23 b Fn(=)g(0)p
+Fk(;)1748 5641 y Fn(div)28 b Fa(u)23 b Fn(=)g(0)p Fk(:)1809
+5919 y Fn(6)p eop
+%%Page: 7 7
+7 6 bop 330 390 a Fn(W)-7 b(e)31 b(denote)f(b)n(y)h Fa(w)e
+Fn(=)e Fj(f)p Fa(u)p Fk(;)14 b(p)p Fj(g)30 b Fn(the)h(en)n(tire)f
+(solution)g(v)n(ector.)44 b(In)31 b(the)g(w)n(eak)f(form,)h(the)f(ab)r
+(o)n(v)n(e)330 490 y(equations)d(read)620 645 y Fk(a)p
+Fn(\()p Fa(u)p Fk(;)14 b(p)p Fn(;)g Fa(v)q Fk(;)g(q)s
+Fn(\))24 b(=)f Fk(\027)5 b Fn(\()p Fj(r)p Fa(u)1337 657
+y Fi(1)1375 645 y Fk(;)14 b Fj(r)p Fa(v)1531 657 y Fi(1)1568
+645 y Fn(\))19 b(+)f Fk(\027)5 b Fn(\()p Fj(r)p Fa(u)1902
+657 y Fi(2)1940 645 y Fk(;)14 b Fj(r)p Fa(v)2096 657
+y Fi(2)2134 645 y Fn(\))19 b Fj(\000)f Fn(\()p Fk(p;)c
+Fj(r)k(\001)h Fa(v)q Fn(\))g(+)f(\()p Fj(r)h(\001)g Fa(u)p
+Fk(;)14 b(q)s Fn(\))p Fk(:)330 799 y Fn(Since)34 b(w)n(e)f(in)n
+(tegrated)f(the)i(gradien)n(t)e(term)h(in)h(the)g(\014rst)f(equation)g
+(b)n(y)g(parts,)h(but)g(not)g(the)330 899 y(div)n(ergence)c(term)h(in)h
+(the)g(second)f(equation,)h(the)g(problem)e(is)i(no)n(w)f
+(nonsymmetric.)48 b(If)31 b(w)n(e)330 999 y(w)n(ould)g(ha)n(v)n(e)g
+(lik)n(ed,)h(w)n(e)f(could)h(ha)n(v)n(e)e(made)i(the)g(problem)f
+(symmetric)g(again)g(b)n(y)g(m)n(ultiply-)330 1098 y(ing)k(the)g(en)n
+(tire)f(second)g(equation)g(b)n(y)h Fj(\000)p Fn(1,)g(but)h(w)n(e)e
+(don't)h(w)n(an)n(t)f(to)h(do)f(that)h(for)f(no)n(w)h(for)330
+1198 y(illustrational)27 b(purp)r(oses.)455 1298 y(Again,)g(w)n(e)h(in)
+n(tro)r(duce)f(the)h(op)r(erator)e Fk(Q)i Fn(for)f(this)h(problem,)g
+(whic)n(h)g(after)f(some)g(compu-)330 1397 y(tations)g(turns)h(out)f
+(to)h(b)r(e)782 1658 y Fk(Q)23 b Fn(=)958 1467 y Fg(0)958
+1613 y(B)958 1666 y(@)1031 1549 y Fk(\027)5 b Fn(\()1109
+1491 y Fj( )-65 b(\000)1127 1549 y Fk(@)1192 1561 y Fi(1)1230
+1491 y Fj(\000)g(!)1247 1549 y Fk(@)1313 1561 y Fi(1)1368
+1549 y Fn(+)1451 1491 y Fj( )g(\000)1469 1549 y Fk(@)1534
+1561 y Fi(2)1572 1491 y Fj(\000)g(!)1589 1549 y Fk(@)1655
+1561 y Fi(2)1692 1549 y Fn(\))409 b(0)g Fj(\000)2649
+1491 y( )-65 b(\000)2665 1549 y Fk(@)2731 1561 y Fi(1)1357
+1667 y Fn(0)408 b Fk(\027)5 b Fn(\()1885 1609 y Fj( )-65
+b(\000)1903 1667 y Fk(@)1969 1679 y Fi(1)2006 1609 y
+Fj(\000)g(!)2023 1667 y Fk(@)2089 1679 y Fi(1)2145 1667
+y Fn(+)2228 1609 y Fj( )g(\000)2245 1667 y Fk(@)2311
+1679 y Fi(2)2348 1609 y Fj(\000)g(!)2365 1667 y Fk(@)2431
+1679 y Fi(2)2468 1667 y Fn(\))84 b Fj(\000)2649 1609
+y( )-65 b(\000)2665 1667 y Fk(@)2731 1679 y Fi(2)1317
+1727 y Fj(\000)g(!)1335 1785 y Fk(@)1400 1797 y Fi(1)2094
+1727 y Fj(\000)g(!)2111 1785 y Fk(@)2177 1797 y Fi(2)2655
+1785 y Fn(0)2769 1467 y Fg(1)2769 1613 y(C)2769 1666
+y(A)2855 1658 y Fk(:)330 1936 y Fn(Again,)22 b(it)g(is)g(clear)e(from)h
+(this)h(form)f(that)h(w)n(e)f(could)g(ha)n(v)n(e)f(made)i(the)g(op)r
+(erator)d(symmetric)i(b)n(y)330 2035 y(m)n(ultiplying)i(the)g(last)g
+(ro)n(w)f(b)n(y)g Fj(\000)p Fn(1.)35 b(Note)23 b(when)g(c)n(hec)n(king)
+e(the)j(symmetry)e(of)h Fk(Q)g Fn(that)g(taking)330 2135
+y(the)j(transp)r(ose)e(of)h(suc)n(h)h(an)f(op)r(erator)e(means)i(rev)n
+(erting)f(the)i(directions)f(of)g(the)h(arro)n(ws)d(o)n(v)n(er)330
+2235 y(the)k(op)r(erators,)e(and)i(exc)n(hanging)e(their)i(order.)36
+b(F)-7 b(or)26 b(example,)g(using)h(the)g(\014rst)g(term,)g(these)330
+2347 y(t)n(w)n(o)g(steps)g(are)834 2290 y Fj( )-65 b(\000)851
+2347 y Fk(@)917 2359 y Fi(1)954 2290 y Fj(\000)g(!)971
+2347 y Fk(@)1037 2359 y Fi(1)1097 2347 y Fj(!)1204 2290
+y(\000)g(!)1221 2347 y Fk(@)1287 2359 y Fi(1)1324 2290
+y Fj( )g(\000)1341 2347 y Fk(@)1407 2359 y Fi(1)1467
+2347 y Fj(!)1573 2290 y( )g(\000)1590 2347 y Fk(@)1656
+2359 y Fi(1)1694 2290 y Fj(\000)g(!)1711 2347 y Fk(@)1777
+2359 y Fi(1)1814 2347 y Fn(.)330 2617 y Fo(5)135 b(Assem)l(bling)37
+b(v)l(ector-v)-7 b(alued)38 b(problems:)57 b(The)36 b(simple)532
+2766 y(case)330 2948 y Fn(The)j(simple)g(case)f(in)h(assem)n(bling)e(v)
+n(ector-v)-5 b(alued)37 b(problems)h(is)h(when)g(the)g(\(also)f(v)n
+(ector-)330 3048 y(v)-5 b(alued\))31 b(shap)r(e)g(functions)g(are)e(c)n
+(hosen)h(suc)n(h)h(that)g(only)f(one)g(comp)r(onen)n(t)h(in)g(the)g(v)n
+(ector)e(is)330 3148 y(nonzero.)38 b(This)29 b(is)f(usually)h(the)f
+(case,)g(if)i(w)n(e)e(c)n(ho)r(ose)f(the)i(shap)r(e)f(functions)h(to)g
+(b)r(e)g(the)g(outer)330 3247 y(pro)r(duct)34 b(of)g(scalar)e(shap)r(e)
+i(functions,)i(suc)n(h)d(as)g(indep)r(enden)n(t)i(bilinear)f(ansatz)f
+(spaces)g(for)330 3347 y(eac)n(h)27 b(comp)r(onen)n(t)g(of)h(a)f
+(\014nite)h(elemen)n(t)g(space.)455 3446 y(In)f(this)h(case,)f(eac)n(h)
+g(shap)r(e)g(function)h(\010)1724 3458 y Fh(i)1780 3446
+y Fn(has)f(the)h(represen)n(tation)1194 3601 y(\010)1254
+3613 y Fh(i)1281 3601 y Fn(\()p Fa(x)p Fn(\))c(=)f(\(0)p
+Fk(;)14 b(:)g(:)g(:)f(;)h Fn(0)p Fk(;)g(')1898 3613 y
+Fh(i)1926 3601 y Fn(\()p Fa(x)p Fn(\))p Fk(;)g Fn(0)p
+Fk(;)g(:)g(:)g(:)f(;)h Fn(0\))2377 3559 y Fh(T)2443 3601
+y Fk(;)330 3756 y Fn(where)27 b(\010)630 3768 y Fh(i)686
+3756 y Fn(is)g(the)h(v)n(ector-v)-5 b(alued)26 b(shap)r(e)i(function,)g
+(and)f Fk(')2219 3768 y Fh(i)2275 3756 y Fn(its)h(only)f(non-zero)f
+(comp)r(onen)n(t.)330 3856 y(Let)34 b(us)f(denote)g(b)n(y)h
+Fk(c)p Fn(\()p Fk(i)p Fn(\))f(the)h(index)g(of)f(this)h(non-zero)d
+(comp)r(onen)n(t,)k(then)f(\010)2853 3868 y Fh(i)2914
+3856 y Fn(can)f(also)g(b)r(e)330 3955 y(written)28 b(as)1425
+4110 y(\(\010)1517 4122 y Fh(i)1545 4110 y Fn(\()p Fa(x)p
+Fn(\)\))1692 4135 y Fh(l)1740 4110 y Fn(=)23 b Fk(')1882
+4122 y Fh(i)1910 4110 y Fn(\()p Fa(x)p Fn(\))p Fk(\016)2061
+4125 y Fh(c)p Fi(\()p Fh(i)p Fi(\))p Fh(;l)2212 4110
+y Fk(;)330 4265 y Fn(with)28 b(the)g(Kronec)n(k)n(er)d(delta)i
+(function)i Fk(\016)1627 4277 y Fh(j)s(k)1698 4265 y
+Fn(.)455 4365 y(With)f(this)g(simple)g(form,)f(the)h(cell)g(matrix)f
+(on)g(cell)h Fk(K)33 b Fn(has)27 b(a)g(simple)h(form:)751
+4519 y Fk(A)813 4485 y Fh(K)813 4540 y(ij)900 4519 y
+Fn(=)22 b Fk(a)1031 4531 y Fh(K)1095 4519 y Fn(\(\010)1187
+4531 y Fh(i)1215 4519 y Fk(;)14 b Fn(\010)1312 4531 y
+Fh(j)1347 4519 y Fn(\))23 b(=)g(\(\010)1582 4531 y Fh(i)1633
+4519 y Fj(j)g Fk(Q)g Fj(j)g Fn(\010)1874 4531 y Fh(j)1909
+4519 y Fn(\))1941 4547 y Fh(K)2028 4519 y Fn(=)2116 4452
+y Fg(\000)2154 4519 y Fk(')2208 4531 y Fh(i)2259 4519
+y Fj(j)g Fk(Q)2371 4534 y Fh(c)p Fi(\()p Fh(i)p Fi(\))p
+Fh(;c)p Fi(\()p Fh(j)s Fi(\))2635 4519 y Fj(j)g Fk(')2735
+4531 y Fh(j)2771 4452 y Fg(\001)2809 4553 y Fh(K)2886
+4519 y Fk(:)330 4674 y Fn(Th)n(us,)35 b(in)e(assem)n(bling)f(the)i(lo)r
+(cal)f(cell)g(matrices,)h(w)n(e)f(only)g(ha)n(v)n(e)f(to)h(determine)h
+(the)g(single)330 4774 y(comp)r(onen)n(ts)d(in)h(whic)n(h)g(the)g(t)n
+(w)n(o)f(shap)r(e)h(functions)g(are)e(non-zero,)i(and)f(pic)n(k)h(one)f
+(elemen)n(t)330 4873 y(from)h(the)g(matrix)g Fk(Q)f Fn(to)h(assem)n
+(ble)f(eac)n(h)g(en)n(try)h(of)g(the)g(cell)g(matrix)g(with)g(the)g
+(help)h(of)f(the)330 4973 y(v)-5 b(alues)29 b(of)f(the)i(functions)f
+Fk(')1232 4985 y Fh(i)1289 4973 y Fn(at)g(the)g(quadrature)e(p)r(oin)n
+(ts.)41 b(Here,)29 b(it)g(comes)g(handy)f(that)h(w)n(e)330
+5073 y(ha)n(v)n(e)k(written)i(the)f(op)r(erator)f(as)h(a)g(matrix)g(op)
+r(erator)e Fk(Q)p Fn(,)k(since)e(this)h(mak)n(es)e(it)i(v)n(ery)e
+(clear)330 5172 y(ho)n(w)27 b(shap)r(e)g(functions)h
+Fk(i)f Fn(and)g Fk(j)32 b Fn(couple:)37 b(if)28 b Fk(Q)1810
+5187 y Fh(c)p Fi(\()p Fh(i)p Fi(\))p Fh(;c)p Fi(\()p
+Fh(j)s Fi(\))2078 5172 y Fn(is)g(zero,)e(then)i(they)g(do)f(not)g
+(couple)g(at)330 5272 y(all)j(for)g(this)h(op)r(erator.)45
+b(Otherwise,)30 b(it)h(is)g(easily)f(visible)g(whic)n(h)h(deriv)-5
+b(ativ)n(e)30 b(acts)g(on)g(whic)n(h)330 5372 y(shap)r(e)d(function)i
+(for)e(this)h(com)n(bination)e(of)i(shap)r(e)f(functions.)455
+5471 y(In)21 b Fm(deal.II)p Fn(,)d(these)j(t)n(w)n(o)g(actions)f(men)n
+(tioned)h(ab)r(o)n(v)n(e)f(\(getting)h(the)h(non-zero)d(comp)r(onen)n
+(t)330 5571 y(of)29 b(a)f(shap)r(e)h(function,)h(and)f(the)g(v)-5
+b(alue)29 b(of)g(this)g(comp)r(onen)n(t)g(at)g(a)f(giv)n(en)g
+(quadrature)g(p)r(oin)n(t\))330 5670 y(are)f(done)g(as)g(follo)n(ws:)
+1809 5919 y(7)p eop
+%%Page: 8 8
+8 7 bop 455 390 a Fj(\017)41 b Fl(Determining)27 b(the)g(non-zer)l(o)f
+(c)l(omp)l(onent:)41 b Fn(Giv)n(en)25 b(the)g(shap)r(e)f(function)h
+(with)g(n)n(um)n(b)r(er)538 490 y Fk(i)30 b Fn(\(i.e.)48
+b(its)31 b(index)g(lo)r(cal)f(to)h(the)h(degrees)d(of)i(freedom)g(on)f
+(the)i(presen)n(t)e(cell\),)i(its)f(only)538 589 y(non-zero)25
+b(comp)r(onen)n(t)j(is)f(obtained)h(b)n(y)f(the)h(function)g(call)625
+789 y Fm(const)41 b(unsigned)g(int)h(nonzero_componen)o(t_)o(i)755
+888 y(=)i(fe.system_to_co)o(mpo)o(ne)o(nt_)o(in)o(de)o(x\(i)o(\).)o
+(fir)o(st)o(;)538 1088 y Fn(The)20 b Fm(FiniteElement::sy)o(st)o(em)p
+1628 1088 27 4 v 25 w(to)p 1741 1088 V 31 w(component)p
+2168 1088 V 27 w(index)f Fn(returns)h(a)g(pair)g(of)h(n)n(um)n(b)r(ers)
+538 1187 y(for)38 b(eac)n(h)g(index)h(0)i Fj(\024)g Fk(i)h(<)f(N)1542
+1199 y Fh(K)1606 1187 y Fn(,)g(the)f(\014rst)e(of)h(whic)n(h)g(denotes)
+f(the)h(only)g(non-zero)538 1287 y(comp)r(onen)n(t)21
+b(of)g(the)g(shap)r(e)h(function)f Fk(i)p Fn(.)35 b(Since)21
+b(for)g(the)h(case)e(describ)r(ed)h(in)h(this)f(section,)538
+1386 y(the)f(individual)g(comp)r(onen)n(ts)g(of)g(the)g(v)n(ector-v)-5
+b(alued)18 b(\014nite)j(elemen)n(t)f(are)f(indep)r(enden)n(t,)538
+1486 y(w)n(e)35 b(consider)g(eac)n(h)h(comp)r(onen)n(t)g(as)f(a)h(set)g
+(of)g(scalar)e(shap)r(e)i(functions;)41 b(the)c(second)538
+1586 y(n)n(um)n(b)r(er)d(of)h(the)g(pair)g(returned)f(b)n(y)h(the)g
+(function)g(then)h(denotes)f(the)g(index)g(of)g(the)538
+1685 y(shap)r(e)18 b(function)i Fk(')1133 1697 y Fh(i)1180
+1685 y Fn(within)g(the)f(shap)r(e)g(functions)h(corresp)r(onding)d(to)i
+(this)g(comp)r(onen)n(t.)538 1818 y(If,)40 b(for)e(example,)i(our)d
+(\014nite)h(elemen)n(t)g(in)g(use)g(is)f(a)h Fk(Q)2352
+1788 y Fi(2)2389 1818 y Fk(=Q)2497 1788 y Fi(2)2533 1818
+y Fk(=Q)2641 1788 y Fi(1)2715 1818 y Fn(com)n(bination)f(\(for)538
+1918 y(example)30 b(for)h(2d)g(\015o)n(w)g(computations:)44
+b(bi-quadratic)30 b(ansatz)h(functions)g(for)g(the)h(v)n(e-)538
+2017 y(lo)r(cities,)25 b(bi-linear)g(for)g(the)h(pressure\),)f(then)h
+(w)n(e)f(ha)n(v)n(e)f(a)h(total)g(of)h(22)e(shap)r(e)i(functions)538
+2117 y(\(9+9+4\).)34 b(F)-7 b(or)25 b(eac)n(h)f(0)f Fj(\024)g
+Fk(i)f(<)h Fn(22,)i(the)g(\014rst)h(part)e(of)i(the)f(pair)g(returned)g
+(b)n(y)g(the)h(func-)538 2217 y(tion)31 b(describ)r(ed)f(ab)r(o)n(v)n
+(e,)h Fk(c)p Fn(\()p Fk(i)p Fn(\),)h(ma)n(y)e(then)i(either)e(b)r(e)i
+(0,)f(1,)h(or)e(2,)h(denoting)g(the)g(three)538 2316
+y(p)r(ossible)i(comp)r(onen)n(ts)h(of)g(the)h(\014nite)g(elemen)n(t.)57
+b(If)35 b Fk(c)p Fn(\()p Fk(i)p Fn(\))f(is)g(either)g(0)g(or)f(1,)j
+(then)f(the)538 2416 y(comp)r(onen)n(t)30 b(to)h(whic)n(h)g(the)h(shap)
+r(e)f(function)h Fk(i)e Fn(b)r(elongs)h(is)g(a)g(bi-quadratic)f(one,)h
+(and)538 2516 y(the)24 b(second)f(index)i(is)f(b)r(et)n(w)n(een)g(0)f
+(and)h(8)g(\(inclusiv)n(e\))g(as)f(the)i Fk(Q)2550 2485
+y Fi(2)2611 2516 y Fn(elemen)n(t)f(has)g(9)f(shap)r(e)538
+2615 y(functions.)37 b(If)28 b Fk(c)p Fn(\()p Fk(i)p
+Fn(\))23 b(==)f(2,)27 b(then)i(the)e(second)g(part)h(is)f(b)r(et)n(w)n
+(een)h(0)f(and)g(3)g(\(inclusiv)n(e\).)455 2781 y Fj(\017)41
+b Fl(Getting)f(the)g(value)h(of)f Fk(')1380 2793 y Fh(i)1408
+2781 y Fn(\()p Fa(x)1490 2793 y Fh(q)1528 2781 y Fn(\))p
+Fl(:)65 b Fn(Since)39 b(only)f(one)h(comp)r(onen)n(t)g(of)f(\010)2836
+2793 y Fh(i)2903 2781 y Fn(is)h(non-zero,)538 2881 y(w)n(e)30
+b(can)h(use)f(the)i(same)e(function)h(as)g(b)r(efore,)g(i.e.)47
+b Fm(FEValues::shape)p 2851 2881 V 25 w(value\(i,q\))p
+Fn(,)538 2980 y(whic)n(h)36 b(in)h(the)g(scalar)e(case)h(returned)h
+(the)g(v)-5 b(alue)36 b(of)h(shap)r(e)f(function)i Fk(i)e
+Fn(at)h(quadra-)538 3080 y(ture)23 b(p)r(oin)n(t)g Fk(q)s
+Fn(.)35 b(Lik)n(ewise,)24 b(the)f Fm(FEValues::shape)p
+2176 3080 V 25 w(grad\(i,q\))d Fn(function)j(returns)g(the)538
+3180 y(gradien)n(t)j(of)i(this)f(particular)g(comp)r(onen)n(t.)538
+3313 y(In)h(other)f(w)n(ords,)g(whether)h(the)h(\014nite)f(elemen)n(t)g
+(is)g(scalar)f(or)g(not,)h(the)h(t)n(w)n(o)e(indicated)538
+3412 y(functions)22 b(return)f(v)-5 b(alue)21 b(and)h(gradien)n(t)e(of)
+i(the)g(only)f(non-zero)f(comp)r(onen)n(t)h(of)h(a)f(shap)r(e)538
+3512 y(function.)36 b(If)23 b(the)h(\014nite)f(elemen)n(t)h(is)f
+(scalar,)f(then)i(it)f(is)h(of)f(course)f(clear)g(whic)n(h)h(comp)r(o-)
+538 3611 y(nen)n(t)k(this)g(is)f(\(since)h(there)g Fk(c)p
+Fn(\()p Fk(i)p Fn(\))c(==)f(0)k(for)h(all)f(v)-5 b(alid)27
+b(indices)g Fk(i)p Fn(\),)g(in)g(the)g(v)n(ector-v)-5
+b(alued)538 3711 y(case,)26 b(it)i(is)g(comp)r(onen)n(t)f
+Fk(c)p Fn(\()p Fk(i)p Fn(\).)330 3943 y Fb(5.1)112 b(The)38
+b(elastic)g(equations)330 4097 y Fn(With)29 b(this,)g(and)g(the)f
+(de\014nition)h(of)g(the)f(\\bi-directional")f(op)r(erator)g
+Fk(Q)h Fn(in)g(Section)h(4.1,)f(the)330 4196 y(lo)r(cal)d(matrix)g
+(assem)n(bly)f(function)j(for)e(the)g(elastic)h(equations)e(w)n(ould)h
+(then)h(read)f(as)g(follo)n(ws:)417 4362 y Fm(for)43
+b(\(unsigned)c(int)k(i=0;)f(i<fe.dofs_per_c)o(ell)o(;)37
+b(++i\))504 4462 y(for)43 b(\(unsigned)d(int)i(j=0;)g(j<fe.dofs_per_ce)
+o(ll)o(;)c(++j\))592 4562 y(for)k(\(unsigned)e(int)i(q=0;)g
+(q<n_q_points;)c(++q\))679 4661 y({)766 4761 y(const)j(unsigned)g(int)
+853 4861 y(comp_i)g(=)i(fe.system_to_comp)o(on)o(ent)o(_i)o(nde)o(x\()o
+(i\))o(.fi)o(rs)o(t,)853 4960 y(comp_j)e(=)i(fe.system_to_comp)o(on)o
+(ent)o(_i)o(nde)o(x\()o(j\))o(.fi)o(rs)o(t;)1507 5159
+y(//)g(first)e(assemble)f(part)i(with)g(lambda+mu)766
+5259 y(cell_matrix\(i,j\))37 b(+=)43 b(\(\(lambda+mu\))997
+b(*)1681 5359 y(fe_values.shape_g)o(ra)o(d\()o(i,q)o(\)[)o(com)o(p_)o
+(i])37 b(*)1681 5458 y(fe_values.shape_g)o(ra)o(d\()o(j,q)o(\)[)o(com)o
+(p_)o(j])g(*)1681 5558 y(fe_values.JxW\(q\)\))o(;)1809
+5919 y Fn(8)p eop
+%%Page: 9 9
+9 8 bop 1507 390 a Fm(//)43 b(then)f(part)f(with)h(mu)h(only)766
+490 y(if)g(\(comp_i)d(==)j(comp_j\))853 589 y(cell_matrix\(i,j\))37
+b(+=)43 b(\(mu)1175 b(*)1768 689 y(\(fe_values.shape_)o(gr)o(ad\()o(i,)
+o(q\))37 b(*)1812 789 y(fe_values.shape_)o(gr)o(ad\()o(j,)o(q\))81
+b(\)*)1768 888 y(fe_values.JxW\(q\)\))o(;)679 988 y(};)330
+1154 y Fn(Note)27 b(that)h(this)g(co)r(de)f(w)n(orks)e(in)j(an)n(y)e
+(space)h(dimension,)g(not)h(only)e(for)h Fm(dim==2)p
+Fn(.)35 b(Optimiza-)330 1254 y(tion)25 b(of)g(this)g(is)g(p)r(ossible)g
+(b)n(y)g(hoisting)f(the)i(computation)f(of)31 b Fm(comp)p
+2466 1254 27 4 v 30 w(i)24 b Fn(and)h Fm(comp)p 2899
+1254 V 30 w(j)p Fn(,)g(denoting)330 1353 y Fk(c)p Fn(\()p
+Fk(i)p Fn(\))k(and)h Fk(c)p Fn(\()p Fk(j)5 b Fn(\),)30
+b(resp)r(ectiv)n(ely)-7 b(,)29 b(out)g(of)g(the)h(inner)f(lo)r(ops.)41
+b(Also,)30 b(if)g(the)f(co)r(e\016cien)n(ts)g(are)g(non-)330
+1453 y(constan)n(t,)35 b(they)e(need)h(to)g(b)r(e)g(computed)g(at)f
+(eac)n(h)g(quadrature)f(p)r(oin)n(t;)37 b(this)d(ma)n(y)f(b)r(e)h(done)
+330 1553 y(using)27 b(this)h(fragmen)n(t)f(in)h(the)g(innermost)f(lo)r
+(op:)417 1719 y Fm(const)42 b(double)504 1818 y(lambda_value)d(=)k
+(lambda.value\(fe_v)o(al)o(ue)o(s.q)o(ua)o(dra)o(tu)o(re)o(_po)o(in)o
+(t\(q)o(\)\))o(,)504 1918 y(mu_value)215 b(=)43 b(mu.value\(fe_value)o
+(s.)o(qu)o(adr)o(at)o(ure)o(_p)o(oi)o(nt\()o(q\))o(\);)330
+2084 y Fn(assuming)27 b(that)h Fm(lambda,mu)23 b Fn(are)k(v)-5
+b(ariables)26 b(of)i(classes)e(describing)h(space)g(dep)r(enden)n(t)h
+(func-)330 2183 y(tions,)f(and)h(whic)n(h)f(are)g(deriv)n(ed)g(from)g
+(the)h Fm(Function<dim>)22 b Fn(class.)330 2416 y Fb(5.2)112
+b(The)38 b(Stok)m(es)g(equations)330 2569 y Fn(F)-7 b(or)27
+b(the)i(Stok)n(es)e(equation,)h(things)f(are)g(sligh)n(tly)h(more)f
+(complicated)h(since)g(the)g(three)g(com-)330 2669 y(p)r(onen)n(ts)23
+b(denote)g(di\013eren)n(t)g(quan)n(tities,)h(and)f(the)g(op)r(erator)f
+Fk(Q)h Fn(do)r(es)f(not)i(ha)n(v)n(e)d(suc)n(h)i(a)g(simple)330
+2768 y(form,)29 b(but)g(the)h(case)e(is)h(still)g(simple)g(enough.)40
+b(W)-7 b(e)29 b(presen)n(t)g(its)g(generalization)e(to)h(an)h(arbi-)330
+2868 y(trary)c(n)n(um)n(b)r(er)g(of)h(space)f(dimensions,)h(i.e.)36
+b(assume)25 b(that)h(there)g(are)f Fm(dim)f Fn(v)n(elo)r(cit)n(y)h(v)-5
+b(ariables)330 2968 y(and)27 b(one)h(scalar)e(pressure:)417
+3134 y Fm(for)43 b(\(unsigned)c(int)k(i=0;)f(i<fe.dofs_per_c)o(ell)o(;)
+37 b(++i\))504 3233 y(for)43 b(\(unsigned)d(int)i(j=0;)g
+(j<fe.dofs_per_ce)o(ll)o(;)c(++j\))592 3333 y(for)k(\(unsigned)e(int)i
+(q=0;)g(q<n_q_points;)c(++q\))679 3433 y({)766 3532 y(const)j(unsigned)
+g(int)853 3632 y(comp_i)g(=)i(fe.system_to_comp)o(on)o(ent)o(_i)o(nde)o
+(x\()o(i\))o(.fi)o(rs)o(t,)853 3731 y(comp_j)e(=)i(fe.system_to_comp)o
+(on)o(ent)o(_i)o(nde)o(x\()o(j\))o(.fi)o(rs)o(t;)1507
+3931 y(//)g(velocity-veloci)o(ty)37 b(coupling?)766 4030
+y(if)43 b(\(\(comp_i<dim\))38 b(&&)43 b(\(comp_j<dim\)\))853
+4130 y(if)g(\(comp_i)d(==)j(comp_j\))940 4230 y(cell_matrix\(i,j\))37
+b(+=)43 b(\(nu)f(*)1856 4329 y(\(fe_values.shap)o(e_)o(gra)o(d\()o(i,q)
+o(\))37 b(*)1899 4429 y(fe_values.shape_)o(gra)o(d\()o(j,q)o(\))81
+b(\))43 b(*)1856 4528 y(fe_values.JxW\(q)o(\)\))o(;)1507
+4728 y(//)g(velocity-pressu)o(re)37 b(coupling)766 4827
+y(if)43 b(\(\(comp_i<dim\))38 b(&&)43 b(\(comp_j==dim\)\))853
+4927 y(cell_matrix\(i,j\))37 b(+=)43 b(\(-fe_values.shap)o(e_)o(gr)o
+(ad\()o(i,)o(q\)[)o(co)o(mp_)o(i])37 b(*)1812 5027 y(fe_values.shape_)o
+(va)o(lue)o(\(j)o(,q\))342 b(*)1768 5126 y(fe_values.JxW\(q\)\))o(;)
+1507 5325 y(//)43 b(pressure-veloci)o(ty)37 b(coupling)766
+5425 y(if)43 b(\(\(comp_i==dim\))37 b(&&)43 b(\(comp_j<dim\)\))853
+5525 y(cell_matrix\(i,j\))37 b(+=)43 b(\(fe_values.shape)o(_v)o(al)o
+(ue\()o(i,)o(q\))37 b(*)1768 5624 y(fe_values.shape_g)o(ra)o(d\(j)o(,q)
+o(\)[c)o(om)o(p_j)o(])g(*)1809 5919 y Fn(9)p eop
+%%Page: 10 10
+10 9 bop 1768 390 a Fm(fe_values.JxW\(q\)\))o(;)679 490
+y(};)330 628 y Fn(Again,)31 b(optimization)f(is)g(p)r(ossible)g(b)n(y)g
+(observing)f(that)h(only)g(one)g(of)g(the)h(outer)f Fm(if)p
+Fn(s)f(in)i(the)330 727 y(b)r(o)r(dy)d(can)f(b)r(e)h(true,)g(for)f
+(example)g(using)h Fm(else)e Fn(clauses,)h(or)g Fm(break)e
+Fn(statemen)n(ts.)330 996 y Fo(6)135 b(Assem)l(bling)58
+b(v)l(ector-v)-7 b(alued)59 b(problems:)86 b(The)57 b(com-)532
+1145 y(plicated)46 b(case)330 1327 y Fn(The)33 b(more)e(complicated)i
+(case)f(is)g(when)h(more)f(than)g(one)h(comp)r(onen)n(t)f(of)h(a)f(v)n
+(ector-v)-5 b(alued)330 1426 y(shap)r(e)27 b(function)i(is)e(non-zero,)
+f(i.e.)37 b(the)28 b(represen)n(tation)1194 1574 y(\010)1254
+1586 y Fh(i)1281 1574 y Fn(\()p Fa(x)p Fn(\))c(=)f(\(0)p
+Fk(;)14 b(:)g(:)g(:)f(;)h Fn(0)p Fk(;)g(')1898 1586 y
+Fh(i)1926 1574 y Fn(\()p Fa(x)p Fn(\))p Fk(;)g Fn(0)p
+Fk(;)g(:)g(:)g(:)f(;)h Fn(0\))2377 1532 y Fh(T)2443 1574
+y Fk(;)330 1721 y Fn(do)r(es)22 b(not)g(hold)g(an)n(y)g(more.)34
+b(The)22 b(usual)g(case)g(where)f(this)i(happ)r(ens)f(is)g(when)h(shap)
+r(e)f(functions)330 1821 y(ha)n(v)n(e)31 b(to)i(satisfy)f(certain)g
+(constrain)n(ts,)g(suc)n(h)g(as)g(that)h(they)g(should)f(ha)n(v)n(e)f
+(zero)h(div)n(ergence)330 1920 y(or)i(curl,)h(or)f(when)g(the)h(normal)
+f(\015uxes)g(at)g(some)g(p)r(oin)n(ts,)i(e.g.)57 b(the)35
+b(face)f(cen)n(ters,)h(are)f(the)330 2020 y(degrees)29
+b(of)h(freedom:)42 b Fa(n)20 b Fj(\001)h Fn(\010)1252
+2032 y Fh(i)1279 2020 y Fn(\()p Fk(x)1358 2032 y Fh(a)1399
+2020 y Fn(\))28 b(=)f Fk(\016)1588 2032 y Fh(ia)1652
+2020 y Fn(.)45 b(In)30 b(this)h(case,)f(the)h(individual)f(comp)r(onen)
+n(ts)g(of)g(a)330 2119 y(shap)r(e)25 b(function)h(are)e(no)h(more)f
+(indep)r(enden)n(t,)j(and)e(th)n(us)g(cannot)g(b)r(e)h(c)n(hosen)e(suc)
+n(h)h(that)g(only)330 2219 y(one)i(comp)r(onen)n(t)h(is)f(non-zero.)455
+2319 y(What)k(happ)r(ens)f(in)h(this)g(case?)45 b(First,)32
+b(the)f(function)g Fm(FiniteElement::sy)o(st)o(em)p 3147
+2319 27 4 v 25 w(to)p 3261 2319 V 30 w(-)330 2418 y(component)p
+731 2418 V 28 w(index)d Fn(do)r(es)j(not)f(mak)n(e)g(m)n(uc)n(h)h
+(sense)f(an)n(y)g(more,)h(since)f(a)h(shap)r(e)f(function)h(\010)3302
+2430 y Fh(i)330 2518 y Fn(cannot)c(b)r(e)g(asso)r(ciated)f(with)i(only)
+f(one)g(v)n(ector)e(comp)r(onen)n(t)i(an)n(y)g(more.)36
+b(Calling)26 b(this)i(func-)330 2618 y(tion)h(for)g(basis)f(functions)i
+(\010)1256 2630 y Fh(i)1312 2618 y Fn(that)g(are)e(not)h(restricted)f
+(to)h(only)g(one)g(non-zero)e(comp)r(onen)n(t)330 2717
+y(will)h(th)n(us)f(yield)h(an)f(exception)h(b)r(eing)f(thro)n(wn.)455
+2817 y(Second,)f(the)h(functions)g Fm(FEValues::shape)p
+1922 2817 V 25 w(value)d Fn(and)j Fm(FEValues::shape)p
+3012 2817 V 25 w(grad)e Fn(re-)330 2916 y(turning)c(the)h(v)-5
+b(alues)21 b(and)g(gradien)n(ts)f(of)h(the)h(only)f(non-zero)f(comp)r
+(onen)n(t)h(of)g(a)g(shap)r(e)h(function)330 3016 y(at)30
+b(a)g(quadrature)f(p)r(oin)n(t)i(cannot)e(w)n(ork)g(an)n(y)h(more,)g
+(since)g(there)g(are)g(no)n(w)f(more)h(than)g(only)330
+3116 y(one)g(non-zero)f(comp)r(onen)n(ts)h(for)g(some)g(or)g(all)g(v)-5
+b(alues)30 b(of)h Fk(i)p Fn(.)45 b(F)-7 b(or)30 b(those)g(shap)r(e)g
+(function)i(for)330 3215 y(whic)n(h)c(this)f(holds,)h(y)n(ou)f(will)g
+(again)g(get)g(an)g(exception)h(up)r(on)g(calling)f(these)g(functions.)
+330 3425 y Fa(Getting)k(information)g(ab)s(out)h(shap)s(e)f(functions)
+330 3578 y Fn(So)22 b(ho)n(w)h(do)f(y)n(ou)g(\014nd)h(out)g(whether)f
+(calling)h(these)f(functions)h(is)g(ok)f(or)g(not?)35
+b(In)23 b(other)f(w)n(ords,)330 3678 y(ho)n(w)36 b(do)g(y)n(ou)g(kno)n
+(w)f(whether)i(shap)r(e)f(function)h(\010)1991 3690 y
+Fh(i)2055 3678 y Fn(has)f(only)g(one)g(non-zero)f(comp)r(onen)n(t,)330
+3778 y(or)i(more?)67 b(F)-7 b(or)37 b(this,)k(there)c(are)g(t)n(w)n(o)g
+(functions:)58 b Fm(FiniteElement::)o(is)p 2787 3778
+V 25 w(primitive\(i\))330 3877 y Fn(returns)34 b(as)f(a)h
+Fm(bool)f Fn(whether)h(the)h(shap)r(e)f(function)h(has)f(only)g(one)g
+(non-zero)e(comp)r(onen)n(t.)330 3977 y(F)-7 b(or)20
+b(example,)h(for)e(a)h Fk(Q)1061 3947 y Fi(2)1098 3977
+y Fk(=Q)1206 3947 y Fi(2)1242 3977 y Fk(=Q)1350 3947
+y Fi(1)1407 3977 y Fn(elemen)n(t,)i(this)e(w)n(ould)g(b)r(e)g
+Fm(true)f Fn(for)h(all)g(22)f(shap)r(e)h(functions.)330
+4076 y(F)-7 b(or)32 b(a)h(\014nite)h(elemen)n(t)f(for)g(whic)n(h)g(ev)n
+(ery)f(shap)r(e)g(function)i(is)f(non-zero)f(in)h(more)f(than)h(one)330
+4176 y(comp)r(onen)n(t,)26 b(it)f(w)n(ould)g(b)r(e)h
+Fm(false)e Fn(for)g(all)i(indices)f Fk(i)p Fn(.)36 b(It)26
+b(migh)n(t)f(also)f(b)r(e)i Fm(true)e Fn(for)h(only)g(some)330
+4276 y(shap)r(e)g(functions,)g(for)f(example)h(if)g(the)g(v)n(elo)r
+(cit)n(y)f(comp)r(onen)n(ts)g(of)h(the)g(Stok)n(es)f(discretization)330
+4375 y(are)30 b(done)g(using)g(some)g(more)g(complicated)g(elemen)n(t,)
+i(but)f(the)g(pressure)e(comp)r(onen)n(t)i(with)330 4475
+y(a)25 b Fk(Q)463 4445 y Fi(1)500 4475 y Fn(,)i(then)f(it)g(w)n(ould)g
+(b)r(e)g Fm(true)e Fn(for)i(the)g(pressure)e(shap)r(e)i(functions,)h
+(but)f Fm(false)e Fn(otherwise.)455 4575 y(Second,)48
+b(the)c Fm(FiniteElement::n)p 1648 4575 V 25 w(nonzero)p
+1981 4575 V 29 w(components\(i\))39 b Fn(function)44
+b(returns)g(in)330 4674 y(ho)n(w)21 b(man)n(y)f(comp)r(onen)n(ts)h(the)
+g Fk(i)p Fn(th)g(shap)r(e)g(function)h(is)f(non-zero.)33
+b(Again,)22 b(for)f(the)g Fk(Q)3004 4644 y Fi(2)3041
+4674 y Fk(=Q)3149 4644 y Fi(2)3186 4674 y Fk(=Q)3294
+4644 y Fi(1)330 4774 y Fn(com)n(bination,)27 b(this)g(w)n(ould)g(yield)
+g(the)h(v)-5 b(alue)27 b(1)g(for)g(all)g(allo)n(w)n(ed)f(indices)h
+Fk(i)p Fn(.)37 b(F)-7 b(or)26 b(coupled)h(ele-)330 4873
+y(men)n(ts,)h(it)g(w)n(ould)f(b)r(e)h(greater)e(than)h(1.)455
+4973 y(Third,)h(y)n(ou)g(ma)n(y)g(sometimes)h(w)n(an)n(t)f(to)g(kno)n
+(w)g(in)h(whic)n(h)g(comp)r(onen)n(ts)f(a)g(certain)g(shap)r(e)330
+5073 y(function)j(is)g(non-zero.)45 b(F)-7 b(or)30 b(this,)i(the)f
+Fm(FiniteElement::g)o(et)p 2407 5073 V 25 w(nonzero)p
+2740 5073 V 28 w(components\(i\))330 5172 y Fn(function)38
+b(is)f(the)h(righ)n(t)e(thing:)56 b(it)38 b(returns)f(a)f(reference)h
+(to)g(a)g(v)n(ector)f(of)h(b)r(o)r(olean)f(v)-5 b(alues,)330
+5272 y(one)26 b(for)f(eac)n(h)h(comp)r(onen)n(t)g(of)g(the)g(v)n
+(ector-v)-5 b(alued)25 b(\014nite)h(elemen)n(t,)h(and)f(the)g(v)-5
+b(alues)26 b(indicate)330 5372 y(whether)h(the)h(shap)r(e)g(function)g
+(is)g(non-zero)d(for)j(eac)n(h)e(of)i(them.)455 5471
+y(Note)18 b(that)h(if)f(y)n(ou)g(ha)n(v)n(e)f(the)i(result)f(of)25
+b Fm(FiniteElement::g)o(et)p 2456 5471 V 25 w(nonzero)p
+2790 5471 V 28 w(components\(i\))p Fn(,)330 5571 y(then)j(the)f(result)
+g(of)34 b Fm(FiniteElement::n)p 1701 5571 V 25 w(nonzero)p
+2035 5571 V 28 w(components\(i\))22 b Fn(is)27 b(simply)h(the)f(n)n
+(um-)330 5670 y(b)r(er)34 b(of)41 b Fm(true)32 b Fn(v)-5
+b(alues)34 b(in)g(the)h(arra)n(y)d(returned)h(b)n(y)h(the)h(\014rst)f
+(function.)57 b(In)34 b(the)h(same)e(w)n(a)n(y)-7 b(,)1788
+5919 y(10)p eop
+%%Page: 11 11
+11 10 bop 330 390 a Fm(FiniteElement::i)o(s)p 1082 390
+27 4 v 25 w(primitive\(i\))14 b Fn(is)k(simply)h(whether)f
+Fm(FiniteElement::n)p 2992 390 V 25 w(nonzero)p 3326
+390 V 28 w(-)330 490 y(components\(i\))g Fn(returned)23
+b(a)h(v)-5 b(alue)23 b(other)g(than)h(1.)35 b(The)24
+b(functions)f(are)g(th)n(us)h(redundan)n(t)f(in)330 589
+y(some)k(w)n(a)n(y)-7 b(,)27 b(but)h(useful)g(nev)n(ertheless.)37
+b(Of)27 b(course,)g(the)h(v)-5 b(alues)28 b(of)f(the)i
+Fm(FiniteElement::)o(-)330 689 y(is)p 423 689 V 31 w(primitive\(i\))j
+Fn(and)38 b Fm(FiniteElement::n)p 1890 689 V 25 w(nonzero)p
+2223 689 V 28 w(components\(i\))33 b Fn(functions)38
+b(are)330 789 y(not)g(recomputed)g(ev)n(ery)f(time)i(based)e(on)h(the)h
+(result)f(of)g(some)f(other)h(function,)j(but)e(are)330
+888 y(cac)n(hed)27 b(once)g(at)g(the)h(time)g(of)g(construction)f(of)g
+(a)h(\014nite)g(elemen)n(t)f(ob)5 b(ject.)330 1103 y
+Fa(Ev)-5 b(aluating)31 b(shap)s(e)h(functions)330 1256
+y Fn(No)n(w,)d(w)n(e)g(ha)n(v)n(e)f(seen)h(whic)n(h)g(functions)g
+(cannot)g(b)r(e)g(called)g(for)g(non-primitiv)n(e)f(shap)r(e)h(func-)
+330 1356 y(tions,)21 b(and)f(also)f(ho)n(w)h(to)g(\014nd)g(out)g(ab)r
+(out)g(shap)r(e)g(functions)g(and)g(whether)g(they)g(are)f(primitiv)n
+(e)330 1455 y(and)g(the)g(lik)n(e.)34 b(Y)-7 b(et,)21
+b(w)n(e)d(don't)h(ha)n(v)n(e)f(replacemen)n(ts)g(for)g(the)h(functions)
+h(that)f(cannot)f(b)r(e)h(called,)330 1555 y(so)27 b(here)g(they)g
+(are:)36 b(instead)27 b(of)34 b Fm(FEValues::shape)p
+2021 1555 V 25 w(value)25 b Fn(and)i Fm(FEValues::shape)p
+3112 1555 V 26 w(grad)p Fn(,)330 1655 y(call)36 b Fm(FEValues::shape)p
+1156 1655 V 25 w(value)p 1401 1655 V 29 w(component)d
+Fn(and)j Fm(FEValues::shape)p 2689 1655 V 25 w(grad)p
+2890 1655 V 30 w(component)p Fn(.)330 1754 y(These)26
+b(functions)h(tak)n(e)e(as)h(argumen)n(ts)f(\014rst)h(the)h(n)n(um)n(b)
+r(er)f(of)g(the)h(shap)r(e)f(function,)i(and)e(sec-)330
+1854 y(ond)21 b(the)g(n)n(um)n(b)r(er)f(of)h(the)g(quadrature)f(p)r
+(oin)n(t)h(\(these)g(are)e(also)h(the)h(argumen)n(ts)f(of)g(the)i
+(original)330 1953 y(functions\),)28 b(but)g(no)n(w)f(as)g(additional)g
+(third)h(argumen)n(t)f(the)h(v)n(ector)e(comp)r(onen)n(t.)455
+2053 y(Of)f(course,)f(these)h(functions)g(can)g(b)r(e)g(called)g(on)g
+(primitiv)n(e)g(shap)r(e)f(functions)i(as)e(w)n(ell.)36
+b(In)330 2153 y(that)28 b(case,)f(the)h(follo)n(wing)e(holds:)455
+2313 y Fj(\017)41 b Fn(The)18 b(v)-5 b(alue)18 b(of)25
+b Fm(FEValues::shape)p 1661 2313 V 25 w(value)p 1906
+2313 V 30 w(component\(i,q,c)o(\))12 b Fn(is)19 b(equal)e(to)i
+Fm(FEValues::-)538 2412 y(shape)p 763 2412 V 29 w(value\(i,q\))g
+Fn(if)24 b(and)g(only)f(if)h(the)g(comp)r(onen)n(t)f
+Fm(c)g Fn(is)h(equal)f(to)g Fm(fe.system)p 3145 2412
+V 28 w(to)p 3261 2412 V 30 w(-)538 2512 y(component)p
+939 2512 V 27 w(index\(i\).first)p Fn(,)i(i.e.)45 b(if)37
+b Fm(c)30 b Fn(is)g(the)g(only)g(non-zero)f(comp)r(onen)n(t)h(of)g(the)
+538 2611 y(shap)r(e)d(function)h Fm(i)p Fn(.)455 2774
+y Fj(\017)41 b Fn(F)-7 b(or)25 b(all)h(other)f(comp)r(onen)n(ts)h
+Fm(c)p Fn(,)g(the)g(returned)g(v)-5 b(alue)26 b(of)32
+b Fm(FEValues::shape)p 3017 2774 V 25 w(value)p 3262
+2774 V 29 w(-)538 2874 y(component\(i,q,c)o(\))22 b Fn(is)27
+b(zero.)330 3034 y(The)i(same)g(of)g(course)f(also)g(holds)g(for)h
+Fm(FEValues::shape)p 2244 3034 V 25 w(grad)p 2445 3034
+V 30 w(component\(i,q,c)o(\))23 b Fn(and)330 3134 y Fm(FEValues::shape)
+p 995 3134 V 25 w(2nd)p 1152 3134 V 30 w(derivative)p
+1622 3134 V 28 w(component\(i,q,c)o(\))p Fn(.)330 3365
+y Fb(6.1)112 b(The)38 b(elastic)g(equations)330 3518
+y Fn(With)27 b(the)f(ab)r(o)n(v)n(e,)f(w)n(e)h(can)f(no)n(w)g(assem)n
+(ble)g(the)h(matrix)g(for)f(the)h(elastic)g(equation)f(in)h(mostly)330
+3618 y(the)i(same)g(w)n(a)n(y)f(as)g(b)r(efore.)38 b(The)29
+b(di\013erence)f(is)g(that)g(for)g(eac)n(h)f(shap)r(e)h(function,)h(w)n
+(e)e(ha)n(v)n(e)g(to)330 3717 y(lo)r(op)e(o)n(v)n(er)f(all)i(comp)r
+(onen)n(ts.)35 b(The)26 b(co)r(de)f(then)i(lo)r(oks)d(lik)n(e)i(this)g
+(\(compare)e(this)i(with)g(the)g(one)330 3817 y(in)i(Section)f(5.1\):)
+417 3977 y Fm(for)43 b(\(unsigned)c(int)k(i=0;)f(i<fe.dofs_per_c)o(ell)
+o(;)37 b(++i\))461 4076 y(for)42 b(\(unsigned)e(int)i(comp_i=0;)e
+(comp_i<fe.n_compo)o(ne)o(nt)o(s\(\))o(;)d(++comp_i\))504
+4176 y(for)43 b(\(unsigned)d(int)i(j=0;)g(j<fe.dofs_per_ce)o(ll)o(;)c
+(++j\))548 4276 y(for)k(\(unsigned)e(int)i(comp_j=0;)e
+(comp_j<fe.n_compo)o(ne)o(nts)o(\(\))o(;)e(++comp_j\))592
+4375 y(for)k(\(unsigned)e(int)i(q=0;)g(q<n_q_points;)c(++q\))679
+4475 y({)1332 4575 y(//)43 b(first)f(assemble)e(part)i(with)g
+(lambda+mu)766 4674 y(cell_matrix\(i,j\))897 4774 y(+=)g
+(\(\(lambda+mu\))998 b(*)1071 4873 y(fe_values.shape_)o(gra)o(d_)o(co)o
+(mpo)o(ne)o(nt\()o(i,)o(q,)o(com)o(p_)o(i\)[)o(co)o(mp_)o(i])37
+b(*)1071 4973 y(fe_values.shape_)o(gra)o(d_)o(co)o(mpo)o(ne)o(nt\()o
+(j,)o(q,)o(com)o(p_)o(j\)[)o(co)o(mp_)o(j])g(*)1071 5073
+y(fe_values.JxW\(q\))o(\);)1332 5272 y(//)43 b(then)f(part)g(with)g(mu)
+h(only)766 5372 y(if)g(\(comp_i)d(==)j(comp_j\))853 5471
+y(cell_matrix\(i,j\))940 5571 y(+=)g(\(mu)1176 b(*)1115
+5670 y(\(fe_values.shap)o(e_g)o(ra)o(d_)o(com)o(po)o(nen)o(t\()o(i,)o
+(q,c)o(om)o(p_i)o(\))37 b(*)1788 5919 y Fn(11)p eop
+%%Page: 12 12
+12 11 bop 1158 390 a Fm(fe_values.shape_g)o(ra)o(d_)o(com)o(po)o(nen)o
+(t\()o(j,)o(q,c)o(om)o(p_j)o(\))81 b(\)*)1158 490 y
+(fe_values.JxW\(q\)\))o(;)679 589 y(};)330 756 y Fn(If)32
+b(y)n(ou)e(dislik)n(e)h(this)g(particular)f(order)g(of)h(the)g(lo)r
+(ops,)h(y)n(ou)e(can)h(reorder)e(them)j(as)e(y)n(ou)g(lik)n(e,)330
+855 y(as)d(they)h(are)e(indep)r(enden)n(t.)455 955 y(The)19
+b(co)r(de)g(as)g(sho)n(wn)g(ab)r(o)n(v)n(e)f(can)h(b)r(e)h(optimized.)
+34 b(F)-7 b(or)19 b(example,)i(instead)e(of)g(uncondition-)330
+1054 y(ally)i(p)r(erforming)g(the)h(lo)r(op)f(o)n(v)n(er)f(all)h(comp)r
+(onen)n(ts)g(of)h(shap)r(e)f(functions)h Fk(i)f Fn(of)h
+Fk(j)5 b Fn(,)23 b(w)n(e)e(migh)n(t)g(\014rst)330 1154
+y(ask)31 b(whether)h(these)f(shap)r(e)h(functions)g(are)f(primitiv)n
+(e,)h(using)h Fm(fe.is)p 2593 1154 27 4 v 29 w(primitive\(i\))p
+Fn(,)28 b(and)330 1254 y(use)20 b(the)h(lo)r(op)f(only)f(if)i(the)g
+(result)f(is)g(false;)i(if,)g(on)e(the)h(other)f(hand,)h(the)g(result)f
+(is)g(true,)i(w)n(e)d(only)330 1353 y(need)33 b(to)f(set)h
+Fm(comp)p 951 1353 V 29 w(i)g Fn(to)f(the)h(\014xed)f(v)-5
+b(alue)33 b Fm(fe.system)p 2132 1353 V 28 w(to)p 2248
+1353 V 30 w(component)p 2674 1353 V 28 w(index\(i\).first)p
+Fn(,)330 1453 y(and)27 b(lik)n(ewise)g(for)g(shap)r(e)h(function)g
+Fk(j)5 b Fn(.)455 1553 y(Another)28 b(p)r(ossibilit)n(y)g(for)g
+(optimization)h(w)n(ould)f(b)r(e)h(to)f(ask)g(whether)h(a)f(certain)g
+(comp)r(o-)330 1652 y(nen)n(t)37 b(o)n(v)n(er)e(whic)n(h)i(w)n(e)f(lo)r
+(op)h(is)f(actually)h(non-zero,)g(or)f(if)h(the)g(shap)r(e)g(function)g
+(is)g(a)g(non-)330 1752 y(primitiv)n(e)31 b(one)h(but)g(happ)r(ens)f
+(to)h(b)r(e)g(zero)e(in)i(the)g(presen)n(t)f(comp)r(onen)n(t)g(nev)n
+(ertheless.)48 b(F)-7 b(or)330 1851 y(this,)28 b(w)n(e)f(could)h
+(replace)e(the)i(lo)r(op)f(o)n(v)n(er)f Fm(comp)p 1824
+1851 V 30 w(i)h Fn(b)n(y)g(this:)504 2017 y Fm(for)43
+b(\(unsigned)d(int)i(comp_i=0;)e(comp_i<fe.n_comp)o(on)o(en)o(ts\()o
+(\);)d(++comp_i\))592 2117 y(if)42 b(\(fe.get_nonzero_c)o(om)o(pon)o
+(en)o(ts\()o(i\))o([c)o(omp)o(_i)o(])c(==)k(true\))330
+2283 y Fn(If)30 b(the)g(if-clause)f(do)r(es)g(not)g(succeed)h(then)g
+(this)g(comp)r(onen)n(t)f(of)g(the)h(shap)r(e)f(function)i(is)e(def-)
+330 2383 y(initely)h(zero,)g(and)f(there)h(will)g(not)g(b)r(e)g(a)g
+(con)n(tribution)f(to)h(the)g(matrix)f(an)n(yw)n(a)n(y)-7
+b(,)29 b(so)g(w)n(e)g(can)330 2482 y(also)e(skip)g(the)h(computations.)
+330 2715 y Fb(6.2)112 b(The)38 b(Stok)m(es)g(equations)330
+2868 y Fn(Lik)n(ewise,)27 b(this)h(is)f(no)n(w)g(the)h(co)r(de)f(for)h
+(the)g(Stok)n(es)e(equations:)417 3034 y Fm(for)43 b(\(unsigned)c(int)k
+(i=0;)f(i<fe.dofs_per_c)o(ell)o(;)37 b(++i\))461 3134
+y(for)42 b(\(unsigned)e(int)i(comp_i=0;)e(comp_i<fe.n_compo)o(ne)o(nt)o
+(s\(\))o(;)d(++comp_i\))504 3233 y(for)43 b(\(unsigned)d(int)i(j=0;)g
+(j<fe.dofs_per_ce)o(ll)o(;)c(++j\))548 3333 y(for)k(\(unsigned)e(int)i
+(comp_j=0;)e(comp_j<fe.n_compo)o(ne)o(nts)o(\(\))o(;)e(++comp_j\))592
+3433 y(for)k(\(unsigned)e(int)i(q=0;)g(q<n_q_points;)c(++q\))679
+3532 y({)1332 3632 y(//)43 b(velocity-velocity)37 b(coupling?)766
+3731 y(if)43 b(\(\(comp_i<dim\))38 b(&&)43 b(\(comp_j<dim\)\))853
+3831 y(if)g(\(comp_i)d(==)j(comp_j\))940 3931 y(cell_matrix\(i,j\))1115
+4030 y(+=)f(\(nu)h(*)1289 4130 y(\(fe_values.shape)o(_g)o(rad)o(_c)o
+(omp)o(on)o(en)o(t\(i)o(,q)o(,co)o(mp)o(_i\))37 b(*)1332
+4230 y(fe_values.shape_g)o(rad)o(_c)o(omp)o(on)o(en)o(t\(j)o(,q)o(,co)o
+(mp)o(_j\))80 b(\))43 b(*)1289 4329 y(fe_values.JxW\(q\))o(\);)1332
+4528 y(//)g(velocity-pressure)37 b(coupling)766 4628
+y(if)43 b(\(\(comp_i<dim\))38 b(&&)43 b(\(comp_j==dim\)\))853
+4728 y(cell_matrix\(i,j\))1027 4827 y(+=)g(\(-fe_values.shape)o(_g)o
+(ra)o(d_c)o(om)o(pon)o(en)o(t\()o(i,q)o(,c)o(omp)o(_i)o(\)[c)o(om)o(p_)
+o(i])37 b(*)1202 4927 y(fe_values.shape_)o(va)o(lu)o(e_c)o(om)o(pon)o
+(en)o(t\()o(j,q)o(,c)o(omp)o(_j)o(\))343 b(*)1202 5027
+y(fe_values.JxW\(q\))o(\);)1332 5226 y(//)43 b(pressure-velocity)37
+b(coupling)766 5325 y(if)43 b(\(\(comp_i==dim\))37 b(&&)43
+b(\(comp_j<dim\)\))853 5425 y(cell_matrix\(i,j\))1027
+5525 y(+=)g(\(fe_values.shape_)o(va)o(lu)o(e_c)o(om)o(pon)o(en)o(t\()o
+(i,q)o(,c)o(omp)o(_i)o(\))38 b(*)1202 5624 y(fe_values.shape_)o(gr)o
+(ad)o(_co)o(mp)o(one)o(nt)o(\(j)o(,q,)o(co)o(mp_)o(j\))o([co)o(mp)o(_j)
+o(])g(*)1788 5919 y Fn(12)p eop
+%%Page: 13 13
+13 12 bop 1202 390 a Fm(fe_values.JxW\(q\))o(\);)679
+490 y(};)330 656 y Fn(Again,)28 b(the)h(same)e(optimizations)h(as)g(ab)
+r(o)n(v)n(e)f(are)g(p)r(ossible.)39 b(Here,)28 b(they)g(ev)n(en)g(seem)
+g(w)n(orth-)330 756 y(while,)35 b(since)e(it)g(is)g(often)h(the)f(case)
+g(that)g(the)h(v)n(elo)r(cit)n(y)e(v)-5 b(ariables)32
+b(are)g(discretized)h(using)f(a)330 855 y(non-primitiv)n(e)f(\014nite)i
+(elemen)n(t,)h(while)e(the)h(pressure)e(uses)h(a)f(primitiv)n(e)h
+(elemen)n(t.)51 b(In)33 b(that)330 955 y(case,)e(some)g(shap)r(e)g
+(functions)g(are)f(primitiv)n(e)h(\(namely)g(those)g(discretizing)g
+(the)g(pressure\),)330 1054 y(and)37 b(of)h(the)g(non-primitiv)n(e)f
+(shap)r(e)g(functions)h(\(those)f(for)g(the)h(v)n(elo)r(cit)n(y)f(v)-5
+b(ariables\))37 b(some)330 1154 y(v)n(ector)d(comp)r(onen)n(ts)h(\(the)
+g(pressure)f(comp)r(onen)n(ts\))h(are)f(alw)n(a)n(ys)f(zero.)59
+b(Th)n(us,)37 b(b)r(oth)e(opti-)330 1254 y(mizations)26
+b(describ)r(ed)g(ab)r(o)n(v)n(e)e(w)n(ould)i(b)r(e)h(useful.)36
+b(W)-7 b(e)27 b(lea)n(v)n(e)e(the)h(implemen)n(tation)h(of)f(this)g(to)
+330 1353 y(the)i(reader.)330 1628 y Fo(7)135 b(Conclusions)330
+1810 y Fn(W)-7 b(e)23 b(ha)n(v)n(e)f(sho)n(wn)h(ho)n(w)f(\014nite)i
+(elemen)n(t)f(matrices)f(are)h(assem)n(bled)f(using)h(the)g
+(functionalit)n(y)g(of)330 1909 y(the)i Fm(deal.II)d
+Fn(library)-7 b(.)35 b(F)-7 b(or)24 b(the)i(scalar)d(case,)h(and,)i(in)
+f(the)g(v)n(ector-v)-5 b(alued)23 b(case,)i(if)g(the)h(\014nite)330
+2009 y(elemen)n(t)36 b(shap)r(e)g(functions)g(are)f(suc)n(h)h(that)g
+(only)g(one)g(v)n(ector)e(comp)r(onen)n(t)i(of)g(eac)n(h)f(shap)r(e)330
+2109 y(function)29 b(is)f(non-zero,)f(assem)n(bling)h(is)g(relativ)n
+(ely)f(simple.)40 b(In)28 b(the)h(other)f(case,)g(when)g(there)330
+2208 y(are)34 b(shap)r(e)i(functions)f(with)h(more)f(than)g(one)g
+(non-zero)f(comp)r(onen)n(t,)j(some)e(more)g(care)f(is)330
+2308 y(necessary)-7 b(,)33 b(but)g(assem)n(bling)f(is)h(still)g
+(straigh)n(tforw)n(ard)d(and)j(follo)n(ws)f(the)i(same)e(pattern)h(as)
+330 2407 y(b)r(efore.)1788 5919 y(13)p eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/deal.II/doc/reports/assemble/assemble.tex b/deal.II/doc/reports/assemble/assemble.tex
new file mode 100644 (file)
index 0000000..ccc0a3d
--- /dev/null
@@ -0,0 +1,947 @@
+\documentclass{article}
+\usepackage{amsmath}
+\usepackage{amsfonts}
+\usepackage{a4}
+\newcommand{\leftpartial}{\overleftarrow \partial}
+\newcommand{\rightpartial}{\overrightarrow \partial}
+\renewcommand{\div}{\nabla\cdot}
+\renewcommand{\vec}[1]{{\mathbf #1}}
+\begin{document}
+
+
+\begin{center}
+  \begin{huge}
+    Assembling matrices in \texttt{deal.II}
+  \end{huge}
+
+  \vspace*{0.5cm}
+
+  \begin{large}
+    Wolfgang Bangerth\\
+    ETH Z\"urich, Switzerland\\[12pt]
+    May 2002
+  \end{large}
+\end{center}
+
+
+\section{Introduction}
+
+Assembling the system matrix for finite element discretizations is standard,
+at least as far as scalar problems are concerned. However, things become a
+little more complicated in implementations once problems are vector-valued,
+and in particular if finite elements are used in which different components of
+vector-valued shape functions are coupled, such as for example for
+divergence-free elements. 
+
+It is this case that we are interested in in this report, and we will discuss
+the implementational details user programs must follow if they want to use
+such elements with \texttt{deal.II}. In order to explain the problem in a
+simple way, we start by reviewing the algorithms that are used, first for the
+scalar case, then for the case of ``simple'' vector-valued finite elements,
+and finally for the most general case.  However, we do not intend to give an
+introduction into the derivation of finite element methods, or of posing a
+partial differential equation in weak form.
+
+The interface for vector-valued finite element shape functions with more than
+one non-zero component that is described in this report is presently being
+implemented, and will be merged with the library after version 3.4 is
+released. Thus, it will be part of version 3.5 or 4.0 of the library,
+depending on which version number we will assign to the successor of 3.4. By
+then, the library will also contain an implementation of Nedelec elements, for
+which these techniques are necessary. The interface for primitive
+vector-valued shape functions, for which only one vector component is
+non-zero, has been part of the library since its publication with version 3.0.
+
+
+
+
+\section{Linear systems for finite element methods}
+
+We start by briefly introducing the way finite element matrices are assembled
+``on paper''. As usual in finite elements, we take the weak form of the partial
+differential equation. In the most general case, it reads: \textit{find $u\in
+  V$ such that}
+\begin{gather*}
+  a(u, v) = (f,v)_\Omega \qquad \forall v\in V,
+\end{gather*}
+where $a(\cdot,\cdot)$ is the bilinear form associated with the partial
+differential equations, and $V$ is the space of test functions. For
+simplicity, we have here assumed that the problem is linear and that then
+$a(\cdot,\cdot)$ is a bilinear form; if the problem is nonlinear, it is
+usually solved using a sequence of linear problems, so this is no restriction.
+
+In finite elements, we define an approximation of the solution $u$ by choosing
+a finite dimensional subspace $V_h$ spanned by the basis functions
+$\{\varphi_i\}$, and searching $u_h\in V_h$ by testing the weak form by the
+test functions from $V_h$. The problem then reads: \textit{find $u_h\in V_h$
+such that}
+\begin{gather*}
+  a(u_h, v_h) = (f,v_h)_\Omega \qquad \forall v_h\in V_h.
+\end{gather*}
+
+Now, $\{\varphi_i\}$ is a basis of $V_h$. We denote the dimension of $V_h$ by
+$N$, and will henceforth let all sums be over the range $0\ldots N-1$, to keep
+with the standard notation of the C/C++ programming languages. With this, we
+can expand the solution $u_h=\sum_{j=0}^{N-1} U_j \varphi_j$, and by
+bilinearity of the form $a(\cdot,\cdot)$, the problem above is equivalent to
+\begin{gather}
+  \label{eq:lin-1}
+  \sum_{j=0}^{N-1} U_j a(\varphi_j,\varphi_i) = (f, \varphi_i)
+  \qquad
+  \forall i=0\ldots N-1.
+\end{gather}
+Denoting
+\begin{gather*}
+  A_{ij} = a(\varphi_j,\varphi_i),
+  \qquad
+  \qquad
+  F_j = (f, \varphi_j),
+\end{gather*}
+the equations determining the expansion coefficients $U_i$ are therefore:
+\begin{gather}
+  \label{eq:lin-2}
+  A U = F.
+\end{gather}
+
+Note that we have taken a reverted order of indices in the definition of $A$,
+since we want the linear system \eqref{eq:lin-2} with the solution to the
+right of the matrix, to keep with standard notation, instead of to the left as
+in \eqref{eq:lin-1}. For symmetric problems, there is no difference, but for
+non-symmetric ones this is a common source for problems and a rather common
+trap. 
+
+For partial differential equations, the bilinear form used in \eqref{eq:lin-1}
+involves an integral over the domain $\Omega$ on which the problem is
+posed. For example, for the Laplace equation we have
+\begin{gather*}
+  A_{ij}
+  =
+  a(\varphi_j, \varphi_i)
+  =
+  (\nabla \varphi_j, \nabla \varphi_i)_\Omega
+  =
+  \int_\Omega \nabla \varphi_j \cdot \nabla \varphi_i \; dx.
+\end{gather*}
+For practical purposes, we split this equation into integrals over the
+individual cells $K$ of the triangulation $\mathbb T$ we use for the
+discretization. In \texttt{deal.II}, these cells are always lines,
+quadrilaterals, or hexahedra. With this, we have that
+\begin{gather*}
+  A = \sum_{K \in {\mathbb T}} A^K,
+  \qquad\qquad
+  A^K_{ij} = a_K(\varphi_j, \varphi_i) 
+  \qquad
+  0\le i,j\le N-1,
+\end{gather*}
+where the bilinear form $a_K(\cdot,\cdot)$ only involves an integral over the
+cell $K$. The important point is that we do so since for the localized basis
+functions used in finite elements, $A^K$ is a matrix with almost only zeros.
+The only elements which are not zero are those corresponding to indices $i,j$
+indicating those shape functions that have support also on the element $K$.
+For example, in 2d and using the usual bilinear shape functions for a scalar
+problem, only the four shape functions associated with the vertices of the
+cell $K$ are nonzero on $K$, and thus only the entries in $A^K$ are nonzero
+where the four rows corresponding to these indices and the respective four
+columns intersect.
+
+In general, assume that there are $N_K$ shape functions with support on cell
+$K$, and let the set of their indices be denoted by $I_K$. Then we can define
+a matrix $\hat A^K$ of (small dimension) $N_K\times N_K$ holding these nonzero
+entries, and we can obtain back the original contribution $A_K$ to $A$ by the
+transformation
+\begin{gather*}
+  A^K_{ij} = 
+  \left\{
+    \begin{array}{ll}
+      0 & \text{if $i\not\in I_K$ or $j\not\in I_K$,} \\
+      \hat A^K_{local(i),local(j)} & \text{otherwise},
+    \end{array}
+  \right.
+  \qquad 0\le i,j\le N-1.
+\end{gather*}
+Here, $local(i)$ gives the number of the global degree of freedom $i$ on the
+cell $K$, i.e. the position of $i$ in the index set $I_K$. One could call
+$\hat A^K$ the \texttt{reduced} form of $A^K$, since the many zero rows and
+column have been stripped.
+
+In general, when assembling the global matrix, the reverse way is used: when
+adding up $A^K$ to $A$, we do so only with $\hat A^K$ by
+\begin{gather*}
+  A_{global(i),global(j)} 
+  +\!\!=
+  \hat A^K_{ij}
+  \qquad
+  \qquad
+  0\le i,j\le N_K-1.
+\end{gather*}
+Thus, indices only run over the (small) range $0\ldots N_K-1$ instead of
+$0\ldots N-1$. Here, $global(i)$ denotes the global number of the degree of
+freedom with number $i$ on this cell $K$, i.e. $global(i)=I_K[i]$, where the
+bracket operator returns the $i$th element of the set $I_K$.
+
+The main part of assembling finite element matrices is therefore to assemble
+the local matrix $\hat A^K$. Before we go on with discussing how this is done
+in \texttt{deal.II}, we would like to comment on the evaluation of the
+integrals involved. Since the integrals are usually too complex to be
+evaluated exactly (they may depend on coefficients appearing in the equation,
+or the solution of previous steps in nonlinear or time-dependent problems),
+they are approximated by quadrature. Assume we have a quadrature formula with
+$N_q$ points $x_q$ defined on cell in real space (as opposed to the unit cell)
+and weights $w_q$. Then, for example for the Laplace equation, we approximate
+\begin{gather}
+  \hat A^K_{ij}
+  \equiv
+  \int_K \nabla\varphi_i \cdot \nabla \varphi_j \; dx
+  \approx
+  \sum_{q=0}^{N_q-1} 
+  \nabla\varphi_i(x_q) \cdot \nabla \varphi_j(x_q)
+  \ w_q |\text{det} \ J(\hat x_q)|.
+\end{gather}
+For other problems, the integrand is different, but the principle remains the
+same. $\text{det}\ J(\hat x_q)$ denotes the determinant of the Jacobian of the
+transformation between the unit cell on which the quadrature weights are
+defined, and the real cell, and $\hat x_q$ is the point on the unit cell
+corresponding to the quadrature point $x_q$ in real space.
+
+Since all matrices and right hand side vectors only require knowledge of the
+values and gradients of shape functions at quadrature points, this is all that
+\texttt{deal.II} usually provides. One can see this as a kind of \textit{view}
+on a finite element, as it only provides a certain perspective on the actual
+definition of a shape function. Nevertheless, this is entirely sufficient for
+all purposes of programming finite element programs. 
+
+In \texttt{deal.II} the \texttt{FEValues} class does this: you give it a
+finite element definition, a quadrature formula object, and an object defining
+the transformation between unit and real cell, and it provides you with the
+values, gradient, and second derivatives of shape functions at the quadrature
+points. It also gives access to the determinant of the Jacobian, although only
+multiplied with $w_q$ as these two are always used in conjunction. It also
+provides you with many other fields, such as normal vectors to the outer
+boundary. In practice you do not need them all computed on each cell; thus,
+you have to specify explicitly in which data you are interested when
+constructing \texttt{FEValues} objects.
+
+In the following, we provide a list of connections between the symbols introduced
+above, and the respective functions and variable names used in typical
+\texttt{deal.II} programs. With this, we will subsequently show the basic
+structure of an assembly routine. If you have already taken a look at the
+example programs provided with \texttt{deal.II}, you will recognize all these
+names. If you haven't, this would be a good time to look at the first
+three of them.
+
+
+\begin{center}
+  \begin{tabular}{|ll|}
+    \hline
+    $A$ & \texttt{system\_matrix} \\
+    $\hat A^K$ & \texttt{cell\_matrix} \\
+    $K$ & \texttt{cell} \\
+    $N$ & \texttt{dof\_handler.n\_dofs()} \\
+    $N_K$ & \texttt{fe.dofs\_per\_cell} \\
+    $I_K$ & \texttt{local\_dof\_indices} \\
+    $N_q$ & \texttt{quadrature\_formula.n\_quadrature\_points} \\
+    $\varphi_i(x_q)$ & \texttt{fe\_values.shape\_value(i,q)} \\
+    $\nabla\varphi_i(x_q)$ & \texttt{fe\_values.shape\_grad(i,q)} \\
+    $x_q$ & \texttt{fe\_values.quadrature\_point(q)} \\
+    $|\text{det} J(\hat x_q)| w_q$ & \texttt{fe\_values.JxW(q)} \\
+    \hline
+  \end{tabular}  
+\end{center}
+
+With this vocabulary, the typical matrix assembly loop in \texttt{deal.II} has
+the following form: first declare a quadrature object and use it for the
+initialization of a \texttt{FEValues} object as discussed above:
+\begin{verbatim}
+  QGauss2<2>  quadrature_formula;
+  FEValues<2> fe_values (fe, quadrature_formula, 
+                         UpdateFlags(update_values    |
+                                     update_gradients |
+                                     update_JxW_values));
+\end{verbatim}
+In practice, you may want to use a different set of fields to be updated on
+each cell. For example if you do not need the values of shape functions on a
+cell, you may omit \texttt{update\_values} from the list. Also note that by
+default a bi- or tri-linear (depending on space dimension) mapping between
+unit and real cell is used. Other mappings are possible, for example quadratic
+ones, or a mapping that makes use of the fact that in many cases cells are
+actually rectangular, rather than arbitrary quadrilaterals; in order to use
+them, another constructor of the \texttt{FEValues} class can be used, which
+takes a mapping object as first argument, before the other arguments listed
+above.
+
+Next we define abbreviations for the values of $N_K$ and $N_q$:
+\begin{verbatim}
+  const unsigned int 
+      dofs_per_cell = fe.dofs_per_cell,
+      n_q_points    = quadrature_formula.n_quadrature_points;
+\end{verbatim}
+Then have an object to store the matrix $\hat A^K$, which is of size
+$N_K\times N_K$:
+\begin{verbatim}
+  FullMatrix<double>   cell_matrix (dofs_per_cell, dofs_per_cell);
+\end{verbatim}
+And an object representing the set of global indices of degrees of freedom,
+previously denoted by $I_K$, that have support on the present cell, i.e. those
+degrees of freedom local to the present cell:
+\begin{verbatim}
+  std::vector<unsigned int> local_dof_indices (dofs_per_cell);
+\end{verbatim}
+The next step is then to loop over all cells:
+\begin{verbatim}
+  typename DoFHandler<dim>::active_cell_iterator
+       cell = dof_handler.begin_active(),
+       endc = dof_handler.end();
+  for (; cell!=endc; ++cell)
+    {
+\end{verbatim}
+On each cell, first tell the \texttt{FEValues} object to compute the values of
+the various fields for this particular cell, and do not forget to reset the
+local matrix $\hat A^K$ to zero before adding it up:
+\begin{verbatim}
+      fe_values.reinit (cell);
+      cell_matrix.clear ();
+\end{verbatim}
+Now comes the main part, assembling the local matrix $\hat A^K$. It consists
+of a loop over all indices $0\le i,j \le N_K$ and all quadrature points $0\le
+q\le N_q$, and summing up the contributions. As this is what we will discuss
+in detail later on, we only denote it here by an ellipse:
+\begin{verbatim}
+      for (unsigned int i=0; i<dofs_per_cell; ++i)
+        for (unsigned int j=0; j<dofs_per_cell; ++j)
+          for (unsigned int q=0; q<n_q_points; ++q)
+            cell_matrix(i,j) += ...;
+
+\end{verbatim}
+After we have $\hat A^K$, we still have to sum it into the global matrix
+$A$. This is done by first getting the set $I_K$ of the global indices of the
+shape functions that were active on this cell, and then distributing $\hat
+A^K$: 
+\begin{verbatim}
+      cell->get_dof_indices (local_dof_indices);
+
+      for (unsigned int i=0; i<dofs_per_cell; ++i)
+        for (unsigned int j=0; j<dofs_per_cell; ++j)
+          system_matrix.add (local_dof_indices[i],
+                             local_dof_indices[j],
+                             cell_matrix(i,j));
+    };
+\end{verbatim}
+When this is done, we go on to the next cell.
+
+Within this framework, the only open point is assembling $\hat A^K$ on one
+quadrature point. This will be subject of the rest of this report.
+
+
+\section{Assembling scalar problems}
+
+For scalar problems, assembling $\hat A^K$ is relatively simple. With the
+terms introduced above, and for the Laplace equation, this looks as follows:
+\begin{verbatim}
+  local_matrix(i,j) += (fe_values.shape_grad(i,q_point) *
+                        fe_values.shape_grad(j,q_point) *
+                        fe_values.JxW (q_point));
+\end{verbatim}
+This term is placed in the innermost loop, i.e. is performed for all indices
+$i,j$, and all quadrature points \texttt{q\_point}.
+
+For nonsymmetric problems, the order of terms has to be considered, as
+mentioned above. For example, for the advection equation
+\begin{gather*}
+  \beta \cdot \nabla u = f,
+\end{gather*}
+with which the bilinear form
+\begin{gather*}
+  a(u,v) = (\beta \cdot \nabla u, v)_\Omega
+\end{gather*}
+is associated, the local matrix is assembled as
+\begin{verbatim}
+  local_matrix(i,j) += (fe_values.shape_values(i,q_point) *
+                        ( beta * fe_values.shape_grad(j,q_point) ) *
+                        fe_values.JxW (q_point));
+\end{verbatim}
+Here, \texttt{beta} is an object of type \texttt{Tensor<1,dim>}, which
+represents a tensor of rank 1 in \texttt{dim} space dimensions.
+
+Assembling matrices for scalar problems is also shown from a practical
+perspective in many of the example programs of \texttt{deal.II}, where it is
+also demonstrated how to do this for the right hand side vectors. Thus, scalar
+problems are not too interesting, and we now turn to vector-valued problems.
+
+
+
+\section{Vector-valued problems}
+
+Since we need some problems at which we will explain assembling the matrix for
+the vector-valued case, we now briefly introduce two simple equations. The
+first are the Lam\'e equations of elasticity, which are taken for the symmetric
+case, then we briefly introduce the Stokes equations as a nonsymmetric problem.
+
+\subsection{The elastic equations}
+\label{sec:elastic}
+
+As first example for the methods we are going to discuss for vector-valued
+problems, we consider the elastic Lam\'e equations for isotropic materials,
+which read in strong form:
+$$
+   -
+   \nabla (\lambda+\mu) (\div \vec u)
+   -
+   (\nabla \cdot \mu \nabla) \vec u
+   =
+   \vec f.
+$$
+These equations describe the three-dimensional deformation $\vec u$ of an
+elastic body under a body force $\vec f$. The respective bilinear form
+associated with this operator is then
+$$
+  a(\vec u, \vec v) =
+  \left(
+    (\lambda+\mu) \div \vec u, \div \vec v
+  \right)_\Omega
+  +
+  \sum_k
+  \left(
+    \mu \nabla u_k, \nabla v_k
+  \right)_\Omega,
+$$
+or as a sum over components:
+$$
+  a(\vec u, \vec v) =
+  \sum_{k,l}
+  \left(
+    (\lambda+\mu) \partial_l u_l, \partial_k v_k
+  \right)_\Omega
+  +
+  \sum_{k,l}
+  \left(
+    \mu \partial_l u_k, \partial_l v_k
+  \right)_\Omega.
+$$
+
+When assembling matrices, it is advantageous to write the weak form
+(i.e. after integration by parts) as a kind of operator. This is since matrix
+elements after discretization are defined as
+\begin{gather*}
+  A_{ij} = a(\varphi_j,\varphi_i)_\Omega,
+\end{gather*}
+where $\varphi_i,\varphi_j$ are two vector-valued trial functions, and it
+would be nice if we could write the bilinear form $a(\cdot,\cdot)$ as a kind
+of scalar product $(\varphi_i, Q \varphi_j)$, where $Q$ is a differential
+operator. This is trivial if we take $Q$ as the operator of the strong form,
+$Q=-\nabla (\lambda+\mu) \div - (\nabla \cdot \mu \nabla)$, but we wanted to
+do this for the weak form. For this, we introduce some notation that is used
+in quantum field theory: for differential operators, we indicate by an arrow
+placed atop of it whether it shall act on the object to the left or to the
+right of it. Thus, 
+$\varphi \overleftarrow\nabla \cdot \overrightarrow\nabla \psi
+=(\nabla\varphi)\cdot(\nabla\psi)$. With this, a simple computation shows 
+that 
+\begin{multline*}
+  a(\vec u,\vec v)
+  =
+  (\lambda+\mu)
+  \left(
+    \begin{pmatrix}
+      u_1 \\ u_2
+    \end{pmatrix}
+    \mid
+    \begin{pmatrix}
+      \leftpartial_1 \rightpartial_1 &
+      \leftpartial_1 \rightpartial_2 \\
+      \leftpartial_2 \rightpartial_1 &
+      \leftpartial_2 \rightpartial_2
+    \end{pmatrix}
+    \mid
+    \begin{pmatrix}
+      v_1 \\ v_2
+    \end{pmatrix}
+  \right)_\Omega
+  \\
+  +
+  \mu
+  \left(
+    \begin{pmatrix}
+      u_1 \\ u_2
+    \end{pmatrix}
+    \mid
+    \left(
+      \leftpartial_1 \rightpartial_1 + 
+      \leftpartial_2 \rightpartial_2
+    \right)
+    \begin{pmatrix}
+      1 & 0 \\
+      0 & 1
+    \end{pmatrix}
+    \mid
+    \begin{pmatrix}
+      v_1 \\ v_2
+    \end{pmatrix}
+  \right)_\Omega.
+\end{multline*}
+The sought operator $Q$ is then
+\begin{gather*}
+  Q
+  =
+  (\lambda+\mu)
+  \begin{pmatrix}
+    \leftpartial_1 \rightpartial_1 &
+    \leftpartial_1 \rightpartial_2 \\
+    \leftpartial_2 \rightpartial_1 &
+    \leftpartial_2 \rightpartial_2
+  \end{pmatrix}
+  +
+  \mu
+  \begin{pmatrix}
+    \leftpartial_1 \rightpartial_1 + 
+    \leftpartial_2 \rightpartial_2 & 0 \\
+    0 & \leftpartial_1 \rightpartial_1 + 
+    \leftpartial_2 \rightpartial_2
+  \end{pmatrix},
+\end{gather*}
+and $a(\vec u,\vec v)=(\vec u | Q | \vec v)$. We demonstrate the fact that $Q$
+acts to both sides by placing it in the middle of the scalar product, just as
+in the bra-ket notation of quantum physics. 
+
+The advantages of this formulation will become clear when discussing
+assembling matrices below. For now, we remark that the symmetry of the weak
+form is equally apparent from the form of $Q$ as well as from the initial
+definition of $a(\cdot,\cdot)$.
+
+
+
+\subsection{The Stokes equations}
+\label{sec:stokes}
+
+For a nonsymmetric problem, we take the Stokes equations: 
+\begin{align*}
+  -\Delta \vec u + \nabla p &= 0,
+  \\
+  \text{div } \vec u &= 0.
+\end{align*}
+We denote by $\vec w=\{\vec u,p\}$ the entire solution vector. In the weak
+form, the above equations read
+\begin{gather*}
+  a(\vec u,p; \vec v, q)
+  =
+  \nu(\nabla \vec u_1, \nabla \vec v_1)
+  +\nu(\nabla \vec u_2, \nabla \vec v_2)
+  - (p, \nabla\cdot \vec v)
+  + (\nabla\cdot\vec u, q).
+\end{gather*}
+Since we integrated the gradient term in the first equation by parts, but not
+the divergence term in the second equation, the problem is now
+nonsymmetric. If we would have liked, we could have made the problem symmetric
+again by multiplying the entire second equation by $-1$, but we don't want to
+do that for now for illustrational purposes.
+
+Again, we introduce the operator $Q$ for this problem, which after some
+computations turns out to be
+\begin{gather*}
+  Q
+  =
+  \begin{pmatrix}
+    \nu(\leftpartial_1 \rightpartial_1 +
+    \leftpartial_2 \rightpartial_2)     & 0 & -\leftpartial_1 \\
+    0 & \nu(\leftpartial_1 \rightpartial_1 +
+        \leftpartial_2 \rightpartial_2) & -\leftpartial_2 \\
+    \rightpartial_1 & \rightpartial_2 & 0
+  \end{pmatrix}.
+\end{gather*}
+Again, it is clear from this form that we could have made the operator
+symmetric by multiplying the last row by $-1$. Note when checking the symmetry
+of $Q$ that taking the transpose of such an operator means reverting the
+directions of the arrows over the operators, and exchanging their order.
+For example, using the first term, these two steps are 
+$\leftpartial_1 \rightpartial_1 \rightarrow \rightpartial_1 \leftpartial_1
+\rightarrow \leftpartial_1 \rightpartial_1$.
+
+
+\section{Assembling vector-valued problems: The simple case}
+
+The simple case in assembling vector-valued problems is when the (also
+vector-valued) shape functions are chosen such that only one component in the
+vector is nonzero. This is usually the case, if we choose the shape functions
+to be the outer product of scalar shape functions, such as independent
+bilinear ansatz spaces for each component of a finite element space.
+
+In this case, each shape function $\Phi_i$ has the representation
+\begin{gather*}
+  \Phi_i(\vec x) = 
+  \left( 0, \dots, 0, \varphi_i(\vec x), 0, \ldots, 0\right)^T,
+\end{gather*}
+where $\Phi_i$ is the vector-valued shape function, and $\varphi_i$ its
+only non-zero component. Let us denote by $c(i)$ the index of this non-zero
+component, then $\Phi_i$ can also be written as 
+\begin{gather*}
+  \left(\Phi_i(\vec x)\right)_l
+  =
+  \varphi_i(\vec x) \delta_{c(i),l},
+\end{gather*}
+with the Kronecker delta function $\delta_{jk}$.
+
+With this simple form, the cell matrix on cell $K$ has a simple form:
+\begin{gather*}
+  A^K_{ij}
+  =
+  a_K(\Phi_i,\Phi_j)
+  =
+  \left(\Phi_i \mid Q \mid \Phi_j \right)_K
+  =
+  \left(\varphi_i \mid Q_{c(i),c(j)} \mid \varphi_j \right)_K.
+\end{gather*}
+Thus, in assembling the local cell matrices, we only have to determine the
+single components in which the two shape functions are non-zero, and 
+pick one element from the matrix $Q$ to assemble each entry of the cell
+matrix with the help of the values of the functions $\varphi_i$ at the
+quadrature points. Here, it comes handy that we have written the operator as a
+matrix operator $Q$, since this makes it very clear how shape functions $i$
+and $j$ couple: if $Q_{c(i),c(j)}$ is zero, then they do not couple at all for
+this operator. Otherwise, it is easily visible which derivative acts on which
+shape function for this combination of shape functions.
+
+In \texttt{deal.II}, these two actions mentioned above (getting the non-zero
+component of a shape function, and the value of this component at a given
+quadrature point) are done as follows:
+\begin{itemize}
+\item \textit{Determining the non-zero component:} Given the shape function
+  with number $i$ (i.e. its index local to the degrees of freedom on the
+  present cell), its only non-zero component is obtained by the function call 
+\begin{verbatim}
+  const unsigned int nonzero_component_i
+     = fe.system_to_component_index(i).first;
+\end{verbatim}
+  The \texttt{FiniteElement::system\_to\_component\_index} returns a pair of
+  numbers for each index $0\le i < N_K$, the first of which denotes the only
+  non-zero component of the shape function $i$. Since for the case described
+  in this section, the individual components of the vector-valued finite
+  element are independent, we consider each component as a set of scalar shape
+  functions; the second number of the pair returned by the function then
+  denotes the index of the shape function $\varphi_i$ within the shape
+  functions corresponding to this component.
+  
+  If, for example, our finite element in use is a $Q^2/Q^2/Q^1$ combination
+  (for example for 2d flow computations: bi-quadratic ansatz functions for the
+  velocities, bi-linear for the pressure), then we have a total of 22 shape
+  functions (9+9+4). For each $0\le i < 22$, the first part of the pair
+  returned by the function described above, $c(i)$, may then either be 0, 1,
+  or 2, denoting the three possible components of the finite element. If
+  $c(i)$ is either 0 or 1, then the component to which the shape function $i$
+  belongs is a bi-quadratic one, and the second index is between $0$ and $8$
+  (inclusive) as the $Q^2$ element has 9 shape functions. If $c(i)==2$, then
+  the second part is between 0 and 3 (inclusive).
+
+\item \textit{Getting the value of $\varphi_i(\vec x_q)$:} Since only one
+  component of $\Phi_i$ is non-zero, we can use the same function as before,
+  i.e. \texttt{FEValues::shape\_value(i,q)}, which in the scalar case returned
+  the value of shape function $i$ at quadrature point $q$. Likewise, the 
+  \texttt{FEValues::shape\_grad(i,q)} function returns the gradient of this
+  particular component.
+
+  In other words, whether the finite element is scalar or not, the two
+  indicated functions return value and gradient of the only non-zero component
+  of a shape function. If the finite element is scalar, then it is of course
+  clear which component this is (since there $c(i)==0$ for all valid indices
+  $i$), in the vector-valued case, it is component $c(i)$.
+\end{itemize}
+
+
+\subsection{The elastic equations}
+\label{sec:elastic-simple}
+
+With this, and the definition of the ``bi-directional'' operator $Q$ in
+Section~\ref{sec:elastic}, the local matrix assembly function for the elastic
+equations would then read as follows:
+\begin{verbatim}
+  for (unsigned int i=0; i<fe.dofs_per_cell; ++i)
+    for (unsigned int j=0; j<fe.dofs_per_cell; ++j)
+      for (unsigned int q=0; q<n_q_points; ++q) 
+        {
+          const unsigned int
+            comp_i = fe.system_to_component_index(i).first,
+            comp_j = fe.system_to_component_index(j).first;
+
+                           // first assemble part with lambda+mu
+          cell_matrix(i,j) += ((lambda+mu)                       *
+                               fe_values.shape_grad(i,q)[comp_i] * 
+                               fe_values.shape_grad(j,q)[comp_j] *
+                               fe_values.JxW(q)); 
+
+                           // then part with mu only
+          if (comp_i == comp_j)
+            cell_matrix(i,j) += (mu                           *
+                                 (fe_values.shape_grad(i,q) * 
+                                  fe_values.shape_grad(j,q)  )*
+                                 fe_values.JxW(q)); 
+        };
+\end{verbatim}
+Note that this code works in any space dimension, not only for
+\texttt{dim==2}. Optimization of this is possible by hoisting the computation
+of \texttt{comp\_i} and \texttt{comp\_j}, denoting $c(i)$ and $c(j)$,
+respectively, out of the inner loops. Also, if the coefficients are
+non-constant, they need to be computed at each quadrature point; this may be
+done using this fragment in the innermost loop:
+\begin{verbatim}
+  const double
+    lambda_value = lambda.value(fe_values.quadrature_point(q)),
+    mu_value     = mu.value(fe_values.quadrature_point(q));
+\end{verbatim}
+assuming that \texttt{lambda,mu} are variables of classes describing space
+dependent functions, and which are derived
+from the \texttt{Function<dim>} class.
+
+
+\subsection{The Stokes equations}
+\label{sec:stokes-simple}
+
+For the Stokes equation, things are slightly more complicated since the three
+components denote different quantities, and the operator $Q$ does not have
+such a simple form, but the case is still simple enough. We present its
+generalization to an arbitrary number of space dimensions, i.e. assume that
+there are \texttt{dim} velocity variables and one scalar pressure:
+\begin{verbatim}
+  for (unsigned int i=0; i<fe.dofs_per_cell; ++i)
+    for (unsigned int j=0; j<fe.dofs_per_cell; ++j)
+      for (unsigned int q=0; q<n_q_points; ++q) 
+        {
+          const unsigned int
+            comp_i = fe.system_to_component_index(i).first,
+            comp_j = fe.system_to_component_index(j).first;
+
+                           // velocity-velocity coupling?
+          if ((comp_i<dim) && (comp_j<dim))
+            if (comp_i == comp_j)
+              cell_matrix(i,j) += (nu *
+                                   (fe_values.shape_grad(i,q) * 
+                                    fe_values.shape_grad(j,q)  ) *
+                                   fe_values.JxW(q)); 
+
+                           // velocity-pressure coupling
+          if ((comp_i<dim) && (comp_j==dim))
+            cell_matrix(i,j) += (-fe_values.shape_grad(i,q)[comp_i] * 
+                                  fe_values.shape_value(j,q)        *
+                                 fe_values.JxW(q)); 
+
+                           // pressure-velocity coupling
+          if ((comp_i==dim) && (comp_j<dim))
+            cell_matrix(i,j) += (fe_values.shape_value(i,q) * 
+                                 fe_values.shape_grad(j,q)[comp_j] *
+                                 fe_values.JxW(q)); 
+        };
+\end{verbatim}
+Again, optimization is possible by observing that only one of the outer
+\texttt{if}s in the body can be true, for example using \texttt{else} clauses,
+or \texttt{break} statements.
+
+
+\section{Assembling vector-valued problems: The complicated case}
+
+The more complicated case is when more than one component of a vector-valued
+shape function is non-zero, i.e. the representation
+\begin{gather*}
+  \Phi_i(\vec x) = 
+  \left( 0, \dots, 0, \varphi_i(\vec x), 0, \ldots, 0\right)^T,
+\end{gather*}
+does not hold any more. The usual case where this happens is when shape
+functions have to satisfy certain constraints, such as that they should have
+zero divergence or curl, or when the normal fluxes at some points, e.g. the
+face centers, are the degrees of freedom: 
+$\vec n\cdot \Phi_i(x_a) = \delta_{ia}$. In this case, the individual
+components of a shape function are no more independent, and thus cannot be
+chosen such that only one component is non-zero.
+
+What happens in this case? First, the function
+\texttt{FiniteElement::system\_\-to\_\-component\_\-index} does not make much sense
+any more, since a shape function $\Phi_i$ cannot be associated with only one
+vector component any more. Calling this function for basis functions $\Phi_i$
+that are not restricted to only one non-zero component will thus yield an
+exception being thrown.
+
+Second, the functions \texttt{FEValues::shape\_value} and
+\texttt{FEValues::shape\_grad} returning the values and gradients of the only
+non-zero component of a shape function at a quadrature point cannot work any
+more, since there are now more than only one non-zero components for some or
+all values of $i$. For those shape function for which this holds, you will
+again get an exception upon calling these functions.
+
+
+\subsubsection*{Getting information about shape functions}
+
+So how do you find out whether calling these functions is ok or not? In other
+words, how do you know whether shape function $\Phi_i$ has only one non-zero
+component, or more? For this, there are two functions:
+\texttt{FiniteElement::is\_primitive(i)} returns as a \texttt{bool} whether
+the shape function has only one non-zero component. For example, for a
+$Q^2/Q^2/Q^1$ element, this would be \texttt{true} for all 22 shape functions.
+For a finite element for which every shape function is non-zero in more than
+one component, it would be \texttt{false} for all indices $i$. It might also
+be \texttt{true} for only some shape functions, for example if the velocity
+components of the Stokes discretization are done using some more complicated
+element, but the pressure component with a $Q^1$, then it would be
+\texttt{true} for the pressure shape functions, but \texttt{false} otherwise.
+
+Second, the \texttt{FiniteElement::n\_nonzero\_components(i)} function returns
+in how many components the $i$th shape function is non-zero. Again, for the
+$Q^2/Q^2/Q^1$ combination, this would yield the value 1 for all allowed
+indices $i$. For coupled elements, it would be greater than 1.
+
+Third, you may sometimes want to know in which components a certain shape
+function is non-zero. For this, the
+\texttt{FiniteElement::get\_nonzero\_components(i)} function is the right thing: it
+returns a reference to a vector of boolean values, one for each component of
+the vector-valued finite element, and the values indicate whether the shape
+function is non-zero for each of them.
+
+Note that if you have the result of
+\texttt{FiniteElement::get\_\-nonzero\_\-components(i)}, then the result of
+\texttt{FiniteElement::n\_nonzero\_components(i)} is simply the number of
+\texttt{true} values in the array returned by the first function. In the same
+way,
+\texttt{FiniteElement::\-is\_primitive(i)} is simply whether
+\texttt{FiniteElement::\-n\_nonzero\_\-components(i)} returned a value other than
+1. The functions are thus redundant in some way, but useful nevertheless. Of
+course, the values of the  \texttt{FiniteElement::\-is\_primitive(i)}
+and  \texttt{FiniteElement::n\_nonzero\_components(i)} functions are not
+recomputed every time based on the result of some other function, but are
+cached once at the time of construction of a finite element object.
+
+
+\subsubsection*{Evaluating shape functions}
+
+Now, we have seen which functions cannot be called for non-primitive shape
+functions, and also how to find out about shape functions and whether they are
+primitive and the like. Yet, we don't have replacements for the functions that
+cannot be called, so here they are: instead of \texttt{FEValues::shape\_value}
+and \texttt{FEValues::shape\_grad}, call
+\texttt{FEValues::shape\_value\_component} and
+\texttt{FEValues::shape\_grad\_component}. These functions take as arguments
+first the number of the shape function, and second the number of the
+quadrature point (these are also the arguments of the original functions), but
+now as additional third argument the vector component.
+
+Of course, these functions can be called on primitive shape functions as
+well. In that case, the following holds:
+\begin{itemize}
+\item The value of \texttt{FEValues::shape\_value\_component(i,q,c)} is equal
+  to \texttt{FEValues::\-shape\_value(i,q)} if and only if the component
+  \texttt{c} is equal to \texttt{fe.system\_to\_\-component\_\-index(i).first},
+  i.e. if \texttt{c} is the only non-zero component of the shape function
+  \texttt{i}.
+\item For all other components \texttt{c}, the returned value of
+  \texttt{FEValues::shape\_\-value\_\-component(i,q,c)} is zero.
+\end{itemize}
+The same of course also holds for
+\texttt{FEValues::shape\_grad\_component(i,q,c)} and
+\texttt{FEValues::shape\_2nd\_derivative\_component(i,q,c)}.
+
+
+\subsection{The elastic equations}
+
+With the above, we can now assemble the matrix for the elastic equation in
+mostly the same way as before. The difference is that for each shape function,
+we have to loop over all components. The code then looks like this (compare
+this with the one in Section~\ref{sec:elastic-simple}):
+\begin{verbatim}
+  for (unsigned int i=0; i<fe.dofs_per_cell; ++i)
+   for (unsigned int comp_i=0; comp_i<fe.n_components(); ++comp_i)
+    for (unsigned int j=0; j<fe.dofs_per_cell; ++j)
+     for (unsigned int comp_j=0; comp_j<fe.n_components(); ++comp_j)
+      for (unsigned int q=0; q<n_q_points; ++q) 
+        {
+                       // first assemble part with lambda+mu
+          cell_matrix(i,j)
+             += ((lambda+mu)                       *
+                 fe_values.shape_grad_component(i,q,comp_i)[comp_i] * 
+                 fe_values.shape_grad_component(j,q,comp_j)[comp_j] *
+                 fe_values.JxW(q)); 
+
+                       // then part with mu only
+          if (comp_i == comp_j)
+            cell_matrix(i,j)
+              += (mu                           *
+                  (fe_values.shape_grad_component(i,q,comp_i) * 
+                   fe_values.shape_grad_component(j,q,comp_j)  )*
+                   fe_values.JxW(q)); 
+        };
+\end{verbatim}
+If you dislike this particular order of the loops, you can reorder them as you
+like, as they are independent.
+
+The code as shown above can be optimized. For example, instead of
+unconditionally performing the loop over all components of shape functions $i$
+of $j$, we might first ask whether these shape functions are primitive, using
+\texttt{fe.is\_primitive(i)}, and use the loop only if the result is false;
+if, on the other hand, the result is true, we only need to set
+\texttt{comp\_i} to the fixed value
+\texttt{fe.system\_to\_component\_index(i).first}, and likewise for shape
+function $j$.
+
+Another possibility for optimization would be to ask whether a certain
+component over which we loop is actually non-zero, or if the shape function is
+a non-primitive one but happens to be zero in the present component
+nevertheless. For this, we could replace the loop over \texttt{comp\_i} by
+this:
+\begin{verbatim}
+    for (unsigned int comp_i=0; comp_i<fe.n_components(); ++comp_i)
+      if (fe.get_nonzero_components(i)[comp_i] == true)
+\end{verbatim}
+If the if-clause does not succeed then this component of the shape function is
+definitely zero, and there will not be a contribution to the matrix anyway, so
+we can also skip the computations.
+
+
+\subsection{The Stokes equations}
+
+Likewise, this is now the code for the Stokes equations:
+\begin{verbatim}
+  for (unsigned int i=0; i<fe.dofs_per_cell; ++i)
+   for (unsigned int comp_i=0; comp_i<fe.n_components(); ++comp_i)
+    for (unsigned int j=0; j<fe.dofs_per_cell; ++j)
+     for (unsigned int comp_j=0; comp_j<fe.n_components(); ++comp_j)
+      for (unsigned int q=0; q<n_q_points; ++q) 
+        {
+                       // velocity-velocity coupling?
+          if ((comp_i<dim) && (comp_j<dim))
+            if (comp_i == comp_j)
+              cell_matrix(i,j)
+                  += (nu *
+                      (fe_values.shape_grad_component(i,q,comp_i) * 
+                       fe_values.shape_grad_component(j,q,comp_j)  ) *
+                      fe_values.JxW(q)); 
+
+                       // velocity-pressure coupling
+          if ((comp_i<dim) && (comp_j==dim))
+            cell_matrix(i,j)
+                += (-fe_values.shape_grad_component(i,q,comp_i)[comp_i] * 
+                    fe_values.shape_value_component(j,q,comp_j)        *
+                    fe_values.JxW(q)); 
+
+                       // pressure-velocity coupling
+          if ((comp_i==dim) && (comp_j<dim))
+            cell_matrix(i,j)
+                += (fe_values.shape_value_component(i,q,comp_i) * 
+                    fe_values.shape_grad_component(j,q,comp_j)[comp_j] *
+                    fe_values.JxW(q)); 
+        };
+\end{verbatim}
+Again, the same optimizations as above are possible. Here, they even seem
+worthwhile, since it is often the case that the velocity variables are
+discretized using a non-primitive finite element, while the pressure uses a
+primitive element. In that case, some shape functions are primitive (namely
+those discretizing the pressure), and of the non-primitive shape functions
+(those for the velocity variables) some vector components (the pressure
+components) are always zero. Thus, both optimizations described above would be
+useful. We leave the implementation of this to the reader.
+
+
+\section{Conclusions}
+
+We have shown how finite element matrices are assembled using the
+functionality of the \texttt{deal.II} library. For the scalar case, and, in
+the vector-valued case, if the
+finite element shape functions are such that only one vector component of each
+shape function is non-zero, assembling is relatively simple. In the other
+case, when there are shape functions with more than one non-zero component,
+some more care is necessary, but assembling is still straightforward and
+follows the same pattern as before.
+
+\end{document}

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.