# 8]F-Hh  4 vIh%<= |)A 35150832P#`aqYIOf ~ \>?@AB)lt:;\OPҖQ|R(h @ ^Iy tt $Xܔ48ee$k JMJH8/|d4,ܓp8ۓtZPɓPf@%,   t$ hXr~ l~wė00~`tt 3[ ~ 4\]^! iRlR|QiRxQQJdRKQLdRYRZiRyRR[R\]RRRR^(R!@R XRR\QR,RRQ@QQlRhR\TW\t""VALUE ERROR Version ^nnunuCCtextrforitxtLnb`cbrtelllnsCCreset0 A L  )  Pe 04 $  / : 4D %  0:  D   0   t$, 0 0H 5\ Q t Q:, |H,   , , t,^|$  |.$   | | (  / (D .  , D," |D(  , (  (  $L rb cut x$, t Qt,8 ( \ M (Version,  R  O0J Q,( D e( me  O RO he  the l t  $ey t  , l$(rb penclose x($w h O"`, 9$l,    /.M,0W9  m m r0J/D0F M0^,  L(/, rlah,,  L ^/, ,0p [[:alpha:]][[:alnum:]_]*0E DLL A9GOilregfreeregexregfreeDLL regex.regfree(*C1) ^T@R0c This fn is io independent.0c 0 d pattern may be overlapping. 0 to find whereP4 patternpattern,Ntcnul A2Keif4 z41   :If code D18 e'DLL regex.regfree(*C1)' na 'regfree' A2KDomiF-(8 \!<'&x% ( L& "  Dx%!@!h(!0L$(t&&$(0&%!@%(@)'\% !%" #$ $$%'&''$d)4  allow to show 1st subexpressionk4@b execute the expression until nothing foundz0@  err:z256' ' $P/ error e A2K $< coderegexec C ((ptrstring),N) 2 z 0l<  :leave d :EndWhile io0  4  zregfree, C T e'DLL I4regex.regexec(*C1,*C1,I4,*I4,I4)' na 'regexec' A2KT, coderegcomp C pattern 5,D:while 1P e'DLL I4regex.regerror(I4,*C1,*C1,I4)' na 'regerror' A2KP  codeerrX of each match. If a subexpression is specified it is shown instead.X,t erz the error message,X\ the pattern is found. It returns a boolean list indicating the startX48 ptrptr+1+z[0] allow overlap4T rregerror code C z 255 we expect no more than a 255 chars msg TL e'DLL I4regex.regcomp(*C1,*C1,I4)' na 'regcomp' A2K"L  N''pt$ ptr0X :endif   e'('=pattern plrpattern OSSPATMATCH string;io;all;code;e;ptr;regcomp;regerror;regexec;regfree;sxi;z;C;N;NULLp$T  r[ptr+z[sxi]]1$ H..'Regular Expression utilities. See "example".'gHe   *(f  )$lf ===========$$f *** END ***$ !( OPQ|R  !"%%%&'Lrlookfor showall string;io;max;b;CR;d;hits;show;i;cut;siL$ stringstring,CR$ Р show[i]'^' $0 (default 0=all)r$XE- +D*-4/+-2l+|-.0P/h.6.| - h0 @P / /.-.`$11 .00$D0+1l<.T1/\10/, $01tM, d'rb penclose x' A2K, io0 M88 lookfor pattern and outline all found8 outline47, rb cut string,[.1]show,d :endif  b11d 470<9 define subexpression index0 r0 0'' s(p define the fnr^( T (0hits)0l T lookfor is a pattern optionnaly followed by a subexpression indexT  r( 0 1)d/r $@ lookforlookfor 0 $  max rf $ show(string)/' '$   r/maxri $T ii DYW A2K$$ leave if no hits$$ merge all lines$$t:if 82=dr lookfor $<H ihits[;0]+hits[;1] indices of hitsCR<M0@ ifx(2,b)(b'rb cut x'),bd0$P d'^'b cut show$  9  (9MD@ &  P:H4ttLР44** we can show all the matches in CR delimited text.L$   E $  pos(new)0 1 D '\ G3,~t, .˕LD, t m  ,D8 /t, ,\ , t D$  $$/  m 89 $( new[pos/pos] rep 1(4 (lookfor si)lookfor DYW A2K2Kx4  t  $d to live in.$$   6/:$, U   rn,`"(' a? @>, (8 new(row1 pat rxmatches str)rxcut str'8(  D**** we can replace a pattern with a string:e D, / f(    c,To t $G / a Z u l lo k D<yf l 9(wo k49 >B,d(Dct**blah b;ah. b;ah blah? Blah blah! blah! Ah!y D1 =$   5/:ch$ 8(assertion failed(TH99in it, the result contains at least 2 rows in each plane.=xT, ;   ,$d  @=,$1 |T  LmrMT0 token rxmatches s10 A4 ! TF, C, B<,48 Replace patterns by constant in str8 $  |,ѕ$ xtoken:  ,  p=X8@@The other planes were from simplestrings and are padded with 0s.X pp i< @ \meAAage = 42 name= 'somkinda'' djo' email =jo@blahblaha.bla alias=xthe\X@@NOTE: because the quotedstring was found and has a subexpressionX\izBB(A quoted string is a quote followed by a series of (double quotesit\(sh r? C>,b(s1: 0x r Y, ,@,eng0,` rnew merge all cells,$  t, 9$(  M ,/  (s1:  t(quotedstring: ($8 '(''|[^'])*'$$RE L? T $$CO E P,o c$ \[^ ']+ns @(( name='??', surname='abcd', age=18, etc.@D -t I y  , M/ וTוD4 !\ \, ,  4   9. f (simplestring: Ma( s a        \9T;;(a token, here, is either a simplestring or a quotedstring) TT B D I, ^,t ^,  ,3+ ,  8T@<(( Show all 3 letter words in this text:@(la lC Mi(   y ( t  (0 J  M / 0(   y , (<e1: ,? , ID, , D 't D I,t, }{D0b  E, \, I0 , C   ,T;; pat1 rxmatches 'first one, then another, then the last.'T xD$CO P  4/:AR$< ##** This function finds ALL matches:4< gd D" 'Ȗ 9,\E, ? F,D, xF 9 XF,,( dT ,d E   ,(Du** pat1 rxmatch 'first one, then another.'D$6   2/:$ Word: $ [[:alpha:]]+$ (pat1: ^ , ږ   ,|$   1/:$@(( lowercase letter after a dot, ? or !:@ , S   ,$" Ö $> tP$O   3/:$` N 8r patrep rxrplc str;pat;rep;pos;new 8, $W   , $   ./:$$2   //:$, L   ,~ pN, L   ,NameDef$   0/:$ ID++after "a" must also be found after "c" (\1)D K  4 and show they too can make4, Q   1P,$   -/:$,L PO    ,$ST   ,/: $ Z$   */:$,** first match wins,,E IL   '=,N M M  <$$ 'a(b[aeiou])c' rxmatch 'x abec x'<$/v   +/:Od$,t \S   ^/, $   (/:$Pd88 'a(b[aeiou])c\1' showfirst 'not abecbi but abecbe...'P," xR   , t e X$   )/:do$  [ T<< the location of the whole pattern and each subexpression:T,3 xd   la, X8>>** patterns may be repeated. Here whatever subexpression foundacX\MDD** the number of times a character must be repeated can be specified\,E rP   PP,@&& 'a(b[aeiou])c' showfirst 'x abec x'!@p  [$df %  '/: $,F TO   AD,TUP99 'ab[a-z]c' showfirst 'not with ab3c but OK with abzc!' lT$%\   &/:<$T;;** Here's an example of pattern to recognise an Identifier: T4** here are more patterns:4`@HH 'ab[[:space:][:alpha:]]c' showfirst 'alpha or spaces matches ab c!!!'`,on Q    ,T:D99 'ab[0-9a-z]c' showfirst 'same with ab3c now and abzc!'%ST@&& 'ab*c' showfirst 'abbbbbbc abbcabc'@  d\L $om   %/:$` HH 'ab[^[:digit:]]c' showfirst 'doesnt matches ab4c but matches ab$c!!!'`,me S   ,T/<< 'ab[aeiou[:digit:]]c' showfirst 'with ab3c now and abzc!'T f  $)   $/:$8 NameDef showfirst '3+dsa7'88@ '((a*)a)a'rxmatch 'zzaaaa' 8 $   #/:$`EE** here are the patterns for a word and word followed by punctuation:`,bU T   ,T<< 'ab[aeioyu]c' showfirst 'not with abxc but OK with aboc!'T, hV   ,  p]@  UDp **** sets may be specified within [brackets]D<!! (quotedstring 'XXX') rxrplc s1<$   "/:$ Twi:: 'ab\.c' showfirst 'wont work on ab#c but works on ab.c'T  e(  M ,/ ($   !/:$P returns \0 x e, \, I00   O0HY, xR0,** 2 separate sets:,,X** a set of 2 sets:,,va u4\   ,04 'ab.c' showfirst e1 0@''** sets may also be specified as ranges@$ \ $ # D,, e1'. matches any char, ab#c shows this:'D d() aPf8T ^(HL00** \ escapes following character; "\." means "."H P ]0F======================0TD>( `X8T ^(DLL B9HQvregerrorregexregerrorDLL I4regex.regerror(I4,*C1,*C1,I4)( X 9`_8T ^(DLL A9GOp jregcompregexregcompDLL I4regex.regcomp(*C1,*C1,I4)<$$DLL I4regex.regerror(I4,*C1,*C1,I4)<d^DLL A9GOwkregexecregexregexecDLL I4regex.regexec(*C1,*C1,I4,*I4,I4)i(, `hɖ8T ^( 4"regexec x"regcompr "regerror #regfree t ^ t8 rp eregexec xxx 'abnc abbc abc' 5 buf 08s r io0Linte'DLL regex.regfree(*C1)' na 'regfree'LLl ;e'DLL I4regex.regerror(I4,*C1,*C1,I4)' na 'regerror'LL e'DLL I4regex.regcomp(*C1,*C1,I4)' na 'regcomp' aLLHe'DLL I4regex.regexec(*C1,*C1,I4,*I4,I4)' na 'regexec'[1L@ These are the 4 definitions as per the DLL's@$`,defineRX;z;e;io0$$, example of use97)$[VE-dc0aLegfeDږ$cb`b<^@b^ aH] ږ c a hXږTgatdKK 'ab[[:space:]][[:alpha:]]c' showfirst 'alpha or spaces matches ab zc!!!' d0** Series of examples: 10$ pat,1 0/patrep R$ra e <.< A2K definition - clear definitions first <P returns the whole match and the subexpression (word):s\8 Compile the pattern 'a', any b's, 'c'8T$ WeTWt,XDX0D,D T<@("(('l*\p(P<@.)&dpx7A,+@9l2=@BF$JK8M`QtCLST|:URTLXI%,@hf m\j4hekpildX xHXd-|$lna;86]5(@w 1l@X ~X#(|p@!0`vL`rtqtpos0}(p <{DPG/|,cTHHh|$ y`,\X^Tp<bPx<(d3p\ 4H|tgHpEd$8H4\H|u \ Hp0dLdN([, \$4&tXlL# d|$L `8;OV7?D@( <2PE84$hT_|Z0z ,G MTW|W>T@(Zt8D,tF6x-N,:e@)1>*,RT\<D=Yd,J,0hY X}P` /l+|HscPxLL"`t9HB0_X.xqLv`$8y]ߖߖߖ'|bLߖa!dV4tߖxߖߖPߖ<ߖ`ޖLޖ8ޖA$ޖhݖ?ޖݖ ݖIޖ`tޖpޖޖUܖ~ܖܖܖpܖgܖޖ3@ܖrޖdߖ\ݖߖ4ݖ ݖݖmXܖݖߖ(ߖݖݖݖHpݖHݖޖ,ܖۖoܖۖܖۖۖۖ|ۖdۖC,ۖ|ۖHۖږږۖږږږٖٖٖٖٖ,ٖٖ`ٖٖؖؖDٖؖؖ|ٖ`ؖHؖ0ؖxؖ8іҖӖӖ і і\"іKp Җ$_іd^_4TҖ\غ4ĹՖ!"pӖ#Ԗ֖$hҖt%ҖԖ&|ҖҖ<Ӗ()T\*(Ӗ ז+$Ԗ,֖<ʖ-ՖҖ.@זȫ/ז0е2ܯ轖3Ȗ4,ƖіxF pDǖdcD$(Ŗ%Ė tǖ? Tז ֖P8؟ؖ<lL̖4;hĖ+ԧ@8x^䓖?Ixk8\ '' '** WE CAN SHOW ALL THE MATCHES IN CR DELIMITED TEXT.' TEXT'NOW IS THE TIME FOR ALL GOOD MEN TO',CR,'LEARN MORE ABOUT APL' TEXTTEXT,' AND SHOW THEY TOO CAN MAKE',CR,'THE WORLD A BETTER PLACE' TEXTTEXT,' TO LIVE IN.' ' SHOW ALL 3 LETTER WORDS IN THIS TEXT:'  '"',TEXT,'"' R' ('' ([^ ]{3}) ''1) SHOWALL TEXT' ASSERT V99R '===========' '*** END ***' T$<t' Show all 3 letter words in this text:' <D*r' ''a(b[aeiou])c'' showfirst ''x abec x'''DL4rpattern rxmatches string;C;z;e;MaxSub;ptr;io;all;code;NL) C32' ' ( r(0,MaxSub,2)io0 ( new L err:z256' 'r $ z(2MaxSub)1y.$\a codeerrH it returns the location of the first match as a pairH@H7rpattern rxmatch string;C;z;e;MaxSub;io;code@` :leave @ execute the expression until nothing found@2n0h patternpattern,NULL A2K085 1st element is offset, 2nd length.8I 04# coderegexec C string MaxSub z 04xB N''J@@. This fn is io independent. For each match:@0. r[(~x)/r]E ensure emptyFn00 patternpattern,NNULL A2K0<| lookfor pattern and outline first finddFn<D of each cut. Those are always in even positionsDP<'(a token, here, is either a simplestring or a quotedstring)'P8% Ef le807r ol rxcut str;x;io;p;cut;E0$f cut(xstr)0 $ @[ E '' A2KJ $ error e A2K$4rxcutp :EndWhileHe allptr0D It also returns subexpressions locations, is any.D- :while 1xE-.0$[ (0xp1p,1)0$e1u''e n M^I!   simplestringe $x rstring (r/' ^')$2 0UUE-잖4ԏddx  lC x(C B \B (B DB @ppB@ؒHHB@?\@ЖਖlA(@,д>l>\@Ėt>, !ȡ"t$showfirstDL It also returns subexpressions locations, is any.D,pr lookfor showfirst string,H Final result is an nfns2 with 1 0 as pad element.H(rxmatches@\6 coderegexec C ((ptrstring),N) MaxSub z 0@D Regular expression: find ALL patterns in stringDLUE-dLt[`XtL,@( Final result is an n2e,h-s1,4 Define all RX functions,Lܖ'** ? means 0 or 1, + means 1 or more, * means 0 or more'L4''ltdr' ''ab[[:space:]][[:alpha:]]c'' showfirst ''alpha or spaces matches ab zc!!!'''l@UE-͖짖d0–0e0Lі ̖,] ] ] ͖\ <Ė\W̖WDVtWd(V ͖LV–pUDU<@T ͖$TUxTDS4͖tS(ÖXSRhTRH͖8R R!,\Q"PP#xʖO$O%\͖TN&PO'P$O(xL)p͖M*ЖM+(N,XxM-͖L.ʖ\M/0M08`K1`ȖK2軖DK3̤K4@ŖtL5PL6خK7䵖 K8̌J9ȽJ:`ǖɖXI?ȖH@HAǖ_lÖ=` (<a˖;bȪ\;c@;d;eŖ<fז:gĬ|:hP:iЖ9jDx9kԖ8l8m8n8o8p 9qT8r˖,7s$7t9uҖ7vɖP7w@$4xpԖ4yl3zǖ3{83|lՖ2}d2}2~2L˖ 2ع)@Ȗ)t@85 1st element is offset, 2nd length.8   :If code mat 0 r,1 2lookfor rxmatch stringn0 #+ M^Iy    !$$&&'()*  dMaxSubP Find the number of sub expressions (estimate with # of '('s)ZP0 compile the expression into C0,  coderegcomp C pattern 5,4 ptrptr+1+z[1] allow overlaprn40|the world a better place00 compile the expression into C0T rregerror code C z 255 we expect no more than a 255 chars msgT0. This fn is io independent.C00si, erz the error message,$0` z(2MaxSub)1 .$0p< Results may be overlapping.C07n( rall r( cut[p0,(,+\ol)~x]1(( rcut penclose str (, erz the error message, codeerr(. stringstring,NULL ((6ol<, Ofid*<max\< r' ''ab[aeiou[:digit:]]c'' showfirst ''with ab3c now and abzc!''' \ Lassert V57r& ,C'======================',Tl'NOTE: because the quotedstring was found and has a subexpression'T'' 0condition0 PlK' the location of the whole pattern and each subexpression:'P̈''8%'** This function finds ALL matches:''8patrep0Tbr' token rxmatches s1'n0HDP'e1: ',e1'blah b;ah. b;ah blah? Blah blah! blah! Ah!'HXBtexttext,' and show they too can make',CR,'the world a better place'nX($?'** a set of 2 sets:'(\r' ''ab[aeioyu]c'' showfirst ''not with abxc but OK with aboc!''' \4 r-\(e[;io]1)e(MaxSub,2)z4 $ '"',text,'"' < "" '[\.\?!] *([a-z])' rxmatches e1s:< assert V66r'as $error msg A2K $,Ȏ MaxSub1++/'('=pattern ,\lookforXn$''@@r' ('' ([^ ]{3}) '' 1) showall text'@Dr' ''ab*c'' showfirst ''abbbbbbc abbcabc'''D  :If 0's1: ',s1 C32' ' 0UE-\8l˖d̖< ėĒ\Ж P[ ଖZ ԍZ ,̖X `Z Y  `Y`Y̖,YÖWԦXՖV(W̖0Ȣt0  P,Q'** Here''s an example of pattern to recognise an Identifier:'PHr'** we can show all the matches in CR delimited text.' HDxsr' ''a(b[aeiou])c'' rxmatch ''x abec x''' D  "(: =assert V69r @V75T8UE-@ՖǖWȖx1D2tT ?assert V21rJ assert V15rJ @@r' ''[\.\?!] *([a-z])'' rxmatches e1'@0Y Get the 1st row of each table0 _assert V12rbJ T b1string=CR d cF#wont work on ab#c but works on ab.c ^^^^dtV18d cH$. matches any char, ab#c shows this: ^^^ dTl'The other planes were from simplestrings and are padded with 0s.'T'defineRXrxmatchh%r' ''ab[^[:digit:]]c'' showfirst ''doesnt matches ab4c but matches ab$c!!!'''hP Return a list of the pieces of str given Offset and LengthA2KP- lUE-|t–Hі6ז5x5h6БD6  쒖6  tf XAr' pat1 rxmatches ''first one, then another, then the last.'''X\{>alpha or spaces matches ab c!!! ^^^^ \ 5 zregfree , C ''< example and test for regular expressionsn< $assert V78r ,* coderegcomp C pattern 5,,: and cut!( rx\r add elementse (@V72 assert V45rbJ V69 assert V42r 3 assert V39rbJ 8assert V36rbJ assert V33rbJ Сassert V30rbJ `assert V27rbJ @' NameDef''[[:alpha:]][[:alnum:]_]*'''@$jV15Xr' ''ab[0-9a-z]c'' showfirst ''same with ab3c now and abzc!'''X<<$$ name=XXX, surname=XXX, age=18, etc.<<'** sets may also be specified as ranges' <Lrow1l KN'doesnt matches ab4c but matches ab$c!!! ^^^^ ^l,P,Xاr' ''ab\.c'' showfirst ''wont work on ab#c but works on ab.c'''X@'** sets may be specified within [brackets]'@example,ܴx abec x ^^^^ ,<< signal an exception if condition is false<V21 '===========' </ If the pos is duplicated we insert a null<regfreeLР44 '(wee|week)(knights|nights)' rxmatch 'weeknights'LuV27,,d cH$. matches any char, ab#c shows this: ^^^^ d lZassert V18r<@ ئV12|fallPV24 returns''XX<'** the number of times a character must be repeated can be specified' XX <abbbbbbbc(7bs) abbbbbc (5) abc ^^^^^^^ XLx=.with ab3c now and abzc! ^^^^ L@=r' NameDef showfirst ''3+dsa_7-31'''! @8l** find all the values in 's1'8 pV45 Passert V48r@U@ @@  !@0'Word: ',rWord'[[:alpha:]]+'08@ DLL I4regex.regcomp(*C1,*C1,I4)8'' X '** returns the whole match and the subexpression (word):''X rind[;io;]bJ 4Aexample;e1;pat1;r;s1;t;text;token4h$sr' ''ab[[:space:][:alpha:]]c'' showfirst ''alpha or spaces matches ab c!!!'''hP'** find all lowercase letters starting a sentence, that is, a'P8 cut each line and keep those to show88 hits(lookfor rxmatches string)[;si;]8DxnhitsOSSPATMATCHstring@'after "a" must also be found after "c" (\1)'@Xr' ''ab?.c'' showfirst e1 "a", 0 or 1 "b", any char then "c"'XassertT)tokenregexecregcompcodeH)r' pat1 rxmatch ''first one, then another.'''iHC defineRX('** first match wins' (p  Gm  pD'** \ escapes following character; "\." means "."'DDP'** predefined sets like [:digits:] can be used' DDLLI'quotedstring: ',quotedstring'''(''''|[^''])*''' Drrow1 ind` codef@%% NameDef'[[:alpha:]][[:alnum:]_]*'@4''4Hr' ''ab.c'' showfirst e1 '40'** here are more patterns:',CR08*''text''| :EndIfJshowall pat1<8r' ''((a*)a)a''rxmatch ''zzaaaa''' <T<< 'ab?.c' showfirst e1 "a", 0 or 1 "b", any char then "c"T\ps1'age = 42 name= ''somkinda'''' djo'' email =jo@blahblaha.bla alias=x'\/Now is the time for all good men to ^^^ ^^^ ^^^ learn more about APL and show they too can make ^^^ ^^^ @@ ;@HBcondition'' quotedstring X\ text'Now is the time for all good men to',CR,'learn more about APL'"'XT'** patterns may be repeated. Here whatever subexpression found'';T '*** END ***'= x '' ,Vassert V63rt:F $( )[[:punct:]]$@V78 0assert V51rrt (msg'assertion failed'(@L*r' (quotedstring ''XXX'') rxrplc s1'@,''@''DLL I4regex.regexec(*C1,*C1,I4,*I4,I4)@Tr' ''(wee|week)(knights|nights)'' rxmatch ''weeknights'''T 'assert V54r assert V60rt < abbbbbbc abbcabc^^^^^^^^ <XPr' ''ab[a-z]c'' showfirst ''not with ab3c but OK with abzc!'''X0 '** exclusion is made with ^:'+0 assert V75r+ ,learn more about APL, passert V99r L9 Regular expression FIRST match: find pattern in stringt]LH ' OR a char not a quote) followed by a final quote)',CRH,` execute the expression, / r0 2io0bJ HrxrplcH\- It returns the location of the first match as a pair H err: z255' '  5'' ,'** Series of examples:'ege,45''eH5'' \5'' p5'' 5'' 5''s''iD|' e1''. matches any char, ab#c shows this:'''DD >?@AB  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~e D<<r' NameDef showfirst ''3+dsa7''' <L Find the number of sub expressions (roughly: # of '('s)L ,$assert V72r+ ('** 2 separate sets:'(L :endifWordHuCRX< showfirst rxmatch rxmatches rxrplc showall lx OSSPATMATCH ClassesX,FregerrordNULL4 io0patternL5's1: ',s1' name=''??'', surname=''abcd'', age=18, etc.'t]Luerrnot with abxc but OK with aboc! ^^^^ \Lz'simplestring: ',t,' any char not a space or quote',CR.'LxindV57\{>not with ab3c but OK with abzc! ^^^^ \4H 4tV63@@UE-ÖDİL5t@ؚV66T@. Prepare cut; account for case where last cut include right charT4'** find all the values in ''s1'''4f=,caretptt)ncenterer wherefrKeysWherePGlcid0  Untypey KPasterm$lfmKeys_def_German $DCutKeysXDrawKeyX fmKeys_defKeys_Germano1CMDKBDCopy, ClearMouseDownW76< !! NameDef showfirst '3+dsa_7-31' <M, zregcomp xxx 'ab*c' 1,MTulock^FXXfb0&W77WNC0&l12 fopen9createix0fileinblist/Ns)Namspprfsz.infilefix b17rngnoam<7tIEinfileqML(xmemvspuacdc( member2KPtestparseljcompcdef@_nofopeniz\ovsinvsfvvmĆvmiovvipovspPvtc0ovvhovvf,pvvc@}mrrun|g0}sc_}xz ~a_P~ec_AFps_sys`FP~Y vvpdZЉvtfnvsc@pvtmȴl45qovem2nomsgendupW798FcR@W78Ul1408 showtrans`;l150PCodT8Ttesofa2kL'ml@<testforallHAV8rTptestfordywfdfmdrDexec`dr0descfd$xfrfromexecrepPier_rorVERSIONwsidH{trlevhmDnponotessw(memltl80x3l60l3<tno$qlbrxArGl700chk<4Ertl0qfnadrl100 asciistrsam`Jrange(argT=replaceefAt$txtreplposHlistL patl40Al9cm!create_debug,patnJfopen!objsJamTQxfrtoobt rnL!parseLsstranslate<nameofjtspRArgfilel1104aplswit 8xfrfromHl904mask0IparmsQcompsegPW ,DISPLAYTP'CMDDISPLAY DISPLAYS HWT0FSBROWSEEyBL̊P  MATIOTAOBJ IFERRIN@YGLOBALPWkMATIOTAeUCASEOBJERRMSGPKGTIEDXTTYPEUFILESVARCDISPLAY<NLDCDEBOBJGLOBALCTdOVEROBJDXGLOBALALX -DEBGLOBALIOYMATRIFYfXPNAMES\UCASEjGLOBALELXxxE1 MATRIFYOBJR hz-hFLUCMD, 4JRXFOPENlOVERP3 6xx5 10]UCMD2V7119`E,zApX@8IhCxkHUV12TWlZPJx14Y13T1617P1820о15pApCL1cRESULTVLeHC)PW6VCxeph1921X$HBHHTl22\LNXK QH$RCSHHL,VT<D|BVDBPUPARMSX87`xstmpW80 rtestXmPDEFLDOUT$nTIEUFTrhPFTNUMeGETOPT infilefrltestl01pickR4boutvcpPtest\wnstl40}l50tdiscutltestxvneptUa QZ&R\c$/PRdIkN>$/SRFT)DWR\lCdl1E KL~PI 2\ m vFv/PPAl2k rp e@ &  0S   h0t\D,t\D,h<PdescribextXchangesr_n_N_zPdefqsp xFrl74nl5 bufXfrObjsallrecthdl@writeobjtiecptlim,amrGXhandle,Hl20source97pl10toreadnOaoNStIeP5Lf7lImtrEf99s(SrHPuPmVdEfSr<98lUrRePdHiDopenfilel30PeNdxAlL`asnLread$xl|closed95(92<1<93@iTems91296Po94xPuP0readBuf90XfrIDpCfiLewiNwSD sScR489 75\8883p8785H8481 767977HW97W9878vAl74W87W93W95obJret W91482dW92880W90p86$W96obJ\W99xfre0W83lNmW86i9W84W85DW82F5XW81XW88infileDW89EXPM8xW94osresfn4dlmHb\tfXl05createell25sD Xmatcom(l60 xfrfileforiPselNaMsCRLFnd_F_7formePnames line0,id_bUfdFnX96X95X94X93X92X91 X90 X894X88Hp3cnvR_ Pncfix0'changea cl[HmFfiLe4xatdefinenpsinWsE nl2op DFxO_Dv_, l120,fns@id'To_|Pexl15vaLue8all2xlatesysIDBlcr 98X99`namesX versionxfr PinsX Plock PisIDdescribesr<XsDl160alline1q l130e X99 X98lX97Create@c_ b_(okPdefPPval(Pchkcopyrightx@PackPpdefcOdenrDM  f1] ' vTE sizap@6maF P equivalence d8SQj{9TEGRC5P MzuiQVBO=>LAU:HNOFKS[8f?Jwn'\1<45ID67