%!PS-Adobe-2.0 %%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software %%Title: des-break.dvi %%Pages: 15 1 %%BoundingBox: 0 0 612 792 %%EndComments %%BeginProcSet: tex.pro /TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{ isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10 N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{ /vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 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 /IE 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 IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /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 dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{ ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup 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 /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image} imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 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}N /eop{clear SI restore showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for}N /p /show load N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{ moveto}B /delta 0 N /tail{dup /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{clear SS restore}B end %%EndProcSet TeXDict begin 1000 300 300 @start /Fa 2 49 df0 D<060F0F0E1E1E1C3C383830707060E0C04008117F910A>48 D E /Fb 31 122 df45 D<387CFEFEFE7C3807077C8610>I<001800007800 01F800FFF800FFF80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800 01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800 01F80001F8007FFFE07FFFE013207C9F1C>49 D<03FC000FFF003C1FC07007E07C07F0FE03F0FE 03F8FE03F8FE01F87C01F83803F80003F80003F00003F00007E00007C0000F80001F00003E0000 380000700000E01801C0180380180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FFFFF015 207D9F1C>I<00FE0007FFC00F07E01E03F03F03F03F81F83F81F83F81F81F03F81F03F00003F0 0003E00007C0001F8001FE0001FF000007C00001F00001F80000FC0000FC3C00FE7E00FEFF00FE FF00FEFF00FEFF00FC7E01FC7801F81E07F00FFFC001FE0017207E9F1C>I<0000E00001E00003 E00003E00007E0000FE0001FE0001FE00037E00077E000E7E001C7E00187E00307E00707E00E07 E00C07E01807E03807E07007E0E007E0FFFFFEFFFFFE0007E00007E00007E00007E00007E00007 E00007E000FFFE00FFFE17207E9F1C>I66 D<0003FE0080001FFF818000FF01E38001F8003F8003E0001F8007C0000F800F800007801F8000 07803F000003803F000003807F000001807E000001807E00000180FE00000000FE00000000FE00 000000FE00000000FE00000000FE00000000FE00000000FE000000007E000000007E000001807F 000001803F000001803F000003801F800003000F8000030007C000060003F0000C0001F8003800 00FF00F000001FFFC0000003FE000021227DA128>I72 D75 D80 D<01FC0407FF8C1F03FC3C007C7C003C78001C78001CF8000C F8000CFC000CFC0000FF0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FF 00007F00003F00003FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF80 18227DA11F>83 D<7FFFFFFF807FFFFFFF807E03F80F807803F807807003F803806003F80180E0 03F801C0E003F801C0C003F800C0C003F800C0C003F800C0C003F800C00003F800000003F80000 0003F800000003F800000003F800000003F800000003F800000003F800000003F800000003F800 000003F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8 00000003F800000003F8000003FFFFF80003FFFFF80022227EA127>I<07FC001FFF803F07C03F 03E03F01E03F01F01E01F00001F00001F0003FF003FDF01FC1F03F01F07E01F0FC01F0FC01F0FC 01F0FC01F07E02F07E0CF81FF87F07E03F18167E951B>97 DI<0001FE000001FE0000003E0000003E0000003E0000003E 0000003E0000003E0000003E0000003E0000003E0000003E0000003E0001FC3E0007FFBE000F81 FE001F007E003E003E007E003E007C003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC 003E00FC003E00FC003E007C003E007C003E003E007E001E00FE000F83BE0007FF3FC001FC3FC0 1A237EA21F>100 D<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00F8FFFFF8 FFFFF8FC0000FC0000FC00007C00007C00007E00003E00181F00300FC07003FFC000FF0015167E 951A>I<03FC1E0FFF7F1F0F8F3E07CF3C03C07C03E07C03E07C03E07C03E07C03E03C03C03E07 C01F0F801FFF0013FC003000003000003800003FFF801FFFF00FFFF81FFFFC3800FC70003EF000 1EF0001EF0001EF0001E78003C7C007C3F01F80FFFE001FF0018217E951C>103 DI<1C003E007F007F00 7F003E001C000000000000000000000000000000FF00FF001F001F001F001F001F001F001F001F 001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B247EA310>I108 DI I<00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC007EFC007EFC007EFC007EFC00 7EFC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC000FE0017167E951C>II114 D<0FF3003FFF00781F00600700E00300E00300F00300FC00007FE0007F F8003FFE000FFF0001FF00000F80C00780C00380E00380E00380F00700FC0E00EFFC00C7F00011 167E9516>I<0180000180000180000180000380000380000780000780000F80003F8000FFFF00 FFFF000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8180 0F81800F81800F81800F81800F830007C30003FE0000F80011207F9F16>II120 DI E /Fc 10 104 df0 D<70F8F8F87005057C8D 0D>I<01800180018001800180C183F18F399C0FF003C003C00FF0399CF18FC183018001800180 0180018010147D9417>3 D<003FC00000C2300003020C00040202000802010010020080100200 802002004040020020400200204002002080020010800200108002001080020010FFFFFFF08002 001080020010800200108002001080020010400200204002002040020020200200401002008010 020080080201000402020003020C0000C23000003FC0001C207D9A23>8 D<000000C0000003C000000F0000003C000000F0000003C00000070000001C00000078000001E0 0000078000001E00000078000000E0000000780000001E0000000780000001E000000078000000 1C0000000700000003C0000000F00000003C0000000F00000003C0000000C00000000000000000 00000000000000000000000000000000000000007FFFFF80FFFFFFC01A247C9C23>20 D<0100000000020000000002000000000400000000080000000010000000002000000000FFFFFF FFF8FFFFFFFFF82000000000100000000008000000000400000000020000000002000000000100 00000025107C922D>32 D<00000004000000000200000000020000000001000000000080000000 00400000000020FFFFFFFFFCFFFFFFFFFC00000000200000000040000000008000000001000000 0002000000000200000000040026107D922D>I58 D<000F0038006000E001C001C001C0 01C001C001C001C001C001C001C001C001C001C001C001C0038007001E00F8001E000700038001 C001C001C001C001C001C001C001C001C001C001C001C001C001C001C000E000600038000F102D 7DA117>102 DI E /Fd 13 122 df<3078FCFC78300606778518>46 D<03F0000FFE003FFF007C0F807003C0E001C0F000E0 F000E06000E00000E00000E00001C00001C00003C0000780000F00001E00003C0000780000F000 01E00007C0000F80001E00E03C00E07FFFE0FFFFE07FFFE0131C7E9B18>50 D<07F8001FFE003FFF007807807803C07801C03001C00001C00003C0000380000F0003FF0003FE 0003FF000007800003C00001C00000E00000E00000E0F000E0F000E0F001C0F003C07C07803FFF 001FFE0003F800131C7E9B18>I<001F00003F0000770000770000E70001E70001C70003870007 87000707000E07001E07003C0700380700780700F00700FFFFF8FFFFF8FFFFF800070000070000 0700000700000700000700007FF000FFF8007FF0151C7F9B18>I<3078FCFC7830000000000000 00003078FCFC78300614779318>58 D<00F8E003FEE007FFE00F07E01E03E03C01E03800E07000 E07000E0700000E00000E00000E00000E00000E00000E00000E00000E000007000007000E07000 E03800E03C00E01E01C00F07C007FF8003FE0000F800131C7E9B18>67 D<01FE0007FF001FFF80 3E0780380300700000700000E00000E00000E00000E00000E00000E000007000007001C03801C0 3E03C01FFF8007FF0001FC0012147D9318>99 D<01F00007FC001FFE003E0F0038078070038070 0380E001C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E03C01FFF8007FF0001 FC0012147D9318>101 D<7FE000FFE0007FE00000E00000E00000E00000E00000E00000E00000 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000 E00000E00000E0007FFFC0FFFFE07FFFC0131C7E9B18>108 D<01F0000FFE001FFF003E0F8038 03807001C07001C0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C03C07803E0F801F FF000FFE0001F00013147E9318>111 D<07F7003FFF007FFF00780F00E00700E00700E007007C 00007FE0001FFC0003FE00001F00600780E00380E00380F00380F80F00FFFF00FFFC00E7F00011 147D9318>115 D<0180000380000380000380000380007FFFC0FFFFC0FFFFC003800003800003 80000380000380000380000380000380000380000380400380E00380E00380E001C1C001FFC000 FF80003E0013197F9818>I<7F8FF0FF8FF87F8FF00E01C00E03800E0380070380070700070700 038700038600038E0001CE0001CE0000CC0000CC0000DC00007800007800007800007000007000 00700000F00000E00079E0007BC0007F80003F00001E0000151E7F9318>121 D E /Fe 51 122 df<0E1F3F3F1D0102020404081020C0080E779F0E>39 D<1C3C3C3C3C040408081020204080060E7D840E>44 D<7FF0FFE07FE00C037D8A10>I<70F8F8 F0E005057B840E>I<000F800030E000E07001C0700380300380380700380F00780F00780E0078 1E00781E00703C00F03C00F03C00F03C00F07801E07801E07801E07801C07003C0F003C0F00380 F00780F00700700700700E00701C003038001870000FC000151F7C9D17>48 D<000200020006000E003C00DC031C001C0038003800380038007000700070007000E000E000E0 00E001C001C001C001C003800380038003800780FFF80F1E7B9D17>I<08E0100BF01017F8201F F8603E19C0380E80200080600100400300800300000600000E00000C00001C00001C0000380000 380000700000700000F00000F00001E00001E00001E00003C00003C00003C00007C00007800007 8000030000141F799D17>55 D<001F000061800080C00100600300600600600600600600600E00 C00F00800F818007C30007E40003F80001F80003FC00047E00183F00300F00200700600700C003 00C00300C00300800600800600C00C00C008004030003060001F8000131F7B9D17>I<001F0000 718000C0C00180C00380E00700E00F00E00F01E01E01E01E01E01E01E01E01C01C03C01C03C01C 03C01C07C01C0F800C0F8006378003C700000F00000E00000E00001C00601C00F03800F07000E0 600080C0004380003E0000131F7B9D17>I<070F1F1F0E0000000000000000000070F8F8F0E008 147B930E>I<00000200000006000000060000000E0000001E0000001E0000003F0000002F0000 004F0000004F0000008F0000010F0000010F0000020F0000020F0000040F00000C0F0000080F00 00100F0000100F0000200F80003FFF800040078000C00780008007800100078001000780020007 8002000780060007801E000F80FF807FF81D207E9F22>65 D<0000FE0200078186001C004C0038 003C0060003C00C0001C01C0001803800018070000180F0000181E0000101E0000103C0000003C 00000078000000780000007800000078000000F0000000F0000000F0000000F0000000F0000080 7000008070000080700001003800010038000200180004000C001800060020000381C00000FE00 001F217A9F21>67 D<01FFFF80001E00E0001E0070001E0038001E001C003C001C003C000E003C 000E003C000E0078000E0078000E0078000E0078000E00F0001E00F0001E00F0001E00F0001E01 E0003C01E0003C01E0003C01E0007803C0007003C0007003C000E003C001C0078001C007800380 07800E0007801C000F007000FFFFC0001F1F7D9E22>I<01FFFFFE001E001C001E000C001E0004 001E0004003C0004003C0004003C0004003C00040078080800780800007808000078180000F030 0000FFF00000F0300000F0300001E0200001E0200001E0200001E0001003C0002003C0002003C0 004003C00040078000800780018007800100078007000F001F00FFFFFE001F1F7D9E1F>I<01FF FFFC001E0038001E0018001E0008001E0008003C0008003C0008003C0008003C00080078001000 780800007808000078080000F0100000F0300000FFF00000F0300001E0200001E0200001E02000 01E0200003C0000003C0000003C0000003C00000078000000780000007800000078000000F8000 00FFF800001E1F7D9E1E>I<01FFF3FFE0001F003E00001E003C00001E003C00001E003C00003C 007800003C007800003C007800003C007800007800F000007800F000007800F000007800F00000 F001E00000FFFFE00000F001E00000F001E00001E003C00001E003C00001E003C00001E003C000 03C007800003C007800003C007800003C007800007800F000007800F000007800F000007800F00 000F801F0000FFF1FFE000231F7D9E22>72 D<01FFF0001F00001E00001E00001E00003C00003C 00003C00003C0000780000780000780000780000F00000F00000F00000F00001E00001E00001E0 0001E00003C00003C00003C00003C0000780000780000780000780000F8000FFF800141F7D9E12 >I<001FFF0000F80000F00000F00000F00001E00001E00001E00001E00003C00003C00003C000 03C0000780000780000780000780000F00000F00000F00000F00001E00001E00301E00781E00F8 3C00F83C00F0780080700040E00021C0001F000018207D9E18>I<01FFF800001F0000001E0000 001E0000001E0000003C0000003C0000003C0000003C0000007800000078000000780000007800 0000F0000000F0000000F0000000F0000001E0000001E0000001E0000001E0008003C0010003C0 010003C0030003C00200078006000780060007800C0007801C000F007800FFFFF800191F7D9E1D >76 D<01FE00007FC0001E0000FC00001E0000F80000170001780000170001780000270002F000 00270004F00000270004F00000270008F00000470009E00000470011E00000470021E000004700 21E00000870043C00000838043C00000838083C00000838083C000010381078000010382078000 0103820780000103840780000203840F00000203880F00000203900F00000203900F00000401E0 1E00000401E01E00000401C01E00000C01801E00001C01803E0000FF8103FFC0002A1F7D9E29> I<01FF007FE0001F000F00001F0004000017800400001780040000278008000023C008000023C0 08000023C008000041E010000041E010000041F010000040F010000080F0200000807820000080 782000008078200001003C400001003C400001003C400001001E400002001E800002001E800002 000F800002000F800004000F0000040007000004000700000C000700001C00020000FF80020000 231F7D9E22>I<0001FC0000070700001C01C0003000E000E0006001C000700380007007800038 070000380E0000381E0000381C0000383C0000383C000038780000787800007878000078780000 78F00000F0F00000F0F00000E0F00001E0F00001C0F00003C0700003807000070078000F003800 1E0038003C001C0070000E00E0000783800001FC00001D217A9F23>I<01FFFF80001E00E0001E 0070001E0038001E003C003C003C003C003C003C003C003C003C0078007800780078007800F000 7800E000F003C000F00F0000FFFC0000F0000001E0000001E0000001E0000001E0000003C00000 03C0000003C0000003C00000078000000780000007800000078000000F800000FFF000001E1F7D 9E1F>I<01FFFF00001E03C0001E00E0001E0070001E0078003C0078003C0078003C0078003C00 78007800F0007800F0007801E0007801C000F0070000F01E0000FFF00000F0380001E01C0001E0 1E0001E00E0001E00F0003C01E0003C01E0003C01E0003C01E0007803C0007803C0807803C0807 803C100F801C10FFF00C20000007C01D207D9E21>82 D<0007E040001C18C00030058000600380 00C0038001C00180018001000380010003800100038001000380000003C0000003C0000003F800 0001FF800001FFE000007FF000001FF0000001F800000078000000780000003800000038002000 3800200038002000300060007000600060006000E0007000C000E8038000C606000081F800001A 217D9F1A>I<0FFFFFF01E0780E0180780201007802020078020200F0020600F0020400F002040 0F0020801E0040001E0000001E0000001E0000003C0000003C0000003C0000003C000000780000 00780000007800000078000000F0000000F0000000F0000000F0000001E0000001E0000001E000 0001E0000003E00000FFFF00001C1F789E21>I<7FFC1FF807C003C00780010007800100078001 000F0002000F0002000F0002000F0002001E0004001E0004001E0004001E0004003C0008003C00 08003C0008003C00080078001000780010007800100078001000F0002000F0002000F0002000F0 004000F0004000700080007001000030020000380400000C18000007E000001D20779E22>III<00F1800389C00707800E03801C03803C0380 380700780700780700780700F00E00F00E00F00E00F00E20F01C40F01C40703C40705C40308C80 0F070013147C9317>97 D<07803F8007000700070007000E000E000E000E001C001C001CF01D0C 3A0E3C0E380F380F700F700F700F700FE01EE01EE01EE01CE03CE038607060E031C01F0010207B 9F15>I<007E0001C1000300800E07801E07801C07003C0200780000780000780000F00000F000 00F00000F00000F0000070010070020030040018380007C00011147C9315>I<0000780003F800 00700000700000700000700000E00000E00000E00000E00001C00001C000F1C00389C00707800E 03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E20F01C40F01C4070 3C40705C40308C800F070015207C9F17>I<007C01C207010E011C013C013802780C7BF07C00F0 00F000F000F0007000700170023804183807C010147C9315>I<00007800019C00033C00033C00 0718000700000700000E00000E00000E00000E00000E0001FFE0001C00001C00001C00001C0000 380000380000380000380000380000700000700000700000700000700000700000E00000E00000 E00000E00000C00001C00001C0000180003180007B0000F300006600003C00001629829F0E>I< 003C6000E27001C1E00380E00700E00F00E00E01C01E01C01E01C01E01C03C03803C03803C0380 3C03803C07003C07001C0F001C17000C2E0003CE00000E00000E00001C00001C00301C00783800 F0700060E0003F8000141D7E9315>I<01E0000FE00001C00001C00001C00001C0000380000380 00038000038000070000070000071E000763000E81800F01C00E01C00E01C01C03801C03801C03 801C0380380700380700380700380E10700E20700C20701C20700C40E00CC060070014207D9F17 >I<00C001E001E001C000000000000000000000000000000E003300230043804300470087000E 000E000E001C001C001C003840388030807080310033001C000B1F7C9E0E>I<01E0000FE00001 C00001C00001C00001C0000380000380000380000380000700000700000703C00704200E08E00E 11E00E21E00E40C01C80001D00001E00001FC00038E00038700038700038384070708070708070 7080703100E03100601E0013207D9F15>107 D<03C01FC0038003800380038007000700070007 000E000E000E000E001C001C001C001C0038003800380038007000700070007100E200E200E200 E200640038000A207C9F0C>I<1C0F80F0002630C318004740640C004780680E004700700E0047 00700E008E00E01C000E00E01C000E00E01C000E00E01C001C01C038001C01C038001C01C03800 1C01C0708038038071003803806100380380E10038038062007007006600300300380021147C93 25>I<1C0F802630C04740604780604700704700708E00E00E00E00E00E00E00E01C01C01C01C0 1C01C01C03843803883803083807083803107003303001C016147C931A>I<007C0001C3000301 800E01C01E01C01C01E03C01E07801E07801E07801E0F003C0F003C0F003C0F00780F00700700F 00700E0030180018700007C00013147C9317>I<01C1E002621804741C04781C04701E04701E08 E01E00E01E00E01E00E01E01C03C01C03C01C03C01C0380380780380700380E003C1C007238007 1E000700000700000E00000E00000E00000E00001C00001C0000FFC000171D809317>I<1C1E00 2661004783804787804707804703008E00000E00000E00000E00001C00001C00001C00001C0000 38000038000038000038000070000030000011147C9313>114 D<00FC030206010C030C070C06 0C000F800FF007F803FC003E000E700EF00CF00CE008401020601F8010147D9313>I<018001C0 038003800380038007000700FFF007000E000E000E000E001C001C001C001C0038003800380038 20704070407080708031001E000C1C7C9B0F>I<0E00C03300E02301C04381C04301C04701C087 03800E03800E03800E03801C07001C07001C07001C07101C0E20180E20180E201C1E200C264007 C38014147C9318>I<0E03803307802307C04383C04301C04700C08700800E00800E00800E0080 1C01001C01001C01001C02001C02001C04001C04001C08000E300003C00012147C9315>I<0E00 C1C03300E3C02301C3E04381C1E04301C0E04701C060870380400E0380400E0380400E0380401C 0700801C0700801C0700801C0701001C0701001C0602001C0F02000C0F04000E13080003E1F000 1B147C931E>I<0E00C03300E02301C04381C04301C04701C08703800E03800E03800E03801C07 001C07001C07001C07001C0E00180E00180E001C1E000C3C0007DC00001C00001C00003800F038 00F07000E06000C0C0004380003E0000131D7C9316>121 D E /Ff 12 57 df<0102040C1818303070606060E0E0E0E0E0E0E0E0E0E060606070303018180C04020108227D 980E>40 D<8040203018180C0C0E060606070707070707070707070606060E0C0C181830204080 08227E980E>I<0030000030000030000030000030000030000030000030000030000030000030 00FFFFFCFFFFFC0030000030000030000030000030000030000030000030000030000030000030 0016187E931B>43 D<07C018303018701C600C600CE00EE00EE00EE00EE00EE00EE00EE00EE00E 600C600C701C30181C7007C00F157F9412>48 D<03000700FF0007000700070007000700070007 0007000700070007000700070007000700070007007FF00C157E9412>I<0F8030E040708030C0 38E0384038003800700070006000C00180030006000C08080810183FF07FF0FFF00D157E9412> I<0FE030306018701C701C001C00180038006007E000300018000C000E000EE00EE00EC00C4018 30300FE00F157F9412>I<00300030007000F001F001700270047008701870107020704070C070 FFFE0070007000700070007003FE0F157F9412>I<20303FE03FC0240020002000200020002F80 30E020700030003800384038E038E0388030406020C01F000D157E9412>I<01F00608080C181C 301C70006000E000E3E0EC30F018F00CE00EE00EE00E600E600E300C3018183007C00F157F9412 >I<40007FFE7FFC7FF8C008801080200040008000800100010003000200060006000E000E000E 000E000E0004000F167E9512>I<07E018302018600C600C700C78183E101F600FC00FF018F860 7C601EC00EC006C006C004600C38300FE00F157F9412>I E /Fg 7 111 df<07FF0000E00000E00000E00000E00001C00001C00001C00001C00003800003800003800003 80000700000700080700080700100E00100E00300E00200E00601C01E0FFFFC015177F9618>76 D<07FFF00000E01C0000E0060000E0070000E0070001C0070001C0070001C0070001C00E000380 1C000380700003FF80000380E000070070000700380007003800070038000E0070000E0070000E 0070800E0070801C003100FF801E0019177F961B>82 D<03000380030000000000000000000000 00001C002400460046008C000C0018001800180031003100320032001C0009177F960C>105 D<00180038001000000000000000000000000001C0022004300430086000600060006000C000C0 00C000C001800180018001806300E300C60078000D1D80960E>I<1F0006000600060006000C00 0C000C000C00181C1866188E190C32003C003F00318060C060C460C460C8C0C8C0700F177E9612 >I<3E0C0C0C0C181818183030303060606060C0C8C8C8D07007177E960B>I<383C0044C6004702 004602008E06000C06000C06000C0C00180C00180C40181840181880300880300F00120E7F8D15 >110 D E /Fh 27 121 df<70F8F8F87005057C840D>58 D<70F8FCFC74040404080810102040 060E7C840D>I<000002000000060000000E0000000E0000001E0000001F0000002F0000002F00 00004F0000008F0000008F0000010F0000010F0000020F0000040F0000040F0000080F80000807 80001007800020078000200780007FFF8000400780008007800180078001000780020007800200 07C0040003C00C0003C01E0007C0FF807FFC1E207E9F22>65 D<00FFFFE0000F0078000F003C00 0F001C000F001E001E001E001E001E001E001E001E001E003C003C003C003C003C0078003C00F0 007803C0007FFF80007803C0007801E000F000F000F000F000F000F000F0007001E000F001E000 F001E000F001E000E003C001E003C003C003C0038003C00F0007801E00FFFFF0001F1F7E9E22> I<0000FE0200078186001C004C0038003C0060003C00C0001C01C0001803800018070000180F00 00181E0000101E0000103C0000003C00000078000000780000007800000078000000F0000000F0 000000F0000000F0000000F0000080700000807000008070000100380001003800020018000400 0C001800060020000381C00000FE00001F217E9F21>I<00FFFFFF000F000E000F0006000F0002 000F0002001E0002001E0002001E0002001E0002003C0404003C0400003C0400003C0C00007818 00007FF800007818000078180000F0100000F0100000F0100000F0000401E0000801E0000801E0 001001E0001003C0002003C0006003C0004003C001C0078007C0FFFFFF80201F7E9E22>69 D<00FFFFFF000F000E000F0006000F0002000F0002001E0002001E0002001E0002001E0002003C 0004003C0400003C0400003C04000078080000781800007FF8000078180000F0100000F0100000 F0100000F0100001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C00000 07C00000FFFE0000201F7E9E1D>I<00FFF9FFF0000F801F00000F001E00000F001E00000F001E 00001E003C00001E003C00001E003C00001E003C00003C007800003C007800003C007800003C00 7800007800F000007FFFF000007800F000007800F00000F001E00000F001E00000F001E00000F0 01E00001E003C00001E003C00001E003C00001E003C00003C007800003C007800003C007800003 C007800007C00F8000FFF8FFF800241F7E9E26>72 D<00FFFC000F80000F00000F00000F00001E 00001E00001E00001E00003C00003C00003C00003C0000780000780000780000780000F00000F0 0000F00000F00001E00001E00001E00001E00003C00003C00003C00003C00007C000FFFC00161F 7F9E14>I<00FFF80FF8000F8003E0000F000380000F000200000F000400001E000800001E0020 00001E004000001E008000003C010000003C040000003C080000003C180000007838000000787C 000000793C0000007A3C000000F41E000000F81E000000F01E000000F00F000001E00F000001E0 0F000001E007800001E007800003C007800003C003C00003C003C00003C003C00007C003E000FF FC3FFC00251F7E9E27>75 D<00FFFC00000F8000000F0000000F0000000F0000001E0000001E00 00001E0000001E0000003C0000003C0000003C0000003C00000078000000780000007800000078 000000F0000000F0000000F0000000F0004001E0008001E0008001E0018001E0010003C0030003 C0030003C0060003C00E0007803C00FFFFFC001A1F7E9E1F>I<00FF00001FF0000F00003F0000 0B80003E00000B80005E00000B80005E0000138000BC00001380013C00001380013C0000138002 3C000023800278000023800478000023800878000021C00878000041C010F0000041C020F00000 41C020F0000041C040F0000081C041E0000081C081E0000081C101E0000081C101E0000100E203 C0000100E203C0000100E403C0000100E803C0000200E80780000200F00780000200F007800006 00E00780000F00C00F8000FFE0C1FFF8002C1F7E9E2C>I<00FF803FF0000F800780000F800200 000BC00200000BC002000013C004000011E004000011E004000011E004000020F008000020F008 000020F808000020780800004078100000403C100000403C100000403C100000801E200000801E 200000801E200000800F200001000F400001000F4000010007C000010007C00002000780000200 038000020003800006000380000F00010000FFE0010000241F7E9E25>I<0001FC000007070000 1C01C0003000E000E0006001C000700380007007800038070000380E0000381E0000381C000038 3C0000383C00003878000078780000787800007878000078F00000F0F00000F0F00000E0F00001 E0F00001C0F00003C0700003807000070078000F0038001E0038003C001C0070000E00E0000783 800001FC00001D217E9F23>I<00FFFF80000F01E0000F0070000F0038000F003C001E003C001E 003C001E003C001E003C003C0078003C0078003C00F0003C01E00078038000780F00007FF80000 781C0000F00E0000F00F0000F0070000F0078001E00F0001E00F0001E00F0001E00F0003C01E00 03C01E0203C01E0203C01E0407C00E04FFFC0718000003E01F207E9E23>82 D<0007E0800018118000300B000060070000C0070001C003000180020003800200038002000380 0200038000000380000003C0000003F8000003FF800001FFC00000FFE000003FF0000003F00000 00F0000000700000007000000070002000700020007000200060006000E0006000C0006001C000 70018000E8030000C60E000081F8000019217D9F1C>I<0FFFFFFC1E03C0381803C0181003C008 2003C00820078008600780084007800840078008800F0010000F0000000F0000000F0000001E00 00001E0000001E0000001E0000003C0000003C0000003C0000003C000000780000007800000078 00000078000000F0000000F0000000F0000000F0000001F000007FFFC0001E1F7F9E1B>I<7FFC 1FF807C003C00780010007800100078001000F0002000F0002000F0002000F0002001E0004001E 0004001E0004001E0004003C0008003C0008003C0008003C000800780010007800100078001000 78001000F0002000F0002000F0002000F0004000F0004000700080007001000030020000380400 000C18000007E000001D207C9E1F>I87 D<00FFF83FF8000FC00F80000F800600000780 04000007C008000003C010000003C020000003E040000001E080000001F100000000F300000000 F600000000FC0000000078000000007C000000007C000000007C00000000BE000000011E000000 021E000000061F0000000C0F000000080F800000100780000020078000004007C000008003C000 010003E000030003E0000F0007E000FFE01FFE00251F7F9E26>I<00007C0000CE00019E00039E 00030C000700000700000700000700000E00000E00000E0000FFF0000E00000E00001C00001C00 001C00001C00001C00003800003800003800003800003800007000007000007000007000007000 00E00000E00000E00000E00000C00001C000318000798000F300006200003C000017297E9F16> 102 D<00E001E001E000C000000000000000000000000000000E00130023804380438043808700 070007000E000E001C001C001C20384038403840388019000E000B1F7E9E10>105 D<01E0000FE00001C00001C00001C00001C0000380000380000380000380000700000700000701 E00706100E08700E10F00E20F00E40601C80001D00001E00001FC000387000383800383800381C 20703840703840703840701880E01880600F0014207E9F18>107 D<03C01FC003800380038003 8007000700070007000E000E000E000E001C001C001C001C003800380038003800700070007000 7100E200E200E200E200640038000A207E9F0E>I<1E07802318C023A06043C070438070438070 8700E00700E00700E00700E00E01C00E01C00E01C00E03821C03841C07041C07081C0308380310 1801E017147E931B>110 D<03C1E004621804741C08781C08701E08701E10E01E00E01E00E01E 00E01E01C03C01C03C01C03C01C0380380780380700380E003C1C0072380071E00070000070000 0E00000E00000E00000E00001C00001C0000FFC000171D819317>112 D<03C1C00C6220103470 1038F02038F020386040700000700000700000700000E00000E00000E00000E02061C040F1C040 F1C080E2C080446300383C0014147E931A>120 D E /Fi 41 122 df<0001FF0000001FFFC000 007F80F00000FC00F80001F801F80003F803FC0007F003FC0007F003FC0007F003FC0007F001F8 0007F000F00007F000000007F000000007F000000007F0000000FFFFFFFC00FFFFFFFC00FFFFFF FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F0 01FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007 F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC007FFF1FFFC07FFF1FFFC0 7FFF1FFFC0222A7FA926>12 D45 D<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE007FFFFE7FFFFE7FFF FE17277BA622>49 D<00FF800003FFF0000FFFFC001F03FE003800FF007C007F80FE003FC0FF00 3FC0FF003FE0FF001FE0FF001FE07E001FE03C003FE000003FE000003FC000003FC000007F8000 007F000000FE000000FC000001F8000003F0000003E00000078000000F0000001E0000003C00E0 007000E000E000E001C001C0038001C0070001C00FFFFFC01FFFFFC03FFFFFC07FFFFFC0FFFFFF 80FFFFFF80FFFFFF801B277DA622>I<007F800003FFF00007FFFC000F81FE001F00FF003F80FF 003F807F803F807F803F807F801F807F800F007F800000FF000000FF000000FE000001FC000001 F8000007F00000FFC00000FFF0000001FC0000007E0000007F0000007F8000003FC000003FC000 003FE000003FE03C003FE07E003FE0FF003FE0FF003FE0FF003FC0FF007FC07E007F807C007F00 3F01FE001FFFFC0007FFF00000FF80001B277DA622>I<00000E0000001E0000003E0000007E00 0000FE000000FE000001FE000003FE0000077E00000E7E00000E7E00001C7E0000387E0000707E 0000E07E0000E07E0001C07E0003807E0007007E000E007E000E007E001C007E0038007E007000 7E00E0007E00FFFFFFF8FFFFFFF8FFFFFFF80000FE000000FE000000FE000000FE000000FE0000 00FE000000FE000000FE00007FFFF8007FFFF8007FFFF81D277EA622>I<0C0003000F803F000F FFFE000FFFFC000FFFF8000FFFF0000FFFE0000FFFC0000FFE00000E0000000E0000000E000000 0E0000000E0000000E0000000E7FC0000FFFF8000F80FC000E003E000C003F0000001F8000001F C000001FC000001FE000001FE018001FE07C001FE0FE001FE0FE001FE0FE001FE0FE001FC0FC00 1FC078003F8078003F803C007F001F01FE000FFFF80003FFF00000FF80001B277DA622>I<0007 F000003FFC0000FFFE0001FC0F0003F01F8007E03F800FC03F801FC03F801F803F803F801F003F 8000007F0000007F0000007F000000FF000000FF0FC000FF3FF800FF707C00FFC03E00FFC03F00 FF801F80FF801FC0FF001FC0FF001FE0FF001FE0FF001FE07F001FE07F001FE07F001FE07F001F E03F001FE03F001FC01F801FC01F803F800FC03F0007E07E0003FFFC0000FFF000003FC0001B27 7DA622>I<380000003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFFE07FFFFFC07FFFFF807FFF FF0070000E0070000E0070001C00E0003800E0007000E000E0000000E0000001C0000003800000 07800000078000000F0000000F0000001F0000001F0000003F0000003E0000003E0000007E0000 007E0000007E0000007E000000FE000000FE000000FE000000FE000000FE000000FE000000FE00 0000FE0000007C0000003800001C297CA822>I<000003800000000007C00000000007C0000000 000FE0000000000FE0000000000FE0000000001FF0000000001FF0000000003FF8000000003FF8 000000003FF80000000073FC0000000073FC00000000F3FE00000000E1FE00000000E1FE000000 01C0FF00000001C0FF00000003C0FF80000003807F80000007807FC0000007003FC0000007003F C000000E003FE000000E001FE000001E001FF000001C000FF000001FFFFFF000003FFFFFF80000 3FFFFFF80000780007FC0000700003FC0000700003FC0000E00001FE0000E00001FE0001E00001 FF0001C00000FF0001C00000FF00FFFE001FFFFEFFFE001FFFFEFFFE001FFFFE2F297EA834>65 D<00003FF001800003FFFE0380000FFFFF8780003FF007DF8000FF8001FF8001FE00007F8003FC 00003F8007F000001F800FF000000F801FE0000007801FE0000007803FC0000007803FC0000003 807FC0000003807F80000003807F8000000000FF8000000000FF8000000000FF8000000000FF80 00000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000007F80000000 007F80000000007FC0000003803FC0000003803FC0000003801FE0000003801FE0000007000FF0 0000070007F000000E0003FC00001E0001FE00003C0000FF8000F800003FF007E000000FFFFFC0 000003FFFF000000003FF8000029297CA832>67 D II73 D77 D80 D82 D<007F806003FFF0E007FFF9E00F807F E01F001FE03E0007E07C0003E07C0001E0FC0001E0FC0001E0FC0000E0FE0000E0FE0000E0FF00 0000FFC000007FFE00007FFFE0003FFFFC001FFFFE000FFFFF8007FFFFC003FFFFE000FFFFE000 07FFF000007FF000000FF8000007F8000003F8600001F8E00001F8E00001F8E00001F8F00001F0 F00001F0F80003F0FC0003E0FF0007C0FFE01F80F3FFFF00E0FFFE00C01FF0001D297CA826>I< 01FF800007FFF0000F81F8001FC07E001FC07E001FC03F000F803F8007003F8000003F8000003F 8000003F80000FFF8000FFFF8007FC3F800FE03F803F803F803F003F807F003F80FE003F80FE00 3F80FE003F80FE003F807E007F807F00DF803F839FFC0FFF0FFC01FC03FC1E1B7E9A21>97 DI<001FF80000FFFE0003F01F0007E03F80 0FC03F801F803F803F801F007F800E007F0000007F000000FF000000FF000000FF000000FF0000 00FF000000FF000000FF0000007F0000007F0000007F8000003F8001C01F8001C00FC0038007E0 070003F01E0000FFFC00001FE0001A1B7E9A1F>I<00003FF80000003FF80000003FF800000003 F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8000000 03F800000003F800000003F800000003F800001FE3F80000FFFBF80003F03FF80007E00FF8000F C007F8001F8003F8003F8003F8007F0003F8007F0003F8007F0003F800FF0003F800FF0003F800 FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8007F0003F8 003F8003F8001F8003F8000F8007F80007C00FF80003F03BFF8000FFF3FF80003FC3FF80212A7E A926>I<003FE00001FFF80003F07E0007C01F000F801F801F800F803F800FC07F000FC07F0007 C07F0007E0FF0007E0FF0007E0FFFFFFE0FFFFFFE0FF000000FF000000FF0000007F0000007F00 00007F0000003F8000E01F8000E00FC001C007E0038003F81F0000FFFE00001FF0001B1B7E9A20 >I<0007F0003FFC00FE3E01F87F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007 F00007F00007F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007 F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007 F0007FFF807FFF807FFF80182A7EA915>I<00FF81F003FFE7F80FC1FE7C1F80FC7C1F007C383F 007E107F007F007F007F007F007F007F007F007F007F007F007F003F007E001F007C001F80FC00 0FC1F8001FFFE00018FF800038000000380000003C0000003E0000003FFFF8001FFFFF001FFFFF 800FFFFFC007FFFFE01FFFFFF03E0007F07C0001F8F80000F8F80000F8F80000F8F80000F87C00 01F03C0001E01F0007C00FC01F8003FFFE00007FF0001E287E9A22>II<07000F801FC03FE03FE03FE01FC00F800700000000000000000000 0000000000FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0 0FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7DAA14>I107 DIII<003FE00001FFFC0003F07E000FC01F801F800FC03F800FE03F0007E07F00 07F07F0007F07F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF 0007F87F0007F07F0007F03F800FE03F800FE01F800FC00FC01F8007F07F0001FFFC00003FE000 1D1B7E9A22>II114 D<03FE300FFFF01E03F03800F070 0070F00070F00070F80070FC0000FFE0007FFE007FFF803FFFE01FFFF007FFF800FFF80003FC00 00FC60007CE0003CF0003CF00038F80038FC0070FF01E0F7FFC0C1FF00161B7E9A1B>I<007000 00700000700000700000F00000F00000F00001F00003F00003F00007F0001FFFF0FFFFF0FFFFF0 07F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000 07F03807F03807F03807F03807F03807F03803F03803F87001F86000FFC0001F8015267FA51B> IIIIII E /Fj 83 124 df<001F83E000F06E3001C0787803 80F8780300F03007007000070070000700700007007000070070000700700007007000FFFFFF80 070070000700700007007000070070000700700007007000070070000700700007007000070070 0007007000070070000700700007007000070070000700700007007000070070007FE3FF001D20 809F1B>11 D<003F0000E0C001C0C00381E00701E00701E0070000070000070000070000070000 070000FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0 0700E00700E00700E00700E00700E00700E00700E07FC3FE1720809F19>I<003FE000E0E001C1 E00381E00700E00700E00700E00700E00700E00700E00700E00700E0FFFFE00700E00700E00700 E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700 E00700E00700E07FE7FE1720809F19>I<001F81F80000F04F040001C07C06000380F80F000300 F00F000700F00F00070070000007007000000700700000070070000007007000000700700000FF FFFFFF000700700700070070070007007007000700700700070070070007007007000700700700 070070070007007007000700700700070070070007007007000700700700070070070007007007 000700700700070070070007007007007FE3FE3FF02420809F26>I22 D<7038F87CFC7EFC7E743A0402040204020804080410081008201040200F0E7E9F17>34 D<0080008007E00C981084208260824081C087C08FC08FC086E080F08078803F803FE01FF807FC 00FE009E008E00870087F083F083F0838083808240864084208818B007C000800080008010257D A117>36 D<70F8FCFC74040404080810102040060E7C9F0D>39 D<002000400080010002000600 0C000C00180018003000300030007000600060006000E000E000E000E000E000E000E000E000E0 00E000E000E0006000600060007000300030003000180018000C000C0006000200010000800040 00200B2E7DA112>I<800040002000100008000C00060006000300030001800180018001C000C0 00C000C000E000E000E000E000E000E000E000E000E000E000E000E000C000C000C001C0018001 80018003000300060006000C00080010002000400080000B2E7DA112>I<018001800180018001 80C183F18F399C0FF003C003C00FF0399CF18FC1830180018001800180018010147DA117>I<00 060000000600000006000000060000000600000006000000060000000600000006000000060000 0006000000060000000600000006000000060000FFFFFFF0FFFFFFF00006000000060000000600 000006000000060000000600000006000000060000000600000006000000060000000600000006 000000060000000600001C207D9A23>I<70F8FCFC74040404080810102040060E7C840D>II<70F8F8F87005057C840D>I<03F0000E1C001C0E0018060038070070038070 0380700380700380F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F0 03C0F003C0F003C07003807003807003807807803807001806001C0E000E1C0003F000121F7E9D 17>48 D<018003800F80F380038003800380038003800380038003800380038003800380038003 80038003800380038003800380038003800380038007C0FFFE0F1E7C9D17>I<03F0000C1C0010 0E00200700400780800780F007C0F803C0F803C0F803C02007C00007C0000780000780000F0000 0E00001C0000380000700000600000C0000180000300000600400C00401800401000803FFF807F FF80FFFF80121E7E9D17>I<03F0000C1C00100E00200F00780F80780780780780380F80000F80 000F00000F00000E00001C0000380003F000003C00000E00000F000007800007800007C02007C0 F807C0F807C0F807C0F00780400780400F00200E001C3C0003F000121F7E9D17>I<0006000006 00000E00000E00001E00002E00002E00004E00008E00008E00010E00020E00020E00040E00080E 00080E00100E00200E00200E00400E00C00E00FFFFF0000E00000E00000E00000E00000E00000E 00000E0000FFE0141E7F9D17>I<1803001FFE001FFC001FF8001FE00010000010000010000010 000010000010000011F000161C00180E001007001007800003800003800003C00003C00003C070 03C0F003C0F003C0E00380400380400700200600100E000C380003E000121F7E9D17>I<007C00 0182000701000E03800C07801C0780380300380000780000700000700000F1F000F21C00F40600 F80700F80380F80380F003C0F003C0F003C0F003C0F003C07003C07003C0700380380380380700 1807000C0E00061C0001F000121F7E9D17>I<4000007FFFC07FFF807FFF804001008002008002 0080040000080000080000100000200000200000400000400000C00000C00001C0000180000380 00038000038000038000078000078000078000078000078000078000078000030000121F7D9D17 >I<03F0000C0C001006003003002001806001806001806001807001807803003E03003F06001F C8000FF00003F80007FC000C7E00103F00300F806003804001C0C001C0C000C0C000C0C000C0C0 00806001802001001002000C0C0003F000121F7E9D17>I<03F0000E18001C0C00380600380700 700700700380F00380F00380F003C0F003C0F003C0F003C0F003C07007C07007C03807C0180BC0 0E13C003E3C0000380000380000380000700300700780600780E00700C002018001070000FC000 121F7E9D17>I<70F8F8F8700000000000000000000070F8F8F87005147C930D>I<7FFFFFE0FFFF FFF00000000000000000000000000000000000000000000000000000000000000000FFFFFFF07F FFFFE01C0C7D9023>61 D<0FC0307040384038E03CF03CF03C603C0038007000E000C001800180 010003000200020002000200020002000000000000000000000007000F800F800F8007000E207D 9F15>63 D<000100000003800000038000000380000007C0000007C0000007C0000009E0000009 E0000009E0000010F0000010F0000010F00000207800002078000020780000403C0000403C0000 403C0000801E0000801E0000FFFE0001000F0001000F0001000F00020007800200078002000780 040003C00E0003C01F0007E0FFC03FFE1F207F9F22>65 DI<00 0FC040007030C001C009C0038005C0070003C00E0001C01E0000C01C0000C03C0000C07C000040 7C00004078000040F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000 00F8000000780000007C0000407C0000403C0000401C0000401E0000800E000080070001000380 020001C0040000703800000FC0001A217D9F21>IIII<000FE0200078186000E004E0038002 E0070001E00F0000E01E0000601E0000603C0000603C0000207C00002078000020F8000000F800 0000F8000000F8000000F8000000F8000000F8000000F8007FFCF80003E0780001E07C0001E03C 0001E03C0001E01E0001E01E0001E00F0001E0070001E0038002E000E0046000781820000FE000 1E217D9F24>III<0FFFC0007C00003C00003C00003C00003C00003C00003C00003C00 003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00 003C00203C00F83C00F83C00F83C00F0380040780040700030E0000F800012207E9E17>III II<001F800000F0F00001C0380007801E000F000F000E000700 1E0007803C0003C03C0003C07C0003E0780001E0780001E0F80001F0F80001F0F80001F0F80001 F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E07C0003E07C0003E03C0003C03C00 03C01E0007800E0007000F000F0007801E0001C0380000F0F000001F80001C217D9F23>II82 D<07E0800C1980100780300380600180600180E00180E00080E00080E00080F00000F000007800 007F00003FF0001FFC000FFE0003FF00001F800007800003C00003C00001C08001C08001C08001 C08001C0C00180C00380E00300F00600CE0C0081F80012217D9F19>I<7FFFFFE0780F01E0600F 0060400F0020400F0020C00F0030800F0010800F0010800F0010800F0010000F0000000F000000 0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000 000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F800007FFFE001C1F7E 9E21>II II<7FF83FF80FE00FC007C0070003C0020001E0040001F00C0000F0080000781000007C 1000003C2000003E4000001E4000000F8000000F8000000780000003C0000007E0000005E00000 09F0000018F8000010780000207C0000603C0000401E0000801F0001800F0001000780020007C0 070003C01F8007E0FFE01FFE1F1F7F9E22>II<7FFFF87C00F8 7000F06001E04001E0C003C0C003C0800780800F80800F00001E00001E00003C00003C00007800 00F80000F00001E00001E00003C00403C0040780040F80040F000C1E000C1E00083C00183C0018 780038F801F8FFFFF8161F7D9E1C>II<08041008201020104020 4020804080408040B85CFC7EFC7E7C3E381C0F0E7B9F17>II<1F E000303000781800781C00300E00000E00000E00000E0000FE00078E001E0E00380E00780E00F0 0E10F00E10F00E10F01E10781E103867200F83C014147E9317>97 D<0E0000FE00000E00000E00 000E00000E00000E00000E00000E00000E00000E00000E00000E3E000EC3800F01C00F00E00E00 E00E00700E00700E00780E00780E00780E00780E00780E00780E00700E00700E00E00F00E00D01 C00CC300083E0015207F9F19>I<03F80E0C1C1E381E380C70007000F000F000F000F000F000F0 0070007000380138011C020E0C03F010147E9314>I<000380003F800003800003800003800003 8000038000038000038000038000038000038003E380061B801C07803803803803807003807003 80F00380F00380F00380F00380F00380F003807003807003803803803807801C07800E1B8003E3 F815207E9F19>I<03F0000E1C001C0E00380700380700700700700380F00380F00380FFFF80F0 0000F00000F000007000007000003800801800800C010007060001F80011147F9314>I<007C00 C6018F038F07060700070007000700070007000700FFF007000700070007000700070007000700 07000700070007000700070007000700070007007FF01020809F0E>I<0000E003E3300E3C301C 1C30380E00780F00780F00780F00780F00780F00380E001C1C001E380033E00020000020000030 00003000003FFE001FFF800FFFC03001E0600070C00030C00030C00030C000306000603000C01C 038003FC00141F7F9417>I<0E0000FE00000E00000E00000E00000E00000E00000E00000E0000 0E00000E00000E00000E3E000E43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01C0 0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16207F9F19>I<1C00 3E003E003E001C000000000000000000000000000E007E000E000E000E000E000E000E000E000E 000E000E000E000E000E000E000E000E000E00FFC00A1F809E0C>I<00E001F001F001F000E000 0000000000000000000000007007F000F000700070007000700070007000700070007000700070 00700070007000700070007000700070007000706070F060F0C061803F000C28829E0E>I<0E00 00FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0FF00E03 C00E03000E02000E04000E08000E10000E30000E70000EF8000F38000E1C000E1E000E0E000E07 000E07800E03800E03C00E03E0FFCFF815207F9F18>I<0E00FE000E000E000E000E000E000E00 0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E 000E000E000E00FFE00B20809F0C>I<0E1F01F000FE618618000E81C81C000F00F00E000F00F0 0E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00 E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E00FFE7FE7FE023 147F9326>I<0E3E00FE43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C0 0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16147F9319>I<01F800070E 001C03803801C03801C07000E07000E0F000F0F000F0F000F0F000F0F000F0F000F07000E07000 E03801C03801C01C0380070E0001F80014147F9317>I<0E3E00FEC3800F01C00F00E00E00E00E 00F00E00700E00780E00780E00780E00780E00780E00780E00700E00F00E00E00F01E00F01C00E C3000E3E000E00000E00000E00000E00000E00000E00000E00000E0000FFE000151D7F9319>I< 03E0800619801C05803C0780380380780380700380F00380F00380F00380F00380F00380F00380 7003807803803803803807801C0B800E138003E380000380000380000380000380000380000380 000380000380003FF8151D7E9318>I<0E78FE8C0F1E0F1E0F0C0E000E000E000E000E000E000E 000E000E000E000E000E000E000E00FFE00F147F9312>I<1F9030704030C010C010C010E00078 007F803FE00FF00070803880188018C018C018E030D0608F800D147E9312>I<02000200020006 0006000E000E003E00FFF80E000E000E000E000E000E000E000E000E000E000E000E080E080E08 0E080E080610031001E00D1C7F9B12>I<0E01C0FE1FC00E01C00E01C00E01C00E01C00E01C00E 01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E03C00603C0030DC001F1FC16 147F9319>III<7FC3FC0F01E00701C007018003810001C20000E40000EC00007800003800003C00007C 00004E000087000107000303800201C00601E01E01E0FF07FE1714809318>II<3FFF380E200E201C40384078407000E001E001C00380078007010E011E01 1C0338027006700EFFFE10147F9314>II E /Fk 1 54 df<60607FC07F8044004000400040004F0070C040E0006000700070E070E070E06040E021C0 1F000C137E9211>53 D E /Fl 49 123 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E 01C0000E01C0000E01C0000E01C0000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C000 0E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0 000E01C0000E01C0000E01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703C00E03 C00E01800E00000E00000E00000E00000E0000FFFFC00E01C00E01C00E01C00E01C00E01C00E01 C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07F87F8151D809C17 >I<003F07E00001C09C18000380F018000701F03C000E01E03C000E00E018000E00E000000E00 E000000E00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E00E01C000E 00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C00 0E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80211D809C23>14 D<0080008007E01898308460824081C087C08FC08FC086E080F0807E803FC01FF00FF803FC00BE 008E00876087F083F083E0838082408240842088189007E00080008010217E9E15>36 D<004000800100020006000C000C0018001800300030007000600060006000E000E000E000E000 E000E000E000E000E000E000E000E000600060006000700030003000180018000C000C00060002 000100008000400A2A7D9E10>40 D<800040002000100018000C000C0006000600030003000380 01800180018001C001C001C001C001C001C001C001C001C001C001C001C0018001800180038003 000300060006000C000C00180010002000400080000A2A7E9E10>I45 D<60F0F06004047C830C>I<03C00C301818300C300C700E60066006E007E007E007E007E007E0 07E007E007E007E007E007E007E00760066006700E300C300C18180C3007E0101D7E9B15>48 D<030007003F00C700070007000700070007000700070007000700070007000700070007000700 07000700070007000700070007000F80FFF80D1C7C9B15>I<07C01830201C400C400EF00FF80F F807F8077007000F000E000E001C001C00380070006000C00180030006010C01180110023FFE7F FEFFFE101C7E9B15>I<07E01830201C201C781E780E781E381E001C001C00180030006007E000 30001C001C000E000F000F700FF80FF80FF80FF00E401C201C183007E0101D7E9B15>I<03C00C 301818300C700C600EE006E006E007E007E007E007E0076007700F300F18170C2707C700060006 000E300C780C78187010203030C00F80101D7E9B15>57 D<000600000006000000060000000F00 00000F0000000F00000017800000178000001780000023C0000023C0000023C0000041E0000041 E0000041E0000080F0000080F0000180F8000100780001FFF80003007C0002003C0002003C0006 003E0004001E0004001E000C001F001E001F00FF80FFF01C1D7F9C1F>65 D<001F808000E0618001801980070007800E0003801C0003801C00018038000180780000807800 008070000080F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000070 0000807800008078000080380000801C0001001C0001000E000200070004000180080000E03000 001FC000191E7E9C1E>67 DII73 D75 D77 DI<07E0801C1980300580700380600180E00180E00080E00080E00080F000 00F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001 C08001C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>83 D<7FFFFFC0700F01C060 0F00C0400F0040400F0040C00F0020800F0020800F0020800F0020000F0000000F0000000F0000 000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00 00000F0000000F0000000F0000000F0000001F800003FFFC001B1C7F9B1E>II<7F F0FFC00FC03E000780180003C0180003E0100001E0200001F0600000F0400000788000007D8000 003D0000001E0000001F0000000F0000000F8000000F80000013C0000023E0000021E0000041F0 0000C0F8000080780001007C0003003C0002001E0006001F001F003F80FFC0FFF01C1C7F9B1F> 88 D<1FC000307000783800781C00301C00001C00001C0001FC000F1C00381C00701C00601C00 E01C40E01C40E01C40603C40304E801F870012127E9115>97 DI<07E00C301878307870306000E000E000E000E000E000E00060007004300418080C3007C0 0E127E9112>I<003F000007000007000007000007000007000007000007000007000007000007 0003E7000C1700180F00300700700700600700E00700E00700E00700E00700E00700E007006007 00700700300700180F000C370007C7E0131D7E9C17>I<03E00C301818300C700E6006E006FFFE E000E000E000E00060007002300218040C1803E00F127F9112>I<00F8018C071E061E0E0C0E00 0E000E000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E000E000E000E000E 000E000E007FE00F1D809C0D>I<00038003C4C00C38C01C3880181800381C00381C00381C0038 1C001818001C38000C300013C0001000003000001800001FF8001FFF001FFF803003806001C0C0 00C0C000C0C000C06001803003001C0E0007F800121C7F9215>II<18003C003C0018000000000000000000000000000000FC001C001C001C001C001C001C 001C001C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>I107 DIII<03F0 000E1C00180600300300700380600180E001C0E001C0E001C0E001C0E001C0E001C06001807003 803003001806000E1C0003F00012127F9115>II114 D<1F9030704030C010C010E010F8007F803FE00FF000F880388018C018C018E010D0608FC00D12 7F9110>I<04000400040004000C000C001C003C00FFE01C001C001C001C001C001C001C001C00 1C001C101C101C101C101C100C100E2003C00C1A7F9910>IIII<7F8FF00F03800F03 0007020003840001C80001D80000F00000700000780000F800009C00010E00020E000607000403 801E07C0FF0FF81512809116>II<7FFC70386038407040F040E041C003C00380 07000F040E041C043C0C380870087038FFF80E127F9112>I E /Fm 7 117 df<00038000000380000007C0000007C0000007C000000FE000000FE000001FF000001BF00000 1BF0000031F8000031F8000061FC000060FC0000E0FE0000C07E0000C07E0001803F0001FFFF00 03FFFF8003001F8003001F8006000FC006000FC00E000FE00C0007E0FFC07FFEFFC07FFE1F1C7E 9B24>65 D<0FF8001C1E003E0F803E07803E07C01C07C00007C0007FC007E7C01F07C03C07C07C 07C0F807C0F807C0F807C0780BC03E13F80FE1F815127F9117>97 DI<03FC000E0E001C1F003C1F00781F00780E00F80000F80000F80000F80000F80000F8 00007800007801803C01801C03000E0E0003F80011127E9115>I114 D<1FD830786018E018E018F000FF807FE07FF01FF807FC007CC01CC0 1CE01CE018F830CFC00E127E9113>I<0300030003000300070007000F000F003FFCFFFC1F001F 001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F08079803F00E1A7F9913>I E /Fn 31 122 df<70F8F8F87005057C840E>46 D<008003800F80F38003800380038003800380 038003800380038003800380038003800380038003800380038003800380038003800380038003 800380038007C0FFFE0F217CA018>49 D<03F8000C1E001007002007804007C07807C07803C078 07C03807C0000780000780000700000F00000E0000380003F000001C00000F0000078000078000 03C00003C00003E02003E07003E0F803E0F803E0F003C04003C0400780200780100F000C1C0003 F00013227EA018>51 D<000200000600000E00000E00001E00001E00002E00004E00004E00008E 00008E00010E00020E00020E00040E00040E00080E00100E00100E00200E00200E00400E00800E 00FFFFF8000E00000E00000E00000E00000E00000E00000E00001F0001FFF015217FA018>I<10 00801E07001FFF001FFE001FF80013E00010000010000010000010000010000010000010F80013 0E001407001803801003800001C00001C00001E00001E00001E00001E07001E0F001E0F001E0E0 01C08001C04003C04003802007001006000C1C0003F00013227EA018>I<01F800060E00080300 1001802001802000C06000C06000C06000C07000C07801803E01003F02001FC4000FF80003F800 03FC00067F00083F80100F803007C06001C06000E0C000E0C00060C00060C00060C00060600040 6000C03000801803000E0E0003F00013227EA018>56 D<0007E0100038183000E0063001C00170 038000F0070000F00E0000701E0000701C0000303C0000303C0000307C00001078000010780000 10F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000780000007800 00107C0000103C0000103C0000101C0000201E0000200E000040070000400380008001C0010000 E0020000381C000007E0001C247DA223>67 DI73 D78 D80 D<03F0200C0C601802603001 E07000E0600060E00060E00060E00020E00020E00020F00000F000007800007F00003FF0001FFE 000FFF0003FF80003FC00007E00001E00000F00000F0000070800070800070800070800070C000 60C00060E000C0F000C0C80180C6070081FC0014247DA21B>83 D85 D87 D89 D<0FE0001838003C0C003C0E001807 0000070000070000070000FF0007C7001E07003C0700780700700700F00708F00708F00708F00F 087817083C23900FC1E015157E9418>97 D<01FE000703000C07801C0780380300780000700000 F00000F00000F00000F00000F00000F00000F000007000007800403800401C00800C0100070600 01F80012157E9416>99 D<01FC000707000C03801C01C03801C07801E07000E0F000E0FFFFE0F0 0000F00000F00000F00000F000007000007800203800201C00400E008007030000FC0013157F94 16>101 D<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E 00000E00000E00000E1F800E60C00E80E00F00700F00700E00700E00700E00700E00700E00700E 00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FF18237FA21B> 104 D<1C003E003E003E001C00000000000000000000000000000000000E00FE001E000E000E00 0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC00A227FA10E>I< 0E00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E 000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00B237FA20E>108 D<0E1FC07F00FE60E183801E807201C00F003C00E00F003C00E00E003800E00E003800E00E0038 00E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E00 3800E00E003800E00E003800E00E003800E00E003800E0FFE3FF8FFE27157F942A>I<0E1F80FE 60C01E80E00F00700F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E 00700E00700E00700E00700E00700E0070FFE7FF18157F941B>I<01FC000707000C01801800C0 3800E0700070700070F00078F00078F00078F00078F00078F00078F000787000707800F03800E0 1C01C00E038007070001FC0015157F9418>I<0E1F00FE61C00E80600F00700E00380E003C0E00 1C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E003C0E003C0E00380F00700E80E00E41 C00E3F000E00000E00000E00000E00000E00000E00000E00000E00000E0000FFE000171F7F941B >I<0E3CFE461E8F0F0F0F060F000E000E000E000E000E000E000E000E000E000E000E000E000E 000F00FFF010157F9413>114 D<0F8830786018C018C008C008E008F0007F803FE00FF001F800 3C801C800C800CC00CC008E018D0308FC00E157E9413>I<02000200020002000600060006000E 001E003E00FFF80E000E000E000E000E000E000E000E000E000E000E000E040E040E040E040E04 0E040708030801F00E1F7F9E13>I<0E0070FE07F01E00F00E00700E00700E00700E00700E0070 0E00700E00700E00700E00700E00700E00700E00700E00700E00F00E00F006017003827800FC7F 18157F941B>II121 D E /Fo 23 122 df45 D<00001800000000180000000018000000003C000000003C000000003C000000007E 000000007E00000000FF000000009F000000009F000000011F800000010F800000010F80000002 07C000000207C000000207C000000403E000000403E000000403E000000801F000000801F00000 1801F800001000F800001000F800002000FC000020007C00003FFFFC00007FFFFE000040003E00 0040003E000080001F000080001F000080001F000100000F800100000F800100000F8002000007 C007000007C01F80000FE0FFF000FFFFFFF000FFFF282A7EA92D>65 D<0000FF00100007FFE030 001FC07830003E000C7000F80006F001F00003F003E00001F007C00000F00F800000700F800000 701F000000303F000000303E000000303E000000107E000000107E000000107C00000000FC0000 0000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00 0000007C000000007E000000007E000000103E000000103E000000103F000000101F000000200F 800000200F8000006007C000004003E000008001F000018000F8000300003E000E00001FC03800 0007FFE0000000FF8000242B7DA92B>67 DII<00FE010003FF83000F81E3001E0037003C001F0038000F007800 070070000700F0000300F0000300F0000300F0000100F8000100F8000100FC0000007C0000007F 0000003FE000001FFF00000FFFE00007FFF80003FFFC00007FFE000007FF0000007F0000001F80 00000F80000007C0000007C0800003C0800003C0800003C0800003C0C00003C0C0000380C00003 80E0000780F0000700F8000E00EE001C00C3C07800C1FFF000803FC0001A2B7DA921>83 D<01FC00000E0780001001C0003C00E0003E00F0003E0078001C00780008007800000078000000 780000007800007FF80003E078000F8078001F0078003E0078007C00780078007820F8007820F8 007820F8007820F800F8207C00F8203C013C401F063FC007F80F001B1A7E991E>97 D<07800000FF800000FF8000000F80000007800000078000000780000007800000078000000780 00000780000007800000078000000780000007800000078000000783F000078C1C0007B0070007 A0038007C003C0078001E0078001E0078000F0078000F0078000F8078000F8078000F8078000F8 078000F8078000F8078000F8078000F0078000F0078001F0078001E0078001C007C003C0074007 8007200E0006181C000407E0001D2A7FA921>I<007F8001C0700780080F003C1E007C3C007C3C 00387C0010780000F80000F80000F80000F80000F80000F80000F80000F800007800007C00003C 00043C00041E00080F001007802001C0C0007F00161A7E991B>I<00000F000001FF000001FF00 00001F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F 0000000F0000000F0000000F00003F0F0001C0CF0003802F000F001F001E001F001C000F003C00 0F007C000F0078000F0078000F00F8000F00F8000F00F8000F00F8000F00F8000F00F8000F00F8 000F0078000F0078000F003C000F003C000F001E001F000E002F0007004F8001C18FF8007E0FF8 1D2A7EA921>I<007E0003C3800700E00E00F01C00703C00783C003878003C78003CF8003CF800 3CFFFFFCF80000F80000F80000F80000F800007800007C00003C00043C00041E00080E00100700 2001C0C0007F00161A7E991B>I<0000078001FC1840070721C00E03C1C01E03C0803C01E0003C 01E0007C01F0007C01F0007C01F0007C01F0007C01F0003C01E0003C01E0001E03C0000E038000 1707000011FC0000300000003000000030000000380000001C0000001FFFC0000FFFF80007FFFC 001C003E0030000F007000070060000380E0000380E0000380E0000380E0000380700007007000 070038000E000C0018000780F00000FF80001A287E9A1E>103 D<07800000FF800000FF800000 0F8000000780000007800000078000000780000007800000078000000780000007800000078000 000780000007800000078000000783F800078C1C0007900E0007A0070007A0078007C0078007C0 078007800780078007800780078007800780078007800780078007800780078007800780078007 80078007800780078007800780078007800780078007800780078007800780FFFCFFFCFFFCFFFC 1E2A7FA921>I<0F001F801F801F801F800F000000000000000000000000000000000000000780 7F807F800F80078007800780078007800780078007800780078007800780078007800780078007 80078007800780FFF8FFF80D297FA811>I<07800000FF800000FF8000000F8000000780000007 800000078000000780000007800000078000000780000007800000078000000780000007800000 0780000007807FF007807FF007801F8007801C0007801800078020000780400007808000078100 000782000007870000079F800007A7800007C7C0000783E0000781E0000781F0000780F8000780 780007807C0007803E0007801E0007801F0007801F80FFFC7FF8FFFC7FF81D2A7FA920>107 D<0780FF80FF800F80078007800780078007800780078007800780078007800780078007800780 078007800780078007800780078007800780078007800780078007800780078007800780078007 800780FFFCFFFC0E2A7FA911>I<0781F800FC00FF860E030700FF98070C03800FA0079003C007 A003D001E007C003E001E007C003E001E0078003C001E0078003C001E0078003C001E0078003C0 01E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E007 8003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C0 01E0FFFC7FFE3FFFFFFC7FFE3FFF301A7F9933>I<0783F800FF8C1C00FF900E000FA0070007A0 078007C0078007C007800780078007800780078007800780078007800780078007800780078007 800780078007800780078007800780078007800780078007800780078007800780078007800780 FFFCFFFCFFFCFFFC1E1A7F9921>I<007F000001C1C000070070000E0038001C001C003C001E00 3C001E0078000F0078000F00F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F 80F8000F8078000F0078000F003C001E003C001E001E003C000E0038000700700001C1C000007F 0000191A7E991E>I<0787C0FF98E0FF91F00FA1F007C1F007C0E007C000078000078000078000 078000078000078000078000078000078000078000078000078000078000078000078000078000 07C000FFFE00FFFE00141A7F9917>114 D<07F8401C06C03001C06000C06000C0E00040E00040 F00040F800007E00007FF0003FFE000FFF0003FF80003FC00007C08001E08001E0C000E0C000E0 C000E0E000C0F001C0F80180C4070083F800131A7E9918>I<0080000080000080000080000180 000180000180000380000380000780000F80001FFF80FFFF800780000780000780000780000780 000780000780000780000780000780000780000780000780000780400780400780400780400780 4007804007804003C08001C08000E100003E0012257FA417>I121 D E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300 TeXDict begin %%EndSetup %%Page: 1 1 bop 492 195 a Fo(Con)n(ten)n(t-Addressable)20 b(Searc)n(h)g(Engines)923 252 y(and)741 308 y(DES-lik)n(e)e(Systems)793 514 y Fn(P)o(eter)d(C.)h(W)l(a) o(yner)643 571 y(Computer)f(Science)g(Departmen)o(t)777 627 y(Cornell)h(Univ)o(ersit)o(y)791 684 y(Ithaca)g(NY)f(14853)880 778 y Fm(Abstract)288 849 y Fl(A)9 b(v)o(ery)h(simple)d(parallel)h(arc)o (hitecture)j(using)e(a)g(mo)q(di\014ed)f(v)o(ersion)i(of)e(con)o(ten)o (t-addressable)225 899 y(memory)j(\(CAM\))k(can)e(b)q(e)i(used)f(to)g(c)o (heaply)f(and)h(e\016cien)o(tly)f(encipher)i(and)f(decipher)h(data)225 949 y(with)g(DES-lik)o(e)f(systems.)22 b(This)15 b(pap)q(er)g(will)f(describ) q(e)j(ho)o(w)d(to)h(implemen)o(t)d(DES)j(on)g(these)225 999 y(mo)q(di\014ed)g(con)o(ten)o(t-addressable)j(memories)c(at)i(sp)q(eeds)i (approac)o(hing)d(some)h(of)f(the)i(b)q(etter)225 1048 y(sp)q(ecialized)11 b(hardw)o(are.)16 b(This)10 b(implemen)o(tatio)o(n)d(is)i(often)h(m)o(uc)o(h) e(more)h(attractiv)o(e)g(for)h(system)225 1098 y(designers)16 b(b)q(ecause)h(the)e(CAM)g(can)f(b)q(e)i(reprogrammed)c(to)j(encrypt)h(the)f (data)f(with)h(other)225 1148 y(DES-lik)o(e)e(systems)i(suc)o(h)f(as)g(Kh)o (ufu)g(or)g(p)q(erform)g(system)f(tasks)i(lik)o(e)e(data)h(compression)f(or) 225 1198 y(graphics.)288 1248 y(The)i(CAM)g(memory)e(arc)o(hitecture)k(is)e (also)f(easily)h(extendable)h(to)f(build)f(a)h(large)g(scale)225 1298 y(engine)i(for)g(exhaustiv)o(ely)f(searc)o(hing)h(the)h(en)o(tire)f(k)o (eyspace.)28 b(This)16 b(pap)q(er)i(estimates)e(that)225 1347 y(it)g(will)f(b)q(e)h(p)q(ossible)h(to)f(build)f(a)h(mac)o(hine)f(to)h(test)h (2)1087 1332 y Fk(55)1138 1347 y Fl(k)o(eys)f(of)g(DES)g(in)f(one)i(da)o(y)e (for)h($30)225 1397 y(million.)34 b(This)21 b(design)f(is)g(m)o(uc)o(h)g (less)h(h)o(yp)q(othetical)f(than)g(some)g(of)f(the)i(others)h(in)e(the)225 1447 y(literature)c(b)q(ecause)h(it)e(is)f(based)i(up)q(on)f(hardw)o(are)h (that)f(will)f(b)q(e)h(a)o(v)n(ailable)e(o\013-the-shelf)j(in)225 1497 y(the)i(late)f(end)h(of)e(1992.)27 b(The)17 b(arc)o(hitecture)i(of)e (this)g(k)o(ey)g(searc)o(h)i(mac)o(hine)c(is)i(m)o(uc)o(h)f(more)225 1547 y(attractiv)o(e)i(to)e(an)h(attac)o(k)o(er)g(b)q(ecause)i(it)e(is)f (easily)h(reprogrammable)d(to)j(handle)g(mo)q(di\014ed)225 1596 y(DES-lik)o(e)c(algorithms)f(suc)o(h)i(as)g(the)h(UNIX)f(passw)o(ord)g (system)g(or)g(Kh)o(ufu.)182 1687 y Fj(The)d(original)g(DES)f(system)g(w)o (as)f(designed)i(to)f(b)q(e)h(easily)g(implemen)o(ted)h(in)f(hardw)o(are)e ([NBS77])112 1744 y(and)16 b(the)g(curren)o(t)f(silicon)j(manifestations)e (of)f(the)h(cipher)h(use)f(mo)q(dern)g(pro)q(cessor)g(design)h(tec)o(h-)112 1800 y(niques)k(to)f(encipher)j(and)d(decipher)i(information)f(at)f(ab)q(out) g(1)h(to)e(30)h(megabits)h(p)q(er)g(second.)112 1857 y(Implemen)o(tations)16 b(of)e(DES)h(in)h(soft)o(w)o(are)d(for)i(standard)f(CPUs,)h(ho)o(w)o(ev)o (er,)f(are)g(mark)o(edly)h(slo)o(w)o(er)112 1913 y(than)d(sp)q(ecialized)k(c) o(hips)d(b)q(ecause)h(man)o(y)e(of)g(the)h(op)q(erations)f(in)o(v)o(olv)o(ed) i(in)f(DES)f(are)h(bit-lev)o(el)h(ma-)112 1970 y(nipulations.)21 b(As)13 b(a)h(result,)g(man)o(y)f(of)g(the)h(DES-lik)o(e)h(systems)e(suc)o(h) h(as)f(Merkle's)g(Kh)o(ufu)i([Mer90)n(])112 2026 y(w)o(ere)f(designed)i(as)e (replacemen)o(ts)i(that)e(could)i(b)q(e)f(easily)h(implemen)o(ted)g(on)f(con) o(v)o(en)o(tional)g(hard-)112 2083 y(w)o(are.)182 2139 y(There)20 b(is)f(one)g(class)h(of)f(general)g(arc)o(hitecture,)h(ho)o(w)o(ev)o(er,)f (that)f(implemen)o(ts)j(bit-lev)o(el)g(op-)112 2195 y(erations.)33 b(The)21 b(mac)o(hines)f(lik)o(e)h(the)f(CM-1,)g(CM-2)f(and)h(CM-200)f(from)g (Thinking)i(Mac)o(hines)112 2252 y(Corp)q(oration)12 b(and)i(the)f(Maspar)f (mac)o(hine)i(all)g(ha)o(v)o(e)f(thousands)g(of)g(one-bit)h(pro)q(cessors.)19 b(The)13 b(de-)112 2308 y(signers)g(in)o(tended)h(that)d(a)i(large)f(n)o(um)o (b)q(er)h(of)f(pro)q(cessors)g(w)o(ould)h(comp)q(ensate)g(for)f(the)h (de\014cencies)112 2365 y(of)h(the)i(individual)i(no)q(des.)182 2421 y(Another)12 b(example)h(of)e(this)h(small)h(arc)o(hitecture)f(is)g(no)o (w)f(emerging)h(from)f(the)h(labs)g(of)g(memory)112 2478 y(designers)19 b(who)g(are)f(trying)h(to)f(build)j(sophisticated)f(con)o(ten)o(t)e (addressable)h(memory)f(\(CAM\).)112 2534 y(The)12 b(individual)k(pro)q (cessors)c(of)g(these)h(mac)o(hines)g(are)f(ev)o(en)h(w)o(eak)o(er)e(than)i (the)f(ones)h(of)f(the)g(CM-1,)112 2591 y(but)h(they)f(can)h(b)q(e)h(pac)o(k) o(ed)f(v)o(ery)f(densely)i(on)f(a)f(c)o(hip.)20 b(The)13 b(tin)o(y)h(pro)q (cessors)e(ha)o(v)o(e)g(only)i(a)e(fraction)112 2647 y(of)i(the)h(memory)f (of)g(a)h(CM-1)f(\(42)f(bits)j(v)o(ersus)e(thousands\))g(and)h(only)h(a)e (one)h(dimensional)i(in)o(ter-)112 2704 y(connection)c(net)o(w)o(ork)e(\(vs.) 19 b(12\),)12 b(but)g(this)h(is)g(su\016cien)o(t)g(to)f(implemen)o(t)i(DES.)e (Most)f(imp)q(ortan)o(tly)l(,)960 2828 y(1)p eop %%Page: 2 2 bop 112 195 a Fj(these)13 b(restrictions)g(allo)o(w)g(a)f(pac)o(king)i (densit)o(y)f(\(1024)f(pro)q(cessors)g(p)q(er)h(c)o(hip\))h(that)e(is)h (signi\014can)o(tly)112 252 y(higher)j(at)e(a)h(c)o(heap)h(price.)21 b(\($30-$100)13 b(p)q(er)i(c)o(hip\))182 308 y(Implemen)o(ting)e(the)f (cipher)h(on)e(generalized)i(parallel)g(arc)o(hitectures)f(lik)o(e)g(the)g (CAM)f(ha)o(v)o(e)g(one)112 364 y(main)j(adv)m(an)o(tage{)g(cost.)19 b(Man)o(y)13 b(computer)h(designers)h(often)f(\014nd)h(that)e(the)h(sp)q(eed) i(of)d(a)h(sp)q(ecial-)112 421 y(ized)h(DES)e(c)o(hip)i(is)f(often)g(not)f(w) o(orth)g(the)h(price.)20 b(Generalized,)15 b(con)o(ten)o(t-addressable)g(mac) o(hines,)112 477 y(ho)o(w)o(ev)o(er,)d(ha)o(v)o(e)g(man)o(y)h(other)f (applications)j(and)e(this)g(mak)o(es)f(them)h(a)g(go)q(o)q(d)g(compromise)g (for)f(the)112 534 y(system)i(designer.)20 b(The)15 b(design)h(presen)o(ted)f (here)g(can)g(b)q(e)g(easily)h(reprogrammed)d(in)j(soft)o(w)o(are)d(to)112 590 y(encrypt)i(with)h(DES)f(or)g(an)o(y)g(DES-lik)o(e)i(v)m(arian)o(t)e(lik) o(e)h(Kh)o(ufu.)21 b(The)16 b(hardw)o(are)f(can)g(also)g(b)q(e)h(used)112 647 y(do)f(data)f(compression,)i(data)e(searc)o(hes)h(or)g(ev)o(en)h(man)o(y) e(di\013eren)o(t)i(graphics)f(op)q(erations.)182 703 y(This)h(pap)q(er)g (will)h(describ)q(e)g(ho)o(w)e(to)g(implemen)o(t)h(the)g(DES)f(algorithm)h (on)f(this)h(arc)o(hitecture)112 760 y(and)e(pro)q(duce)h(results)g(that)f (are)g(on)g(par)g(with)h(the)f(middle)i(range)e(of)g(the)h(sp)q(ecialized)i (hardw)o(are.)112 816 y(The)h(main)h(con)o(tribution)h(is)f(not)f(extremely)h (fast)f(encryption)h(sp)q(eeds.)31 b(It)19 b(is)g(v)o(ery)f(fast)g(sp)q(eed) 112 873 y(coupled)13 b(with)f(soft)o(w)o(are-lev)o(el)g(\015exibilit)o(y)l(.) 22 b(Man)o(y)11 b(other)g(pap)q(ers)i(ha)o(v)o(e)e(o\013ered)h(\015exible)i (hardw)o(are)112 929 y(designs)g([VHVM88)o(,)g(FMP85)n(])g(that)f(can)h(b)q (e)g(easily)h(rew)o(ork)o(ed)e(to)g(handle)j(v)m(arian)o(ts)d(of)h(DES,)f (but)112 985 y(none)18 b(o\013er)f(the)h(\015exibilit)o(y)i(of)d(this)i (system.)27 b(V)l(erbau)o(whede)18 b(et)g(al.)28 b([VHVM88)o(])17 b(requires)i(new)112 1042 y(silicon)13 b(to)d(b)q(e)i(fabricated)g(in)g(all)g (cases)f(and)g(the)g(designs)h(of)f(F)l(al\014eld)i(et)e(al.)19 b([FMP85)n(])11 b(run)g(in)o(ternal)112 1098 y(micro)q(co)q(de)k(that)g(can)f (b)q(e)i(easily)g(reprogrammed)e(to)g(implemen)o(t)i(other)e(sligh)o(t)h(v)m (arian)o(ts)g(of)f(DES)112 1155 y(suc)o(h)19 b(as)g(cipher-blo)q(c)o(k)j(c)o (haining.)33 b(Ho)o(w)o(ev)o(er,)19 b(new)h(algorithms)f(lik)o(e)i(Kh)o(ufu,) f(ho)o(w)o(ev)o(er,)g(w)o(ould)112 1211 y(require)e(a)f(new)g(micro-co)q(de)h (instruction)h(set.)25 b(The)18 b(\015exibilit)o(y)i(of)c(this)i(CAM)f(based) g(design)h(is)112 1268 y(quite)i(attractiv)o(e)f(to)g(b)q(oth)h(the)g(system) g(designer)h(and)f(the)g(brute-force)g(attac)o(k)o(er)e(b)q(ecause)j(it)112 1324 y(allo)o(ws)15 b(the)g(hardw)o(are)g(to)f(b)q(e)i(used)g(for)f (di\013eren)o(t)g(purp)q(oses)h(and)f(di\013eren)o(t)h(algorithms.)112 1467 y Fi(1)69 b(Con)n(ten)n(t-Addressable)22 b(Memory)h(Mac)n(hines)112 1569 y Fj(Standard)18 b(memory)f(maps)h(an)g(address)g(to)g(a)f(v)m(alue.)30 b(Unfortunately)l(,)19 b(there)f(are)g(man)o(y)f(appli-)112 1625 y(cations)i(when)h(an)f(algorithm)g(needs)h(to)e(kno)o(w)h(whic)o(h)h (memory)f(lo)q(cation)h(holds)g(a)e(particular)112 1682 y(v)m(alue.)36 b(The)20 b(only)h(recourse)f(is)h(to)e(searc)o(h)h(all)h(the)f(memory)g(to)f (\014nd)i(the)f(v)m(alue)i(in)f(question.)112 1738 y(Con)o(ten)o (t-addressable)13 b(memory)f(is)i(a)e(hardw)o(are)h(solution)g(to)g(this)g (problem)h(that)e(will)j(in)o(v)o(ert)e(the)112 1795 y(searc)o(h)k(and)i(pro) o(vide)f(the)g(address)g(holding)i(a)d(v)m(alue)j(in)f(a)e(single)j(op)q (eration.)28 b(This)19 b(tec)o(hnique)112 1851 y(has)14 b(b)q(een)i(w)o (ell-researc)o(hed)g(o)o(v)o(er)e(the)h(y)o(ears)f(and)h(the)g(b)q(o)q(ok)g (b)o(y)g(Kohonen)g([Koh87])f(notes)g(man)o(y)112 1908 y(approac)o(hes)i(and)g (summarizes)h(some)f(of)g(the)h(more)f(salien)o(t)h(asp)q(ects)f(of)g(this)h (researc)o(h.)24 b(Sev)o(eral)112 1964 y(companies)16 b(including)i(AMD)c (are)h(making)g(basic)h(con)o(ten)o(t-addressable)g(memory)f(mo)q(dules.)182 2021 y(Recen)o(tly)h(teams)d(at)h(Syracuse)h(Univ)o(ersit)o(y)f(\(some)g (publications)i(include)h([Old86,)d(O)o(WN87)o(,)112 2077 y(OSB87]\),)e(MIT)h (and)g(Cornell)g(\([Bri90,)f(WS89,)g(Zip90]\))g(ha)o(v)o(e)g(dev)o(elop)q(ed) j(more)d(sophicated)i(and)112 2133 y(p)q(o)o(w)o(erful)i(implemen)o(tations)i (in)g(silicon.)25 b(These)17 b(implemen)o(tations)h(allo)o(w)f(the)f (programmer)g(to)112 2190 y(c)o(hain)21 b(the)g(result)g(of)g(sev)o(eral)g (searc)o(hes)f(together)g(in)i(a)e(simple)j(fashion)e(so)f(that)g(larger)h (data)112 2246 y(structures)14 b(and)h(more)g(complicated)h(searc)o(hes)f (can)g(b)q(e)h(p)q(erformed)f(in)h(hardw)o(are.)j(Some)c(of)g(this)112 2303 y(hardw)o(are)c(w)o(as)g(originally)j(in)o(tended)f(to)e(sp)q(eed)i(up)g (logic)g(programming,)e(but)h(man)o(y)g(p)q(eople)h(ha)o(v)o(e)112 2359 y(found)i(surprising)h(and)e(in)o(teresting)i(applications)g(for)e(the)h (simple)h(hardw)o(are.)j(Old\014eld)e(and)e(his)112 2416 y(team)f(at)h (Syracuse,)g(for)g(instance,)g(are)g(curren)o(tly)h(w)o(orking)f(on)g (compressing)g(data.)182 2472 y(A)21 b(compan)o(y)l(,)g(Coheren)o(t)f (Researc)o(h)h(Incorp)q(orated)f(of)g(Syracuse,)i(New)e(Y)l(ork,)i(is)e (building)112 2529 y(sophisticated)k(con)o(ten)o(t-addressable)g(memory)f(c)o (hips)h(called)h(the)47 b(Coheren)o(t)23 b(Pro)q(cessor)g(for)112 2585 y(widespread)14 b(use.)19 b(This)13 b(pap)q(er)h(will)g(use)f(their)h(c) o(hip)f(as)g(an)g(example)g(b)q(ecause)h(it)f(is)h(commercially)112 2642 y(a)o(v)m(ailable,)h(but)f(there)g(is)g(no)g(reason)g(wh)o(y)f(the)h (algorithms)g(cannot)g(b)q(e)g(mo)q(di\014ed)h(sligh)o(tly)g(for)f(use)112 2698 y(on)h(similar)h(c)o(hips.)960 2828 y(2)p eop %%Page: 3 3 bop 182 195 a Fj(A)o(t)11 b(the)g(basic)h(lev)o(el,)h(the)22 b(Coheren)o(t)11 b(Pro)q(cessor)g(is)g(a)g(large,)h(single)g(dimensional)i (arra)o(y)c(of)g(v)o(ery)112 252 y(simple)k(parallel)g(pro)q(cessors.)19 b(Eac)o(h)12 b(pro)q(cessor)h(has)f(42)g(bits)h(of)f(memory)g(\()p Fh(W)1456 259 y Fg(i)1470 252 y Fj([0])c Fh(:)g(:)g(:)t(W)1629 259 y Fg(i)1643 252 y Fj([41],)k(the)g Fh(i)112 308 y Fj(denotes)f(the)h(pro) q(cessor)g(n)o(um)o(b)q(er\))f(and)h(three)g(one-bit)g(registers)g(\()p Fh(R)1300 315 y Ff(1)1319 308 y Fj(,)f Fh(R)1378 315 y Ff(2)1409 308 y Fj(and)h Fh(R)1529 315 y Ff(3)1548 308 y Fj(\).)19 b(It)11 b(also)h(has)f(a)112 364 y(pro)q(cessing)i(unit)g(that)f(can)g(execute)h (instructions)h(on)e(the)g(registers,)h(transfer)e(data)h(b)q(et)o(w)o(een)h (the)112 421 y(registers)i(and)g(the)h(memory)l(,)e(comm)o(unicate)i(with)g (the)f(t)o(w)o(o)f(neigh)o(b)q(oring)j(pro)q(cessors)e(or)g(matc)o(h)112 477 y(a)f(v)m(alue)i(on)f(the)g(in)o(ternal)g(bus.)20 b(The)15 b(instructions)h(are)e(simple)j(op)q(erations)d(that)g(read)h(the)g(three)112 534 y(register)e(bits)h(of)e(memory)h(and)g(store)g(the)g(result)h(in)g(one)f (of)g(the)h(three.)19 b(The)13 b(matc)o(h)g(instructions)112 590 y(can)21 b(b)q(e)g(used)h(to)e(sim)o(ultaneously)i(compare)f(one)g (42-bit)g(v)m(alue)h(against)f(the)f(en)o(tire)i(arra)o(y)d(of)112 647 y(pro)q(cessors.)g(If)d(there)f(is)h(a)f(matc)o(h,)f(then)h(the)h (appropriate)f(v)m(alue)h(is)g(placed)g(in)g(a)f(register.)182 703 y(The)c(follo)o(wing)h(table)f(sho)o(ws)f(the)h(basic)22 b(Coheren)o(t)10 b(Pro)q(cessor)g(instructions)i(and)f(the)g(n)o(um)o(b)q(er) 112 760 y(of)j(clo)q(c)o(k)i(cycles)h(used)e(to)g(complete)h(them.)167 866 y(1.)22 b Fe(MA)m(TCH:)13 b Fj(Sim)o(ultaneously)k(compare)e(the)h(42)f (general)g(bits)h(at)f(eac)o(h)g(pro)q(cessor)g(with)h(the)225 922 y(v)m(alues)h(on)e(a)g(bus)h(and)g(store)f(the)g(result)h(of)f(this)h (matc)o(h)f(in)h Fh(R)1319 929 y Ff(1)1338 922 y Fj(.)21 b(This)16 b(is)g(used)g(to)f(lo)q(ok)h(up)225 979 y(items)j(quic)o(kly)l(.)33 b(The)19 b(matc)o(h)f(routine)h(can)g(include)i(wild-card)f(matc)o(hes)f(for) f(individual)225 1035 y(bits)e(so)e(it)h(is)g(p)q(ossible)i(to)d(matc)o(h)g (for)h(strings)f(of)h(bits)g(lik)o(e)h(\\0000******11*)o(***)o(*")c(\(a)i (\\*")225 1092 y(matc)o(hes)i(b)q(oth)h(a)f(\\0")g(and)h(a)f(\\1"\).)23 b(If)17 b(y)o(ou)f(w)o(an)o(t)f(to)h(mo)o(v)o(e)g(the)h(v)m(alue)g(of)f(bit)i Fh(W)1676 1099 y Fg(i)1690 1092 y Fj([2])d(in)o(to)225 1148 y Fh(R)260 1155 y Ff(3)280 1148 y Fj(,)e(then)i(y)o(ou)f(w)o(ould)g(\\matc)o (h")f(a)h(pattern)g(with)g(1)g(in)h(bit)g Fh(W)1309 1155 y Fg(i)1323 1148 y Fj([2])e(and)h(wild-card)h(matc)o(hes)225 1205 y(sp)q(eci\014ed)i(for)e(the)f(rest)h(and)g(store)f(the)h(result)g(in)h Fh(R)1135 1212 y Ff(3)1154 1205 y Fj(.)k(If)15 b(the)g(v)m(alue)h(of)e(bit)i Fh(W)1592 1212 y Fg(i)1606 1205 y Fj([2])e(w)o(as)g(1)g(in)225 1261 y(a)g(particular)g(w)o(ord,)f(then)h(the)g(matc)o(h)f(w)o(ould)i(b)q(e)f (successful)h(and)f(a)g(1)f(w)o(ould)h(b)q(e)h(stored)e(in)225 1318 y Fh(R)260 1325 y Ff(3)280 1318 y Fj(.)22 b(If)17 b(a)e(zero)h(w)o(as)g (in)h(bit)f Fh(W)754 1325 y Fg(i)768 1318 y Fj([2],)f(then)i(the)f(matc)o(h)g (w)o(ould)g(b)q(e)h(unsuccessful)h(and)e(a)g(zero)225 1374 y(w)o(ould)h(b)q(e)g(stored.)24 b(The)16 b(v)m(alues)i(of)e(the)h(other)f (columns)h(w)o(ould)g(not)f(b)q(e)h(a\013ected.)24 b Fd(Cost:)225 1430 y(4)g(cycles.)167 1524 y Fj(2.)e Fe(CALC:)16 b Fj(Calculate)i(a)g (three-bit)g(function)g(of)g(the)f(three)h(registers)f(and)h(store)f(the)h (result)225 1581 y(in)e(a)f(third)h(register.)k Fd(Cost:)47 b(2)24 b(cycles)p Fj(.)167 1675 y(3.)e Fe(READ:)14 b Fj(T)l(ak)o(e)f(the)g (result)h(of)f(a)g(selected)h(w)o(ord)f(and)h(place)g(it)f(on)h(the)f(bus.)20 b(This)14 b(op)q(eration)225 1731 y(usually)j(follo)o(ws)e(a)g(MA)l(TCH)g(op) q(eration.)20 b Fd(Cost:)47 b(3)24 b(cycles.)167 1825 y Fj(4.)e Fe(WRITE:)h Fj(Mo)o(v)o(e)g(the)g(result)h(from)f(the)g(bus)h(in)o(to)g(the)f (selected)i(w)o(ord\(s\).)43 b Fd(Cost:)k(2)225 1881 y(cycles.)167 1975 y Fj(5.)22 b Fe(SHIFT:)16 b Fj(The)j(\014rst)e(registers)h(of)g(eac)o(h) g(w)o(ord)f(are)h(in)o(terconnected.)29 b(They)18 b(can)h(shift)f(the)225 2032 y(bit)e(in)g(their)g(register)f(to)f(adjacen)o(t)h(w)o(ords)g(in)h(one)f (step.)20 b Fd(Cost:)47 b(2)24 b(cycles.)167 2125 y Fj(6.)e Fe(WRITECOLUMN:)12 b Fj(Mo)o(v)o(es)h(a)g(bit)i(from)e(a)g(register)h(in)o (to)g(one)g(of)g(the)g(42)f(bits)h(of)g(memory)l(.)225 2182 y Fd(Cost:)47 b(2)24 b(cycles.)182 2288 y Fj(These)14 b(commands)f(can)h(b)q (e)g(strung)f(together)f(to)h(manipulate)h(data)f(in)h(simple)h(and)f (straigh)o(t-)112 2345 y(forw)o(ard)g(metho)q(ds.)112 2488 y Fi(2)69 b(Implemen)n(ti)o(ng)20 b(Plain)i(DES)112 2589 y Fj(There)13 b(are)f(three)h(main)g(op)q(erations)g(in)o(v)o(olv)o(ed)h(in)g (encrypting)f(a)g(blo)q(c)o(k)g(of)g(64)f(bits)h(with)g(the)g(basic)112 2646 y(mo)q(de)19 b(of)g(the)g(Data)f(Encryption)i(Standard)f(kno)o(wn)g(as)f (the)h(Electronic)i(Co)q(de)e(Bo)q(ok)g(\(ECB\).)112 2702 y(They)i(are)f(1\)) g(p)q(erm)o(uting)h(the)g(bits,)h(2\))e(passing)h(a)f(32-bit)h(blo)q(c)o(k)g (through)g(an)f(s-b)q(o)o(x)h(and)g(3\))960 2828 y(3)p eop %%Page: 4 4 bop 112 195 a Fj(p)q(erm)o(uting)16 b(the)g(k)o(ey)g(structure.)21 b(Eac)o(h)16 b(of)f(these)h(steps)g(is)g(easy)g(to)f(program)g(on)h(the)31 b(Coheren)o(t)112 252 y(Pro)q(cessor)12 b(,)i(in)g(a)f(large)g(part)g(b)q (ecause)h(the)f(arc)o(hitecture)h(is)g(so)e(limited.)21 b(Sev)o(eral)14 b(features)f(of)g(the)112 308 y(instruction)j(set,)e(ho)o(w)o(ev)o(er,)g(mak) o(e)h(implemen)o(ting)i(the)e(algorithm)h(v)o(ery)f(easy)l(.)182 364 y(Let)i(the)h(plain)o(text)f(blo)q(c)o(ks)h(of)f(data)f(b)q(e)i(denoted,) f Fh(B)1122 371 y Ff(1)1143 364 y Fh(;)8 b(:)g(:)g(:)t(;)g(B)1278 371 y Fg(n)1318 364 y Fj(and)18 b(the)f(individual)j(bits)d(of)112 421 y(blo)q(c)o(k)f Fh(B)266 428 y Fg(i)295 421 y Fj(b)q(e)g Fc(f)p Fh(B)414 428 y Fg(i)428 421 y Fj([0])8 b Fh(:)g(:)g(:)d(B)579 428 y Fg(i)593 421 y Fj([63])p Fc(g)p Fj(.)18 b(The)e(k)o(ey)f(is)h Fh(K)i Fj(and)d(the)g(individual)k(bits)c(are)g Fh(K)s Fj([0])8 b Fh(:)g(:)g(:)t(K)s Fj([55].)182 477 y(There)16 b(are)e(sixteen)i(rounds)g (of)e(encryption)i(and)g(the)f(k)o(ey)g(sc)o(heduling)i(algorithm)e(c)o(ho)q (oses)g(a)112 534 y(48-bit)j(subset)h(of)f(k)o(ey)h(bits)g(to)e(b)q(e)j(used) f(on)f(eac)o(h)h(round.)30 b(Let)19 b Fh(K)1311 517 y Ff(\()p Fg(l)p Ff(\))1351 534 y Fj([0])8 b Fh(:)g(:)g(:)t(K)1509 517 y Ff(\()p Fg(l)p Ff(\))1550 534 y Fj([47])17 b(b)q(e)i(the)g(48)112 590 y(bits)d(used)h(in)f(round)g Fh(l)q Fj(.)22 b(Eac)o(h)16 b(blo)q(c)o(k)g(of)g(64)f(bits)h(is)h(brok)o(en)f(in)o(to)f(t)o(w)o(o)g (32-bit)h(halv)o(es)g(\(called)i Fh(B)1805 597 y Fg(L)112 647 y Fj(and)h Fh(B)238 654 y Fg(R)267 647 y Fj(\))f(and)h(in)h(eac)o(h)f(round)g (the)g(v)m(alue)g(of)g(one)g(of)f(the)h(halv)o(es)g(is)g(mixed)h(with)f(a)f (subset)h(of)112 703 y(the)14 b(k)o(ey)g(bits,)g(passed)g(through)g(the)g (s-b)q(o)o(x)g(and)g(then)g(mixed)h(with)g(the)f(righ)o(t)g(32-bit)g(half.)20 b(More)112 760 y(precisely)l(,)c(in)h(eac)o(h)e(round:)674 862 y Fh(B)708 869 y Fg(L)747 862 y Fc( )e Fh(B)839 869 y Fg(L)876 862 y Fc(\010)d Fh(f)5 b Fj(\()p Fh(E)s Fj(\()p Fh(B)1055 869 y Fg(R)1083 862 y Fj(\))10 b Fc(\010)g Fh(K)1198 843 y Ff(\()p Fg(l)p Ff(\))1239 862 y Fj(\))p Fh(:)112 964 y Fj(\(\\)p Fc(\010)p Fj("=X)o(OR\))18 b(Then)h Fh(B)539 971 y Fg(L)584 964 y Fj(and)g Fh(B)710 971 y Fg(R)757 964 y Fj(are)f(exc)o(hanged.)31 b Fh(f)23 b Fj(is)c(the)g(s-b)q(o)o(x)f(function)h(that)f(tak)o(es)g(48)112 1020 y(bits)d(and)g(returns)g(32)g(and)g(the)g Fh(E)s Fj(\(\))f(function)i (is)f(an)g(\\expansion")h(function)g(that)e(maps)h(32)g(bits)112 1077 y(in)o(to)g(48)f(bits)i(so)e(it)h(can)h(b)q(e)f(com)o(bined)h(with)g (the)f(48)f(bits)i(of)e(k)o(ey)l(.)20 b(Some)15 b(bits)h(of)e(the)h(input)i (to)d Fh(E)112 1133 y Fj(are)h(used)g(more)g(than)g(others.)182 1190 y(The)j(data)f(to)g(b)q(e)h(encrypted)h(is)f(brok)o(en)f(in)o(to)h (64-bit)g(blo)q(c)o(ks)g(and)g(eac)o(h)g(blo)q(c)o(k)g(is)g(stored)f(in)112 1246 y(32-bit)e(halv)o(es)h(in)g(t)o(w)o(o)d(adjacen)o(t)i(42)g(bit)h(w)o (ords)e(in)i(the)f(arra)o(y)l(,)f Fh(W)1264 1253 y Fg(i)1293 1246 y Fj(and)i Fh(W)1425 1253 y Fg(i)p Ff(+1)1484 1246 y Fj(.)112 1368 y Fb(2.1)55 b(P)n(erm)n(uting)18 b(the)g(Bits)112 1454 y Fj(A)o(t)f(the)h(b)q(eginning)j(and)d(the)g(end)h(of)f(the)g(encryption)h (pro)q(cess,)g(the)f(64)g(bits)g(in)h(the)f(blo)q(c)o(k)h(are)112 1510 y(passed)12 b(through)h(a)f(bit-wise)h(p)q(erm)o(utation.)19 b(This)14 b(step)e(is)h(often)f(considered)i(the)f(slo)o(w)o(est)f(part)f(of) 112 1567 y(man)o(y)j(soft)o(w)o(are)e(implemen)o(tations)k(for)e(general)g (purp)q(ose)h(mac)o(hines)h(and)e(man)o(y)g(p)q(eople)i(b)q(eliev)o(e)112 1623 y(that)d(it)h(w)o(as)f(included)k(to)c(slo)o(w)h(do)o(wn)f(soft)o(w)o (are)g(implemen)o(tations)i(and)f(force)g(general)g(CPUs)g(to)112 1680 y(mo)o(v)o(e)f(bits)i(one)f(b)o(y)g(one.)20 b(The)29 b(Coheren)o(t)14 b(Pro)q(cessor)g(m)o(ust)f(also)h(mo)o(v)o(e)g(eac)o(h)g(bit)h(one)f(at)g(a)g (time,)112 1736 y(but)k(at)g(least)g(this)h(is)g(the)g(b)q(est)f(that)g(it)h (can)f(do.)29 b(In)19 b(practice,)h(the)e(large)h(n)o(um)o(b)q(er)g(of)e (parallel)112 1792 y(pro)q(cessors)e(mak)o(es)f(up)i(for)e(the)i(w)o (eakness.)182 1849 y(Let)23 b(the)f(p)q(erm)o(utation)g(b)q(e)h(written)g(as) f(a)g(set)g(of)f(cycles:)36 b Fh(W)1309 1856 y Fg(i)1323 1849 y Fj([)p Fh(p)1359 1856 y Ff(0)1378 1849 y Fj(])24 b Fc(!)h Fh(W)1528 1856 y Fg(j)1546 1849 y Fj([)p Fh(p)1582 1856 y Ff(1)1601 1849 y Fj(])f Fc(!)h Fh(:)8 b(:)g(:)23 b Fc(!)112 1905 y Fh(W)155 1912 y Fg(i)169 1905 y Fj([)p Fh(p)205 1912 y Fg(i)218 1905 y Fj(])e Fc(!)g Fh(W)361 1912 y Fg(i)375 1905 y Fj([)p Fh(p)411 1912 y Ff(0)430 1905 y Fj(].)35 b(There)20 b(are)g(64)g(bits)g(to)g(b)q(e)h (exc)o(hanged,)g(but)f(they)h(do)f(not)f(mo)o(v)o(e)h(in)h(one)112 1962 y(cycle.)32 b(The)20 b(pro)q(cess)f(can)g(b)q(e)h(accomplished)h(b)o(y)e (stringing)g(together)f(a)h(c)o(hain)h(of)f(bit)g(mo)o(ving)112 2018 y(commands.)g(When)13 b(the)h(bits)g(to)e(b)q(e)i(exc)o(hanged)g(are)f (on)g(di\013eren)o(t)h(w)o(ords,)f(then)g(the)h(CAM)f(m)o(ust)112 2075 y(also)k(execute)h(a)g(bit-passing)g(command)g(to)f(sw)o(ap)g(the)g(bit) h(to)f(the)h(adjacen)o(t)f(w)o(ord.)26 b(The)18 b(w)o(ork)112 2131 y(can)d(b)q(e)h(summarized)g(in)g(pseudo-co)q(de:)112 2237 y(Mo)o(v)o(e)e Fh(W)276 2244 y Fg(i)290 2237 y Fj([)p Fh(p)326 2244 y Ff(0)345 2237 y Fj(])h(in)o(to)g(a)g(bit)h(.)112 2294 y(for)e(k:=1)h(to)g(63)f(do)181 2350 y(Mo)o(v)o(e)g Fh(W)345 2357 y Fg(i)359 2350 y Fj([)p Fh(p)395 2357 y Fg(k)416 2350 y Fj(])h(in)o(to)g(a)g(bit.)181 2407 y(Mo)o(v)o(e)f Fh(W)345 2414 y Fg(i)359 2407 y Fj([)p Fh(p)395 2414 y Fg(k)q Fa(\000)p Ff(1)461 2407 y Fj(])h(in)o(to)g(its)h(destination.)181 2463 y(If)g Fh(W)270 2470 y Fg(i)284 2463 y Fj([)p Fh(p)320 2470 y Fg(k)341 2463 y Fj(])e(is)i(on)f(the)g(wrong)g(w)o(ord,)227 2520 y(then)g(pass)g(it)h(to)e(the)i(correct)e(one.)112 2576 y(Mo)o(v)o(e)g Fh(W)276 2583 y Fg(i)290 2576 y Fj([)p Fh(p)326 2583 y Ff(63)363 2576 y Fj(])h(in)o(to)g Fh(W)526 2583 y Fg(i)540 2576 y Fj([)p Fh(p)576 2583 y Ff(0)595 2576 y Fj(])g(.)960 2828 y(4)p eop %%Page: 5 5 bop 182 195 a Fj(There)17 b(are)g(only)g(32)f(bits)i(that)e(need)i(to)e(b)q (e)h(shifted)h(b)q(et)o(w)o(een)f(w)o(ords.)24 b(It)17 b(is)g(p)q(ossible)i (to)d(do)112 252 y(this)g(quic)o(kly)l(.)24 b(The)16 b(next)g(section)h(whic) o(h)g(computes)f(the)g(v)m(alues)h(of)f(the)g(s-b)q(o)o(xes)g(is)g(m)o(uc)o (h)g(more)112 308 y(time)g(in)o(tensiv)o(e.)22 b(The)16 b(cost:)k(129)14 b(MA)l(TCH)i(and)f(WRITECOLUMN)i(instructions,)f(32)f(SHIFT)112 364 y(instructions.)20 b(Ab)q(out)c(580)e(cycles.)112 486 y Fb(2.2)55 b(Computing)18 b(the)g(S-b)r(o)n(xes)112 572 y Fj(The)10 b(s-b)q(o)o(x)h(are)f(resp)q(onsible)i(for)e(pro)o(viding)h(the)f(non-linear) i(mixing)f(of)f(the)h(bits)f(that)g(is)h(necessary)112 628 y(to)i(pro)o(vide)i(adequate)f(securit)o(y)l(.)20 b(A)o(t)14 b(the)g(highest)h(lev)o(el,)g(the)f(s-b)q(o)o(x)h(is)f(a)g(function)h(that)f (maps)g(32)112 685 y(bits)g(to)f(32)g(other)h(bits.)20 b(The)14 b(s-b)q(o)o(xes)g(used)g(in)h(DES)f(are,)f(though,)h(m)o(uc)o(h)g(simpler)h (and)f(they)g(can)112 741 y(b)q(e)k(describ)q(ed)i(as)e(eigh)o(t)g(functions) h(that)e(tak)o(e)h(6)f(out)h(of)g(the)g(32)f(bits)i(and)f(return)g(four.)28 b(Some)112 798 y(bits)17 b(are)g(used)h(more)f(than)g(others.)26 b(These)18 b(eigh)o(t)f(s-b)q(o)o(xes)h(can)f(b)q(e)h(further)f(simpli\014ed) j(in)o(to)e(32)112 854 y(functions)g(that)f(map)h(six)h(bits)f(to)f(one)h (bit)g(and)h(this)f(is)g(the)g(b)q(est)g(lev)o(el)i(of)d(abstraction)g(to)h (use)112 911 y(when)d(programming)g(the)30 b(Coheren)o(t)15 b(Pro)q(cessor)g(.)182 967 y(Mey)o(er)f(and)f(Mat)o(y)o(as)f([MM82)o(])h (describ)q(e)i(the)f(design)h(of)e(the)h(s-b)q(o)o(xes)g(in)g(terms)g(of)f Fe(minterms)p Fj(,)112 1024 y(whic)o(h)20 b(are)f(roughly)h(the)g(same)f(as)g (clauses)i(of)e(b)q(o)q(olean)h(v)m(ariables.)34 b(An)20 b(equation)g (describing)112 1080 y(output)15 b(of)f(one)i(bit)f(of)g(an)g(s-b)q(o)o(x)h (migh)o(t)f(lo)q(ok)g(something)h(lik)o(e)g(this:)331 1193 y Fh(B)365 1200 y Fg(i)380 1193 y Fj([1])9 b Fc(\001)g(:)p Fh(B)524 1200 y Fg(i)539 1193 y Fj([2])g Fc(\001)h Fh(B)654 1200 y Fg(i)669 1193 y Fj([3])f Fc(\001)h Fh(B)784 1200 y Fg(i)798 1193 y Fj([4])f(+)i Fh(B)936 1200 y Fg(i)950 1193 y Fj([1])e Fc(\001)h(:)p Fh(B)1095 1200 y Fg(i)1110 1193 y Fj([5])f Fc(\001)h(:)p Fh(B)1255 1200 y Fg(i)1270 1193 y Fj([6])f(+)h Fh(B)1407 1200 y Fg(i)1422 1193 y Fj([2])f Fc(\001)g Fh(B)1536 1200 y Fg(i)1551 1193 y Fj([5])p Fh(:)160 b Fj(\(1\))112 1276 y(\(\\)p Fc(\001)p Fj("=b)q(o)q(olean)17 b(and,)h(\\+"=b)q(o)q(olean)g(or,)f(\\)p Fc(:)p Fj("=b)q(o)q(olean)h(not.\))25 b(There)18 b(are)f(three)g(min)o(terms) g(in)112 1333 y(the)j(example)h(and)f(it)g(is)g(generally)i(b)q(eliev)o(ed)g (that)d(the)h(n)o(um)o(b)q(er)g(of)g(min)o(terms)g(in)h(a)e(minimal)112 1389 y(expression)g(is)g(one)g(measure)f(the)g(complexit)o(y)i(of)e(the)g (s-b)q(o)o(x.)30 b(The)19 b(recen)o(t)f(pap)q(ers)h(b)o(y)f(Biham)112 1446 y(and)d(Shamir)h([BS91])f(and)h(others)f(,)g(sho)o(w)g(that)g(there)h (are)f(additional)i(criterion)f(that)f(are)g(more)112 1502 y(imp)q(ortan)o(t.)j(Mey)o(er)11 b(and)h(Mat)o(y)o(as)d(note)i(that)g(there)h (are)f(52)g(and)g(53)g(min)o(terms)h(in)g(the)g(description)112 1559 y(of)i(eac)o(h)i(of)e(the)i(8)f(s-b)q(o)o(xes.)182 1615 y(These)f(min)o(term)f(descriptions)i(of)e(the)h(s-b)q(o)o(xes)f(can)h(b)q(e) g(directly)g(con)o(v)o(erted)g(in)o(to)f(op)q(erations)112 1672 y(for)k(the)36 b(Coheren)o(t)17 b(Pro)q(cessor)g(.)28 b(Eac)o(h)18 b(clause)h(of)e(v)m(ariables)i(to)f(b)q(e)g(ANDed)g(together)f (can)h(b)q(e)112 1728 y(computed)13 b(with)h(a)e(MA)l(TCH)h(equation)h(with)f (appropriate)g(set)g(of)g(ones)g(for)f(the)i(v)m(ariables)g(in)g(the)112 1785 y(clause,)g(zeros)e(for)h(the)g(negated)g(v)m(ariables)h(in)g(the)f (clause)h(and)f(wildcards)i(for)d(the)h(unrepresen)o(ted)112 1841 y(v)m(ariables.)21 b(The)15 b(expression)h(from)f(equation)g(1)g(can)h (b)q(e)f(enco)q(ded:)636 2000 y Fh(M)5 b(AT)h(C)s(H)t Fj(\\1011)i Fc(\003)i(\003)g(\003)g Fh(:)e(:)g(:)g Fc(\003)i(\003\003)1194 1981 y Fa(00)1227 2000 y Fc(!)j Fh(R)1320 2007 y Ff(1)636 2068 y Fh(C)s(ALC)s(R)808 2075 y Ff(1)839 2068 y Fc(!)h Fh(R)933 2075 y Ff(2)636 2137 y Fh(M)5 b(AT)h(C)s(H)t Fj(\\1)j Fc(\003)h(\003)g(\003)f Fj(00)h Fc(\003)g(\003)e Fh(:)g(:)g(:)f Fc(\003)j(\003\003)1244 2119 y Fa(00)1277 2137 y Fc(!)j Fh(R)1370 2144 y Ff(1)636 2206 y Fh(C)s(ALC)s(R)808 2213 y Ff(1)837 2206 y Fc(\001)d Fh(R)895 2213 y Ff(2)927 2206 y Fc(!)j Fh(R)1020 2213 y Ff(2)636 2275 y Fh(M)5 b(AT)h(C)s(H)t Fj(\\)j Fc(\003)h Fj(1)g Fc(\003)g(\003)p Fj(1)f Fc(\003)h(\003)e Fh(:)g(:)g(:)f Fc(\003)j(\003\003)1221 2256 y Fa(00)1255 2275 y Fc(!)j Fh(R)1348 2282 y Ff(1)636 2344 y Fh(C)s(ALC)s(R)808 2351 y Ff(1)837 2344 y Fc(\001)d Fh(R)895 2351 y Ff(2)927 2344 y Fc(!)j Fh(R)1020 2351 y Ff(1)1773 2413 y Fj(\(2\))182 2515 y(This)22 b(tak)o(es)f(6)h(cycles)g(p)q(er)h(min)o(term.) 39 b(A)o(t)21 b(53)g(min)o(terms)h(p)q(er)g(s-b)q(o)o(x)g(and)f(8)h(s-b)q(o)o (xes)g(p)q(er)112 2572 y(encryption)c(round,)g(this)g(tak)o(es)e(2544)h (cycles)h(p)q(er)g(encryption)g(round)g(to)f(calculate)h(the)g(v)m(alues)112 2628 y(of)e(the)g(bits.)25 b(It)16 b(tak)o(es)g(one)h(SHIFT,)f(one)h(MA)l (TCH,)f(one)g(CALC)h(and)g(one)f(COLUMNWRITE)112 2684 y(to)h(X)o(OR)h(eac)o (h)g(of)g(the)g(32)f(bits)h(in)o(to)g(the)g(adjacen)o(t)f(w)o(ord.)27 b(That)18 b(is)g(an)g(additional)h(384)e(cycles)960 2828 y(5)p eop %%Page: 6 6 bop 112 195 a Fj(for)12 b(2928)h(p)q(er)h(encryption)g(round.)20 b(There)13 b(are)g(16)g(rounds)h(in)g(DES,)f(the)h(p)q(erm)o(utations)f(tak)o (e)g(580)112 252 y(cycles)j(and)f(the)h(o)o(v)o(erall)f(encryption)h(pro)q (cess)g(tak)o(es)e(47,528)f(cycles.)112 373 y Fb(2.3)55 b(Handling)19 b(the)f(Key)112 459 y Fj(When)g(the)g(result)g(of)f(one)h(of)f(the)h(32)f (functions)i(is)f(computed)g(it)g(m)o(ust)f(b)q(e)i(X)o(OR-ed)g(with)f(the) 112 516 y(k)o(ey)c(and)g(then)g(passed)h(to)e(the)h(adjacen)o(t)g(w)o(ord)f (to)h(b)q(e)h(X)o(OR-ed)g(with)f(the)h(appropriate)f(bit.)20 b(The)112 572 y(same)11 b(k)o(ey)h(encrypts)g(all)h(the)f(blo)q(c)o(ks)h(at)e (the)h(same)g(time)g(and)g(it)h(can)f(b)q(e)g(included)j(b)o(y)d(X)o(ORing)h (the)112 628 y(k)o(ey)h(v)o(ector,)g Fh(K)384 612 y Ff(\()p Fg(l)p Ff(\))424 628 y Fj(,)g(in)o(to)h(the)g(matc)o(h)f(w)o(ords.)19 b(F)l(or)14 b(instance,)h(assume)f(that)g(\\11001100)e(10101110)112 685 y(01001100)g(11100101")g(is)j(the)f(48)g(bits)h(of)f(k)o(ey)g(b)q(eing)i (used)f(in)g(a)f(round)g(and)h(the)f(min)o(terms)h(from)112 741 y(equation)g(1)g(de\014ne)h(the)g(s-b)q(o)o(x)f(equations.)20 b(Then)c(the)f(op)q(erations)g(in)h(example)h(2)d(b)q(ecome:)636 900 y Fh(M)5 b(AT)h(C)s(H)t Fj(\\0111)i Fc(\003)i(\003)g(\003)g Fh(:)e(:)g(:)g Fc(\003)i(\003\003)1194 881 y Fa(00)1227 900 y Fc(!)j Fh(R)1320 907 y Ff(1)636 969 y Fh(C)s(ALC)s(R)808 976 y Ff(1)839 969 y Fc(!)h Fh(R)933 976 y Ff(2)636 1038 y Fh(M)5 b(AT)h(C)s(H)t Fj(\\0)j Fc(\003)h(\003)g(\003)f Fj(11)h Fc(\003)g(\003)e Fh(:)g(:)g(:)f Fc(\003)j(\003\003)1244 1019 y Fa(00)1277 1038 y Fc(!)j Fh(R)1370 1045 y Ff(1)636 1107 y Fh(C)s(ALC)s(R)808 1114 y Ff(1)837 1107 y Fc(\001)d Fh(R)895 1114 y Ff(2)927 1107 y Fc(!)j Fh(R)1020 1114 y Ff(2)636 1176 y Fh(M)5 b(AT)h(C)s(H)t Fj(\\)j Fc(\003)h Fj(0)g Fc(\003)g(\003)p Fj(0)f Fc(\003)h(\003)e Fh(:)g(:)g(:)f Fc(\003)j(\003\003)1221 1157 y Fa(00)1255 1176 y Fc(!)j Fh(R)1348 1183 y Ff(1)636 1244 y Fh(C)s(ALC)s(R)808 1251 y Ff(1)837 1244 y Fc(\001)d Fh(R)895 1251 y Ff(2)927 1244 y Fc(!)j Fh(R)1020 1251 y Ff(1)1773 1313 y Fj(\(3\))182 1416 y(The)h(same)g(k)o(ey)f(is)i(used)f(to)f(encrypt)i(or)e (decrypt)h(eac)o(h)g(blo)q(c)o(k)g(of)g(data)f(in)i(the)f(simple)h(v)o (ersion)112 1472 y(of)k(DES.)g(There)h(are)g(56)f(k)o(ey)h(bits,)h(but)f (only)g(48)g(of)f(them)h(are)f(used)i(during)f(eac)o(h)g(of)g(the)g(16)112 1528 y(di\013eren)o(t)d(rounds.)27 b(The)18 b(bits)g(b)q(eing)g(used)g(are)f (main)o(tained)i(b)o(y)e(the)h(program)e(running)j(on)e(the)112 1585 y(general)h(mac)o(hine)i(that)d(is)i(driving)g(the)37 b(Coheren)o(t)18 b(Pro)q(cessor)g(.)29 b(It)18 b(selects)h(the)f(subset)h(of) f(48)112 1641 y(bits)d(that)g(are)g(used)g(in)h(eac)o(h)g(encryption)g(and)f (mo)q(di\014es)i(the)e(s-b)q(o)o(x)g(functions)h(accordingly)l(.)182 1698 y(This)k(metho)q(d)f(presupp)q(oses)h(that)e(the)h(sixteen)g(48-bit)g (subsets)g(of)g(the)g(k)o(eys)f(are)h(precom-)112 1754 y(puted)12 b(and)g(\\compiled")g(in)o(to)g(the)g(co)q(de.)19 b(This)12 b(pro)q(cess)g(is)g(non-trivial)h(and)f(certain)g(to)f(cost)g(some)112 1811 y(time.)23 b(When)17 b(the)g(amoun)o(t)e(of)h(data)g(encrypted)h(or)f (decrypted)h(p)q(er)g(k)o(ey)f(c)o(hange)g(is)h(large,)g(then)112 1867 y(this)e(\\compilation")g(time)g(is)g(minimal.)22 b(If)15 b(the)f(k)o(ey)h(is)g(c)o(hanged)g(frequen)o(tly)l(,then)h(there)e(ma)o(y)g (b)q(e)112 1924 y(some)f(impact)i(on)e(the)i(encryption)f(times.)20 b(It)14 b(is)h(not)e(lik)o(ely)j(to)d(impact)h(the)g(o)o(v)o(erall)h (throughput,)112 1980 y(ho)o(w)o(ev)o(er,)g(if)i(the)f(CPU)g(driving)h(the)f (CAM)g(arra)o(y)f(is)i(fast)e(enough)i(to)e(in)o(terlea)o(v)o(e)i(op)q (erations)f(in)112 2037 y(b)q(et)o(w)o(een)g(the)g(v)m(arious)g(CAM)g (instructions.)23 b(This)16 b(is)h(not)e(unreasonable)i(b)q(ecause)g(man)o(y) e(of)h(the)112 2093 y(CAM)g(instructions)h(tak)o(e)f(2)g(to)f(4)i(cycles)g (to)f(complete.)24 b(A)17 b(mo)q(dern)f(pip)q(eline)q(d)j(RISC)e(arc)o (hitec-)112 2149 y(ture)i(should)i(b)q(e)f(able)h(to)e(complete)h(the)g(k)o (ey)g(sc)o(heduling)h(instruction)g(in)o(b)q(et)o(w)o(een.)34 b(A)20 b(b)q(etter)112 2206 y(understanding)f(of)f(the)g(e\013ects)g(of)g (this)h(will)g(need)g(to)f(w)o(ait)g(un)o(til)h(the)g(soft)o(w)o(are)d(is)j (completely)112 2262 y(implemen)o(ted)e(on)e(a)g(w)o(orking)f(system.)112 2384 y Fb(2.4)55 b(The)19 b(T)-5 b(otal)18 b(Cost)112 2470 y Fj(The)f(curren)o(t)h(v)o(ersion)f(of)g(the)36 b(Coheren)o(t)17 b(Pro)q(cessor)g(will)i(run)e(at)g(sp)q(eeds)i(up)f(to)f(50)f(MHtz.)27 b(If)112 2526 y(an)14 b(encryption)h(tak)o(es)e(ab)q(out)h(47,428)e(cycles,)j (then)f(eac)o(h)g(pair)h(of)e(w)o(ords)h(in)g(the)g(pro)q(cessor)g(arra)o(y) 112 2583 y(can)j(encrypt)g(ab)q(out)g(1,000)e(64-bit)j(blo)q(c)o(ks)f(p)q(er) h(second.)25 b(W)l(riting)18 b(a)f(w)o(ord)f(in)o(to)h(the)g(arra)o(y)f(and) 112 2639 y(reading)f(it)g(out)f(tak)o(es)g(5)h(cycles)h(in)f(total.)k(One)d (c)o(hip)g(of)e(the)h(curren)o(t)g(mo)q(del)g(has)g(1024)f(w)o(ords)g(or)112 2696 y(pro)q(cessors,)f(so)f(it)i(can)f(read)h(in,)g(encrypt)f(and)h(write)f (out)g(blo)q(c)o(ks)h(of)f(32K)g(in)h(52,548)d(cycles.)20 b(This)960 2828 y(6)p eop %%Page: 7 7 bop 112 195 a Fj(is)19 b(equiv)m(alen)o(t)h(to)e(31.2)g(megabits)g(p)q(er)i (second{)e(something)h(that)f(is)i(in)f(line)h(with)f(the)g(middle)112 252 y(range)i(of)h(curren)o(t)f(DES)h(c)o(hips.)41 b(The)22 b(Cryptec)o(h)g(CR)l(Y12C102)f(data)g(sheet)h(rep)q(orts)g(that)f(it)112 308 y(runs)15 b(at)f(22.5)g(megabits)h(p)q(er)h(second)g(and)f(the)g(Pijnen)o (burg)h(PCC100)e(attains)h(20)f(megabits)i(p)q(er)112 364 y(second.)j(Moreo)o (v)o(er,)12 b(the)26 b(Coheren)o(t)13 b(Pro)q(cessor)f(is)i(designed)g(to)f (b)q(e)h(easily)g(expanded)g(b)o(y)f(linking)112 421 y(together)j(m)o (ultiple)i(copies)g(of)e(the)h(c)o(hip)h(and)e Fh(n)h Fj(c)o(hips)h(will)g Fh(n)f Fj(times)g(faster)f(for)g(small)i(n)o(um)o(b)q(ers)112 477 y(of)c Fh(n)p Fj(.)20 b(When)c(there)f(are)g(h)o(undreads)g(or)g (thousands)g(of)g(c)o(hips,)g(the)g(cost)g(of)g(writing)g(and)g(reading)112 534 y(the)j(information)g(from)f(the)36 b(Coheren)o(t)18 b(Pro)q(cessor)f(b)q (ecomes)i(the)f(limiting)i(factor.)27 b(Coheren)o(t)112 590 y(Researc)o(h)18 b(rep)q(orts)f(that)g(the)h(new)g(c)o(hip)h(will)h(cost)d (ab)q(out)h($100)e(p)q(er)j(cop)o(y)e(in)i(small)f(quan)o(tities)112 647 y(and)d(substan)o(tially)h(less)g(in)g(large)f(ones.)112 790 y Fi(3)69 b(Exhaustiv)n(e)23 b(A)n(ttac)n(k)g(on)g(DES)112 891 y Fj(When)c(DES)h(w)o(as)e(in)o(tro)q(duced)j(in)f(1977,)f(some)g (computer)h(scien)o(tists)g(protested)f(that)g(56)g(bits)112 948 y(w)o(ere)d(not)g(su\016cien)o(t)i(b)q(ecause)g(it)f(w)o(ould)g(b)q(e)g (p)q(ossible)i(to)d(do)g(an)h(exhaustiv)o(e)g(searc)o(h)g(of)f(the)h(k)o(ey) 112 1004 y(space)h(in)i(a)e(short)g(amoun)o(t)f(of)h(time)h(using)g(a)f (massiv)o(ely)i(parallel)g(computer.)29 b(In)19 b(their)g(b)q(o)q(ok,)112 1061 y(Mey)o(er)c(and)h(Mat)o(y)o(as)e([MM82)n(])h(discoun)o(t)i(that)e(p)q (ossiblit)o(y)i(and)f(predict)h(that)e(it)h(w)o(ould)g(just)f(not)112 1117 y(b)q(e)21 b(ph)o(ysically)i(p)q(ossible)f(to)e(build)j(the)e(mac)o (hine)g(un)o(til)h(the)f(1990's)e(b)q(ecause)i(there)g(w)o(ere)g(to)q(o)112 1174 y(man)o(y)c(ph)o(ysical)j(limitations.)30 b(Heat)18 b(and)g(p)q(o)o(w)o (er)g(usage)g(are)g(t)o(w)o(o)f(ma)s(jor)f(barriers.)29 b(Di\016e)19 b(and)112 1230 y(Hellman)d(describ)q(e)h(the)e(design)i(in)f(detail)g(and)f (resp)q(ond)h(to)f(these)g(criticism)i(in)f([DH77)o(].)182 1287 y(Ho)o(w)h(easy)f(w)o(ould)i(it)f(b)q(e)h(to)e(build)j(one)e(to)q(da)o (y?)26 b(Standard)17 b(o\013-the-shelf)g(encryption)h(c)o(hips)112 1343 y(are)13 b(plen)o(tiful)j(and)e(relativ)o(ely)g(c)o(heap,)g(but)g(they)g (require)g(a)g(second)g(pro)q(cessor)g(feeding)g(them)g(the)112 1400 y(k)o(eys)h(and)h(the)f(test)g(cases.)21 b(An)o(y)o(one)15 b(who)h(w)o(an)o(ts)e(to)h(build)i(suc)o(h)f(a)f(mac)o(hine)i(m)o(ust)e (undertak)o(e)g(a)112 1456 y(pro)s(ject)h(of)h(building)j(suc)o(h)d(a)g (large)g(arra)o(y)f(of)h(distributed)i(computers.)26 b(This)18 b(w)o(ould)f(require)h(a)112 1512 y(large)f(amoun)o(t)f(of)h(custom)f(design) i(w)o(ork.)25 b(A)17 b(truly)g(dedicated)i(attac)o(k)o(er)c(could)k(ev)o(en)e (fabricate)112 1569 y(custom)c(DES)h(testing)g(c)o(hips)i(whic)o(h)e(ha)o(v)o (e)g(a)g(built)h(in)g(circuit)h(for)d(incremen)o(ting)j(the)e(k)o(ey)g(b)o(y) g(one)112 1625 y(bit)19 b(and)g(testing)g(the)g(result)h(against)f(another)f (register.)31 b(Only)21 b(go)o(v)o(ernmen)o(ts)c(could)j(a\013ord)e(a)112 1682 y(budget)g(this)h(large.)29 b(Moreo)o(v)o(er,)18 b(the)g(sligh)o(test)h (c)o(hange)f(in)h(the)g(algorithm)f(w)o(ould)h(render)g(this)112 1738 y(mac)o(hine)d(w)o(orthless.)182 1795 y(Garon)h(and)i(Outerbridge)g (calculated)g(the)f(appro)o(ximate)g(costs)f(of)h(designing)h(suc)o(h)g(a)e (ma-)112 1851 y(c)o(hine)d(and)f(found)g(that)g(it)g(w)o(ould)g(cost)f(ab)q (out)h($129,000)e(for)h(a)h(mac)o(hine)h(that)e(w)o(ould)h(break)g(DES)112 1908 y(within)k(1)e(y)o(ear)g(if)h(the)g(mac)o(hine)h(w)o(as)d(built)j(in)g (1990.)j([GO91)o(].)h(They)16 b(also)g(sa)o(y)f(that)g(a)g(mac)o(hine)112 1964 y(that)d(could)i(exhaustiv)o(ely)g(searc)o(h)f(all)h(the)g(bits)f(in)h (one)f(da)o(y)g(for)g($46)f(million)j(in)f(1990.)k(This)c(price)112 2021 y(w)o(ould)g(drop)f(to)g($18)g(million)j(in)f(1995.)j(They)c(assume)g (that)f(it)h(is)g(p)q(ossible)h(to)e(build)j(a)d(no)q(de)i(that)112 2077 y(encrypts)f(2)g(million)j(k)o(ey)d(tests)g(for)g($25)g(in)h(1990)e(in)i (order)g(to)e(complete)i(suc)o(h)g(a)f(mac)o(hine.)21 b(They)112 2133 y(do)d(not)f(describ)q(e)j(the)e(details)h(of)f(ho)o(w)f(to)g(design)i (the)f(b)q(oard)g(or)g(man)o(ufacture)g(it)g(is)g(su\016cien)o(t)112 2190 y(quan)o(ties.)182 2246 y(The)h(Con)o(ten)o(t)f(Addressable)i(Memory)e (arra)o(y)g(c)o(hips,)i(ho)o(w)o(ev)o(er,)f(are)g(designed)h(to)e(b)q(e)i (built)112 2303 y(in)o(to)14 b(large)h(parallel)h(arra)o(ys)e(of)g(c)o(hips.) 21 b(It)14 b(is)i(already)f(p)q(ossible)h(to)e(buy)h(a)g(b)q(oard)f(for)g(a)h (PC)f(whic)o(h)112 2359 y(has)h(64)g(c)o(hips)h(of)f(a)g(previous)i(mo)q(del) f(of)f(the)31 b(Coheren)o(t)15 b(Pro)q(cessor)g(.)21 b(Large)15 b(arra)o(ys)f(should)i(not)112 2416 y(b)q(e)f(hard)f(to)g(create.)19 b(Moreo)o(v)o(er,)13 b(the)i(algorithm)f(is)h(implemen)o(ted)h(in)f(soft)o(w) o(are,)e(so)h(the)g(mac)o(hine)112 2472 y(can)h(also)g(b)q(e)h(used)g(to)e (attac)o(k)g(man)o(y)h(other)g(subtle)h(and)f(not-so-subtle)h(v)m(ariations)g (of)e(DES.)182 2529 y(What)j(is)i(the)e(b)q(est)i(w)o(a)o(y)d(to)h(do)h(an)g (exhaustiv)o(e)g(searc)o(h)g(with)g(the)g(curren)o(t)f(arc)o(hitecture)h(of) 112 2585 y(the)13 b(Coheren)o(t)g(Pro)q(cessor?)20 b(The)14 b(v)o(ersion)g(describ)q(ed)h(for)e(simple)i(encryption)f(and)g(decryption)g (is)112 2642 y(able)f(to)e(w)o(ork)h(v)o(ery)f(quic)o(kly)j(b)q(ecause)f(it)g (can)f(enco)q(de)h(the)g(k)o(ey)f(in)h(the)f(stream)g(of)g(instructions)h (fed)112 2698 y(to)j(the)h(Coheren)o(t)g(Pro)q(cessor.)25 b(This)17 b(approac)o(h)g(m)o(ust)f(b)q(e)i(abandoned)g(b)q(ecause)g(an)e(exhaustiv)o (e)960 2828 y(7)p eop %%Page: 8 8 bop 112 195 a Fj(searc)o(h)15 b(of)f(the)i(k)o(ey)f(space)g(requires)h(that)f (eac)o(h)g(pro)q(cessing)h(no)q(de)g(m)o(ust)f(use)g(a)g(di\013eren)o(t)g(k)o (ey)l(.)182 252 y(One)g(alternativ)o(e)g(is)g(to)e(store)h(the)g(k)o(ey)h (bits)f(in)i(the)e(10)g(extra)g(tag)f(bits)i(stored)f(at)f(eac)o(h)i(no)q (de.)112 308 y(Tw)o(o)j(no)q(des)i(are)f(used)h(to)f(hold)h(the)g(t)o(w)o(o)e (32-bit)h(half-blo)q(c)o(ks)i(of)e(eac)o(h)h(case,)g(so)f(there)g(are)h(up) 112 364 y(to)c(20)h(extra)g(k)o(ey)g(bits)h(whic)o(h)g(can)g(b)q(e)g(stored)f (at)g(eac)o(h)g(no)q(de.)27 b(Let)18 b(there)f(b)q(e)h(2)1533 348 y Fg(n)1574 364 y Fj(pro)q(cessors)f(in)112 421 y(the)g(mac)o(hine.)27 b(That)17 b(means)g(there)g(are)g(2)870 404 y Fg(n)p Fa(\000)p Ff(1)956 421 y Fj(p)q(oten)o(tial)h(k)o(eys)f(that)g(can)g(b)q(e)h(tested)f (with)h(eac)o(h)112 477 y(round)f(b)q(ecause)i(t)o(w)o(o)d(no)q(des)i(are)g (used)g(for)f(eac)o(h)h(encryption.)28 b(Assume)17 b(that)g Fh(n)g Fc(\024)g Fj(21)g(and)h(the)112 534 y(problem)13 b(do)q(es)g(not)f(o)o (v)o(er\015o)o(w)g(the)h(ph)o(ysical)h(space)f(of)f(the)h(real)g(mac)o(hine.) 20 b(\(Later)12 b(v)o(ersions)h(of)f(the)112 590 y(arc)o(hitecture)j(could)h (ha)o(v)o(e)e(more)g(free)h(bits)g(a)o(v)m(ailable.\))21 b(A)o(t)15 b(eac)o(h)f(pair)i(of)e(no)q(des,)h(store)f(a)g(unique)112 647 y(set)j(of)h Fh(n)12 b Fc(\000)g Fj(1)17 b(k)o(ey)h(bits.)28 b(These)18 b(bits)g(will)i(b)q(e)e(used)h(b)o(y)e(this)h(pair)h(of)e(no)q (des)h(alone.)28 b(The)18 b(other)112 703 y(56)7 b Fc(\000)g Fj(\()p Fh(n)g Fc(\000)g Fj(1\))13 b(bits)h(are)f(shared)h(b)o(y)f(all)i(the) f(instances)g(and)g(they)g(are)f(enco)q(ded)i(in)f(the)g(instruction)112 760 y(stream)g(as)h(b)q(efore.)182 816 y(A)o(t)20 b(the)g(b)q(eginning)j(of)d (eac)o(h)g(round)h(of)f(encryption,)i(the)e(lo)q(cal)i(k)o(ey)e(bits)h(m)o (ust)e(b)q(e)i(X)o(OR-)112 873 y(ed)c(in)o(to)g(the)g(appropriate)g(half-blo) q(c)o(k)i(of)d(bits)i(b)q(efore)f(that)f(half-blo)q(c)o(k)j(is)e(passed)g (through)g(the)112 929 y(s-b)q(o)o(xes.)j(These)15 b(four)g(or)g(\014v)o(e)g (instructions)h(will)h(X)o(OR)f(in)g(the)f(k)o(ey)g(bit)h Fh(K)1427 936 y Fg(i)1456 929 y Fj(in)g(to)e(p)q(osition)j Fh(B)1772 936 y Fg(j)1790 929 y Fj(:)721 1079 y Fh(M)5 b(AT)h(C)s(H)t(K)954 1086 y Fg(i)980 1079 y Fc(!)13 b Fh(R)1073 1086 y Ff(1)721 1148 y Fh(S)s(H)t(I)t(F)6 b(T)721 1217 y(M)f(AT)h(C)s(H)t(B)949 1224 y Fg(j)980 1217 y Fc(!)13 b Fh(R)1073 1224 y Ff(2)721 1286 y Fh(C)s(ALC)s(R)893 1293 y Ff(1)912 1286 y Fh(X)t(O)q(RR)1060 1293 y Ff(2)1091 1286 y Fc(!)g Fh(R)1184 1293 y Ff(2)721 1355 y Fh(W)6 b(RI)t(T)g(E)s(C)s(O)q(LU)f(M)g(N)g(R)1164 1362 y Ff(2)1194 1355 y Fc(!)13 b Fh(B)1286 1362 y Fg(j)1773 1424 y Fj(\(4\))112 1518 y(The)19 b(SHIFT)g(instruction)g(is)g(only)h(necessary)f (if)g(the)g(k)o(ey)f(bit)h(is)h(on)e(the)h(opp)q(osite)g(no)q(de)h(from)112 1574 y(the)g(destination)i(bit.)36 b(This)21 b(pro)q(cess)f(is)h(rep)q(eated) g(at)f(the)h(end)g(of)f(the)g(s-b)q(o)o(x)h(calculation)h(to)112 1631 y(remo)o(v)o(e)15 b(the)i(bit)g(from)e(the)i(data.)22 b(Only)c(48)e(of)g(the)g(56)g(k)o(ey)g(bits)h(are)f(used)h(at)f(eac)o(h)g (round,)h(but)112 1687 y(it)f(is)g(p)q(ossible)h(that)e(up)i(to)e Fh(n)10 b Fc(\000)h Fj(1)16 b(of)f(these)h(bits)g(will)h(come)f(from)f(the)h (bits)g(stored)f(lo)q(cally)l(.)24 b(The)112 1744 y(op)q(erations)16 b(in)h(equation)f(4)g(tak)o(e)f(16)h(cycles.)23 b(They)17 b(m)o(ust)e(b)q(e)i (rep)q(eated)g(2)p Fh(n)10 b Fc(\000)h Fj(2)16 b(times)g(for)g(eac)o(h)112 1800 y(round.)k(The)c(result)f(tak)o(es)g(512)p Fh(n)10 b Fc(\000)g Fj(512)15 b(extra)f(cycles)j(for)d(eac)o(h)i(encryption.)21 b(If)16 b(a)f(mac)o(hine)h(w)o(as)112 1857 y(built)g(with)g(a)e(full)j (complemen)o(t)f(of)e(2)769 1840 y Ff(21)821 1857 y Fj(pro)q(cessors,)h(then) g(it)h(w)o(ould)f(tak)o(e)g(57,126)e(cycles)j(to)f(test)112 1913 y(2)135 1897 y Ff(20)186 1913 y Fj(p)q(oten)o(tial)g(k)o(eys.)k(This)c (step)f(m)o(ust)g(b)q(e)h(rep)q(eated)g(2)1073 1897 y Ff(36)1124 1913 y Fj(times)g(and)f(the)g(mac)o(hine)h(is)g(capable)g(of)112 1970 y(doing)g(ab)q(out)h(875)e(of)h(these)g(tests)g(p)q(er)h(second)f(or)g (ab)q(out)g(76)g(million)j(p)q(er)d(da)o(y)l(.)20 b(Exhausting)c(the)112 2026 y(en)o(tire)f(space)h(w)o(ould)g(require)g(904)e(da)o(ys.)20 b(If)15 b(the)g(w)o(ell-kno)o(wn)i(tric)o(k)e(of)g(exploiting)i(symmetry)d (in)112 2083 y(the)i(k)o(eys)h(is)g(used)g(to)f(reduce)i(the)e(k)o(ey)h (space)g(to)f(2)1014 2066 y Ff(55)1068 2083 y Fj(k)o(eys,)g(then)h(one)g(mac) o(hine)g(will)i(test)d(all)h(in)112 2139 y(452)d(da)o(ys.)182 2195 y(Ho)o(w)g(m)o(uc)o(h)g(w)o(ould)h(suc)o(h)f(a)g(mac)o(hine)h(cost?)20 b(There)14 b(are)g(2)1200 2179 y Ff(10)1252 2195 y Fj(pro)q(cessors)g(on)g(a) g(c)o(hip)h(that)e(will)112 2252 y(cost)h(b)q(et)o(w)o(een)h($30)f(and)h ($100.)j(2)697 2235 y Ff(11)749 2252 y Fj(c)o(hips)e(are)e(necessary)h(and)g (this)g(w)o(ould)g(cost)f(b)q(et)o(w)o(een)h(ab)q(out)112 2308 y($60,000)f(and)i($200,000.)21 b(Con)o(trol)16 b(hardw)o(are)f(w)o(ould)i (add)f(additional)i($10,000)c(to)i($20,000.)21 b(45)112 2365 y(mac)o(hines)c(w)o(ould)h(cost)e(ab)q(out)h($3)f(million)k(dollars)d(and)h (exhaustiv)o(ely)g(searc)o(h)e(the)i(space)f(in)h(10)112 2421 y(da)o(ys.)i($30)15 b(million)j(w)o(ould)e(buy)g(a)f(mac)o(hine)i(that)e(w)o (ould)h(searc)o(h)f(the)h(space)g(in)g(1)g(da)o(y)f(with)h(450)112 2478 y(mac)o(hines.)24 b(I'm)17 b(assuming)g(that)e(v)o(olume)i(discoun)o(ts) g(w)o(ould)g(apply)h(at)e(this)h(scale)g(and)g($30)e(is)i(a)112 2534 y(price)f(that)e(should)j(apply)f(at)e(the)h(end)h(of)f(1992)f(when)i (the)f(c)o(hips)h(b)q(ecome)g(widely)h(a)o(v)m(ailable.)182 2591 y(Although)j(this)g(design)h(is)f(still)h(h)o(yp)q(othetical,)g(it)f(is) g(m)o(uc)o(h)g(more)f(real)h(than)g(some)f(of)g(the)112 2647 y(other)h(designs)i(a)o(v)m(ailable)g(b)q(ecause)g(the)f(c)o(hip)g (fabrication)h(and)f(design)g(is)h(already)f(complete.)112 2704 y(The)c(pro)q(cess)h(of)e(building)k(a)d(mac)o(hine)h(out)f(of)g(c)o (hips)h(is)g(not)f(m)o(uc)o(h)g(di\013eren)o(t)g(from)g(connecting)960 2828 y(8)p eop %%Page: 9 9 bop 112 195 a Fj(a)21 b(large)g(bank)h(of)f(memory)g(up)h(to)f(a)g(single)h (pro)q(cessor.)39 b(This)22 b(pap)q(er)g(do)q(es)g(not)f(pretend)h(to)112 252 y(addresss)13 b(an)o(y)f(of)h(the)g(imp)q(ortan)o(t)f(questions)i(ab)q (out)f(heat)f(and)i(p)q(o)o(w)o(er)e(dissipation.)21 b(These)13 b(could)112 308 y(also)j(a\013ect)f(the)h(design)h(and)f(it)h(is)f(p)q (ossible)i(that)d(m)o(y)h(estimate)g(of)f($10,000)f(to)i($20,000)e(for)h(the) 112 364 y(supp)q(ort)g(hardw)o(are)f(is)i(to)q(o)f(lo)o(w.)182 421 y(The)j(standard)f(assumptions)h(ab)q(out)f(time)h(and)f(transistor)g (densit)o(y)h(should)g(apply)h(to)e(this)112 477 y(mo)q(del)d(as)g(w)o(ell.) 20 b(It)14 b(is)g(en)o(tirely)h(conceiv)m(able)h(that)e(w)o(e)f(will)j(see)e (larger)f(impro)o(v)o(emen)o(ts)h(in)g(densit)o(y)112 534 y(and)h(price)h(of) f(these)g(mac)o(hines)h(in)g(the)g(near)f(future)g(b)q(ecause)h(they)g(are)e (y)o(ounger)h(designs.)182 590 y(The)j(UNIX)g(passw)o(ord)f(system)g(uses)h (a)f(v)o(ersion)g(of)g(DES)h(that)f(w)o(as)f(presumably)j(mo)q(di\014ed)112 647 y(to)f(mak)o(e)h(it)h(imp)q(ossible)i(to)c(gang)h(together)g(a)g(n)o(um)o (b)q(er)h(of)f(o\013-the-shelf)g(DES)h(c)o(hips)g(and)g(use)112 703 y(the)15 b(system)f(to)g(break)h(UNIX)h(passw)o(ords.)j(This)c(large)g (mac)o(hine,)h(ho)o(w)o(ev)o(er,)d(is)j(not)e(constrained)112 760 y(b)o(y)h(this)h(mo)q(di\014cation)h(or)d(an)o(y)i(other)f(mo)q (di\014cation)h(that)f(re-arranges)g(the)g(pattern)g(of)g(s-b)q(o)o(xes,)112 816 y(p)q(erm)o(utations)f(and)g(mixing.)20 b(The)15 b(salting)f(pro)q(cess)h (used)f(in)h(the)f(UNIX)h(passw)o(ord)e(op)q(eration)h(is)112 873 y(easy)i(to)g(express)h(with)f(extra)g(bit)h(sw)o(apping)g(op)q (erations.)24 b(The)17 b(only)g(problem)g(with)g(attac)o(king)112 929 y(systems)f(lik)o(e)i(Merkle's)f(Kh)o(ufu)g(is)h(expressing)f(the)g(s-b)q (o)o(xes)g(as)g(min)o(terms.)25 b(Inciden)o(tally)l(,)19 b(logic)112 985 y(minimization)e(is)f(also)f(easily)h(handled)h(b)o(y)e(the)30 b(Coheren)o(t)15 b(Pro)q(cessor)g(.)182 1042 y(The)20 b(a)o(v)m(ailabilit)o (y)i(of)e(these)g(systems)f(puts)h(ev)o(en)h(more)e(pressure)h(on)g(the)g (Unix)h(passw)o(ord)112 1098 y(system.)d(In)12 b(1989,)f(F)l(eldmeier)j(and)e (Karn)g([FK89)o(])f(estimated)h(that)f(the)h(UNIX)h(passw)o(ord)d(system)112 1155 y(w)o(as)g(insecure)j(for)e(short)g(alphan)o(umeric)i(passw)o(ords)d(b)q (ecause)j(a)e(DEC)g(3100)f(could)i(pro)q(cess)g(ab)q(out)112 1211 y(1000)g(passw)o(ords)h(p)q(er)i(seconds.)20 b(Giv)o(en)14 b(that)f(eac)o(h)h(passw)o(ord)f(needs)i(25)e(passes)h(of)f(DES,)h(then)g(it) 112 1268 y(is)i(p)q(ossible)i(to)e(estimate)g(that)f(a)32 b(Coheren)o(t)16 b(Pro)q(cessor)g(based)g(pro)q(cessor)g(will)i(b)q(e)f(able)g(to)f(test)112 1324 y(ab)q(out)g(20,000)e(passw)o(ords)i(p)q(er)g(second)h(p)q(er)g(c)o (hip.)24 b(If)16 b(a)g(basic)34 b(Coheren)o(t)15 b(Pro)q(cessor)h(pro)q (cessor)112 1381 y(comes)f(with)g(b)q(et)o(w)o(een)h(8)f(to)f(64)h(c)o(hips,) h(then)f(it)h(is)g(easily)g(p)q(ossible)h(to)d(imagine)j(computers)e(with)112 1437 y(the)e(abilit)o(y)i(to)e(test)g(b)q(et)o(w)