diff --git a/1995/cdua/README.md b/1995/cdua/README.md index e38231763..d575125a5 100644 --- a/1995/cdua/README.md +++ b/1995/cdua/README.md @@ -21,6 +21,9 @@ assistance! ./cdua +NOTE: on modern systems this might be hard to see it solve it in running time as +it goes so quickly but it will still show the result after execution. + ## Judges' comments This could be used as the basis of an a-maze-ing screen exerciser. diff --git a/1995/dodsond1/README.md b/1995/dodsond1/README.md index a5caa9735..2c3c8c1a0 100644 --- a/1995/dodsond1/README.md +++ b/1995/dodsond1/README.md @@ -10,31 +10,40 @@ make all -### To run +## To run: - ./dodsond1 < some.text + ./dodsond1 < text_file -## Judges' comment +## Try: - You might consider givig the following input: + + ./dodsond1 < README.md + +## Judges' comments: + +You might consider giving the following input: ... a male (who) gets very, very frustrated sitting in a chair all the time because males are biologically driven to go out and hunt giraffes. -- Adjunct Professor Newt Gingrich, Reinhardt College, 1/7/95 -## Author's comments +... which can be done like: - Istha ogrampra akesta Englishwa extta aswa inputwa andwa - anslatestra itwa intowa Igpa Atinla. + ./dodsond1 < try.this.txt - The obfuscation is on several levels. +## Author's comments: - Most obviously, the shape of the program. +Istha ogrampra akesta Englishwa extta aswa inputwa andwa +anslatestra itwa intowa Igpa Atinla. - Underneath that, the variable names are in pig latin, as are the - names of the standard C functions, such as putchar. Even main is - written as ainma. +The obfuscation is on several levels. - The program construction is also very obfuscated, with all of the - code being inside the ()'s of one of the 6 "orfa" loops. +Most obviously, the shape of the program. + +Underneath that, the variable names are in pig latin, as are the +names of the standard C functions, such as putchar. Even main is +written as ainma. + +The program construction is also very obfuscated, with all of the +code being inside the ()'s of one of the 6 "orfa" loops. diff --git a/1995/dodsond1/try.this.txt b/1995/dodsond1/try.this.txt new file mode 100644 index 000000000..c68208d77 --- /dev/null +++ b/1995/dodsond1/try.this.txt @@ -0,0 +1,6 @@ + ... a male (who) gets very, very frustrated sitting in a chair all + the time because males are biologically driven to go out and hunt + giraffes. + -- Adjunct Professor Newt Gingrich, Reinhardt College, 1/7/95 + + diff --git a/1995/dodsond2/README.md b/1995/dodsond2/README.md index f37ce0638..1839da6ad 100644 --- a/1995/dodsond2/README.md +++ b/1995/dodsond2/README.md @@ -10,25 +10,26 @@ make all -### To run +### To run: - ./dodsond2 + ./dodsond2 -## Judges' comments - An amazing entry! +## Judges' comments: - The official chef enjoyed solving the maze, which she did on the first - attempt. +An amazing entry! -## Author's comments +The official chef enjoyed solving the maze, which she did on the first +attempt. - Interactive 3D Maze +## Author's comments: - Step into a randomly generated 3D maze and try to get out alive! - Use the vi movement keys (hjkl) to move on a level, and u or d - to move (u)p or (d)own from a position with a U or D on the - map. To simulate the feeling of being in an unknown labyrinth, - areas which you have not visited cannot be seen. +### Interactive 3D Maze - Reach the north-west left corner of level 1 to exit. +Step into a randomly generated 3D maze and try to get out alive! +Use the vi movement keys (hjkl) to move on a level, and u or d +to move (u)p or (d)own from a position with a U or D on the +map. To simulate the feeling of being in an unknown labyrinth, +areas which you have not visited cannot be seen. + +Reach the north-west left corner of level 1 to exit. diff --git a/1995/esde/README.md b/1995/esde/README.md index 686c1dd83..6282ac515 100644 --- a/1995/esde/README.md +++ b/1995/esde/README.md @@ -9,56 +9,58 @@ make all -### To run +### To run: ./esde data-file word - where data-file contains lines of < 255 chars in length. +where data-file contains lines of < 255 chars in length. -## Judges' comments - Try: +## Try: ./esde esde.data Johanson ./esde esde.data2 read - ./esde esde.hint date + ./esde README.md date - When reading the source be careful to distinguish between variable - names and library functions. - - If you still don't know what it does, try: - http://avian.dars.muohio.edu/~kaelbesa/soundex.html - http://avian.dars.muohio.edu/~kaelbesa/coder.html +## Judges' comments: + +When reading the source be careful to distinguish between variable +names and library functions. + +If you still don't know what it does, try +[https://en.wikipedia.org/wiki/Soundex](https://en.wikipedia.org/wiki/Soundex). + ## Author's comments - 0) what this program does. - This program searches in the file words which have the same Soundex code - like the given word, and print out lines with these words. +### what this program does: - The Soundex code is using to find similar sounds words. +This program searches in the file words which have the same Soundex code +like the given word, and print out lines with these words. - Soundex code begins with the first letter of the word followed by a - three-digit code. There is the algorithm: +The Soundex code is using to find similar sounds words. - a) Every letter in the word change by a digit (excluding the first - letter). - b) Replace all pairs of the same code by single code - (ex. R011235 -> R01235). - c) Remove all 0-codes (ex. R01235 -> R1235). - d) If lenght of code is > 4, get only first 4 codes (ex. R1235 -> R123). - e) If lenght of code is < 4, add zeros (ex. T12 -> T120). +Soundex code begins with the first letter of the word followed by a +three-digit code. There is the algorithm: - There is the codes: - 0 = A, E, H, I, O, U, W, Y - 1 = B, P, F, V - 2 = C, S, G, J, K, Q, X, Z - 3 = D, T - 4 = L - 5 = M, N - 6 = R +0. Every letter in the word change by a digit (excluding the first letter). +1. Replace all pairs of the same code by single code (ex. R011235 -> R01235). +2. Remove all 0-codes (ex. R01235 -> R1235). +3. If length of code is > 4, get only first 4 codes (ex. R1235 -> R123). +4. If length of code is < 4, add zeros (ex. T12 -> T120). - 1) information about an info file. - An info file should be a text file consisting of lines (max. 256 bytes - in each line). +These are the codes: + + 0 = A, E, H, I, O, U, W, Y + 1 = B, P, F, V + 2 = C, S, G, J, K, Q, X, Z + 3 = D, T + 4 = L + 5 = M, N + 6 = R + +### information about an info file: + +An info file should be a text file consisting of lines of text (max. 256 bytes +in each line). diff --git a/1995/garry/README.md b/1995/garry/README.md index 4b47ef4a0..35d6de2b7 100644 --- a/1995/garry/README.md +++ b/1995/garry/README.md @@ -9,51 +9,57 @@ make all -### To run +## To run: - ./garry.test.sh - -## Judges' comments - - In general, try: ./garry output_file - While it may not have been the intention of the submitter, the - judges noted that the C pre-processed version (with the #includes - left intact) looked very much like a rat "dropping core". See - garry.cpp and judge for yourself! +## Try: - The author was kind enough to provide a less obfuscated version of - the source called garry.fmt.c. + ./garry.test.sh + + ./garry < README.md + +## Judges' comments + +In general, try: + + +While it may not have been the intention of the submitter, the +judges noted that the C pre-processed version (with the `#include`s +left intact) looked very much like a rat "dropping core". See +`garry.cpp` and judge for yourself! + +The author was kind enough to provide a less obfuscated version of +the source called `garry.fmt.c`. ## Author's comments - This program is a file filter, designed to do environment-expansion and - incorporating the ability to create binary from escaped data in the - environment variables. +This program is a file filter, designed to do environment-expansion and +incorporating the ability to create binary from escaped data in the +environment variables. - The calling syntax is pretty simple, just use it with stdio-redirection - or inside pipelines, e.g.: +The calling syntax is pretty simple, just use it with stdio-redirection +or inside pipelines, e.g.: progname converted_file - or +or cat all_my_files/* | progname | lp - The syntax of the conversion of the input file is as follows: To include - the value of an environment variable in the output file, place the name - of the variable between "$"-signs in the input, e.g.: +The syntax of the conversion of the input file is as follows: To include +the value of an environment variable in the output file, place the name +of the variable between "$"-signs in the input, e.g.: My Home-Directory is: $HOME$ I'm using the path: $PATH$ - Unknown Env-variables or misformed expressions are ignored and kept - intact. +Unknown Env-variables or malformed expressions are ignored and kept +intact. - Additionally, the filter replaces escaped octal values in the - environment variables by their binary representation, e.g.: +Additionally, the filter replaces escaped octal values in the +environment variables by their binary representation, e.g.: $ TEST="\110\145\154\154\157" $ export TEST diff --git a/1995/heathbar/README.md b/1995/heathbar/README.md index 3ae2a6561..08df129c8 100644 --- a/1995/heathbar/README.md +++ b/1995/heathbar/README.md @@ -10,45 +10,52 @@ make all -### To run +## To run: + + ./heathbar num num + +where num is a non-negative number. + +## Try: ./heathbar 4253 2281 -## Judges' comments - The main reason we liked this entry was mainly because the main - effect of the source was self documenting! :-) +## Judges' comments: + +The main reason we liked this entry was mainly because the main +effect of the source was self documenting! :-) ## Author's comments - Run this program with two non-negative integer arguments - (e.g. "prog 1234 999"). +Run this program with two non-negative integer arguments +(e.g. "prog 1234 999"). - My goal was to create the fastest possible C program. To that - end, I made three critical observations: +My goal was to create the fastest possible C program. To that +end, I made three critical observations: - 1. If there's one thing computers are good at, it's math. - 2. Simple operations take less time than complicated ones. - 3. Every C program seems to contain the word "main". +1. If there's one thing computers are good at, it's math. +2. Simple operations take less time than complicated ones. +3. Every C program seems to contain the word "main". - Based on #1, I knew that the Fastest Program had to be one that - performed addition. From #2, I reasoned that it ought to directly - manipulate the bits, rather than wasting time dealing with bloated, - high-level, fuzzy-logic, artificial-intelligence, neural-net, - client-server, object-oriented abstractions like the C language "+" - operator. And it was obvious from #3 that the program should - resemble, as closely as possible, a long sequence of the familiar - word "main" repeated over and over, so the computer would be - comfortable running the program and wouldn't get distracted dealing - with unfamiliar variable names. +Based on #1, I knew that the Fastest Program had to be one that +performed addition. From #2, I reasoned that it ought to directly +manipulate the bits, rather than wasting time dealing with bloated, +high-level, fuzzy-logic, artificial-intelligence, neural-net, +client-server, object-oriented abstractions like the C language "+" +operator. And it was obvious from #3 that the program should +resemble, as closely as possible, a long sequence of the familiar +word "main" repeated over and over, so the computer would be +comfortable running the program and wouldn't get distracted dealing +with unfamiliar variable names. - Also, I've looked at some past winning entries of your contest, and - if you don't mind a little constructive criticsm, some of them are - kind-of hard to figure out. I didn't want my program to fall into - the same trap, so I went out of my way to write self-documenting - code. Anyone who so much as glances at my program will immediately - see that it adds two 16-bit unsigned integers by streaming their - bits through a simulated cascade of hardware adders. I hope my - diligent effort to write especially clear code gets me extra points! +Also, I've looked at some past winning entries of your contest, and +if you don't mind a little constructive criticism, some of them are +kind-of hard to figure out. I didn't want my program to fall into +the same trap, so I went out of my way to write self-documenting +code. Anyone who so much as glances at my program will immediately +see that it adds two 16-bit unsigned integers by streaming their +bits through a simulated cascade of hardware adders. I hope my +diligent effort to write especially clear code gets me extra points! - P.S. What does "obfuscated" mean? +P.S. What does "obfuscated" mean? diff --git a/1995/leo/README.md b/1995/leo/README.md index 9969f9e99..455277c6f 100644 --- a/1995/leo/README.md +++ b/1995/leo/README.md @@ -9,82 +9,95 @@ make all -### To run +## To run: - ./leo 1 | cat - /dev/tty | gs - - ./leo 37 80 | cat - /dev/tty | gs - - -## Judges' comments - - Press return after each image is drawn. - - The variable names are element-ary. If you find this confusing, - remember that it is nu-clear. :-) - - Some Ghostscripts/Postscript programs cleared the screen right after - the image is drawn, so we added element 106 which acts as an input - buffer. - - If you don't have gs or an equivalent postscript viewer, try: - - echo "" | leo 1 > foo.ps - - and send foo.ps to your local postscript printer. - - To qualify for a category specially for yourself in the Geek code, - find out the all the secret switches that the author doesn't divulge ! - (All switches are single characters on the command line - anything that's - not a number is a candidate) - -## Author's comments - - The usage is: ./leo [ deep ] [ right ] [ Variable ] [ cycle [ freq ] ] - where the first three are literal words, `cycle' is a positive - integer (0 is ignored), and `freq' is an integer (default = 0) - supposed to be in range 0..100 (bigger values are allowed, however). - Invalid parameters and options usually stop the command line - parsing (but not always, why?). The actual position of the word - options does not matter, so "prog.sh right Variable 1 70" - is equivalent to "prog.sh 0 0 0 1 Variable 70 right", etc. +See the author's information below on these details. - If `Variable' is used, `cycle' is almost ignored (see below) but has - to be present if you want to enter `freq' (and you usually do). - - Some options to try (besides the obvious): +## Try: ./leo 1 | cat - /dev/tty | gs - - This draws the basic pattern I invented in high school: + ./leo 37 80 | cat - /dev/tty | gs - - You take a big sheet of "arithmetic" paper and draw a line - of length 1 (between 2 crossings) it the center of the sheet: +If you don't have gs or an equivalent postscript viewer, try: + + echo "" | ./leo 1 > foo.ps + +and send foo.ps to your local postscript printer or open it in an appropriate +application (e.g. GIMP). + + +## Judges' comments: + +Press return after each image is drawn. + +The variable names are element-ary. If you find this confusing, +remember that it is nu-clear. :-) + +Some Ghostscripts/Postscript programs cleared the screen right after +the image is drawn, so we added element 106 which acts as an input +buffer. + +To qualify for a category specially for yourself in the Geek code, +find out all the secret switches that the author doesn't divulge ! +(All switches are single characters on the command line - anything that's + not a number is a candidate) + + +## Author's comments: + +The usage is: + + ./leo [ deep ] [ right ] [ Variable ] [ cycle [ freq ] ] + +where the first three are literal words, `cycle' is a positive +integer (0 is ignored), and `freq' is an integer (default = 0) +supposed to be in range 0..100 (bigger values are allowed, however). +Invalid parameters and options usually stop the command line +parsing (but not always, why?). The actual position of the word +options does not matter, so "prog.sh right Variable 1 70" +is equivalent to "prog.sh 0 0 0 1 Variable 70 right", etc. + +If `Variable' is used, `cycle' is almost ignored (see below) but has +to be present if you want to enter `freq' (and you usually do). + +Some options to try (besides the obvious): + + ./leo 1 | cat - /dev/tty | gs - + +This draws the basic pattern I invented in high school: + +You take a big sheet of "arithmetic" paper and draw a line +of length 1 (between 2 crossings) it the center of the sheet: | - This makes 2 open ends (I think the notion of an "open end" doesn't - require explanations) in step 1. Now, until there are open ends in step N, - repeat: for each open end pretend it points north and draw 2 lines going - northwest and northeast from it to the nearest crossings. This needs to be - done "simultaneously" for all ends that are open at the moment. +This makes 2 open ends (I think the notion of an "open end" doesn't +require explanations) in step 1. Now, until there are open ends in step N, +repeat: for each open end pretend it points north and draw 2 lines going +northwest and northeast from it to the nearest crossings. This needs to be +done "simultaneously" for all ends that are open at the moment. - Step 2: +Step 2: \./ | / \ - Step 3: +Step 3: __| |__ \./ | __ / \ __ | | + +Step 4: . - Step 4: \./ \./ + \./ \./ \__| |__/ / \./ \ | @@ -93,7 +106,7 @@ / \./ \ - Step 5: +Step 5: ._| . |_. __| \./ \./ |__ \__| |__/ @@ -106,16 +119,16 @@ The lines marked by I show the places where "simultaneity" is significant. - Note that so far all the drawings represent valid - structural formulas of some organic substances. +Note that so far all the drawings represent valid +structural formulas of some organic substances. - step 1: ethane - step 2: 2,3-dimethylbutane - step 3: (2,5-dimethyl;3,4-isopropyl)-hexane - step 4 and 5: I don't know. Do you? - etc. +step 1: ethane +step 2: 2,3-dimethylbutane +step 3: (2,5-dimethyl;3,4-isopropyl)-hexane +step 4 and 5: I don't know. Do you? +etc. - Step 6: +Step 6: \./ \./ \./ \./ ._| . |_. ._| . |_. \__| \./ \./ |__/ \__| \./ \./ |__/ @@ -128,11 +141,11 @@ The lines marked by I show the places where "simultaneity" is significant. | | | | / \ / \ / \ / \ - depending on the desired "hairiness". The original (paper-based) - algorithm was "hairy", but it didn't look as good on the screen. +depending on the desired "hairiness". The original (paper-based) +algorithm was "hairy", but it didn't look as good on the screen. - The program cannot handle non-hairy mode 100% correctly - step 6 happens - to be +The program cannot handle non-hairy mode 100% correctly - step 6 happens +to be |__ ...__/ ...__/ @@ -144,71 +157,72 @@ The lines marked by I show the places where "simultaneity" is significant. \ \.__ | - and so on: the horisontal symmetry has been lost. That's why - the opening for step 1 is not a single line but a cross: +and so on: the horisontal symmetry has been lost. That's why +the opening for step 1 is not a single line but a cross: \./ / \ - To watch it repeatedly (as a screen saver), use: +To watch it repeatedly (as a screen saver), use: - leo 2 | cat - /dev/tty | gs - + ./leo 2 | cat - /dev/tty | gs - - The command line: +The command line: - leo Variable 1 | cat - /dev/tty | gs - + ./leo Variable 1 | cat - /dev/tty | gs - - This draws the same as above. Try: +This draws the same as above. Try: - leo Variable 1 1 | cat - /dev/tty | gs - + ./leo Variable 1 1 | cat - /dev/tty | gs - - what happened to the picture? Increase `freq' and watch the changes. +what happened to the picture? Increase `freq' and watch the changes. - If `cycle' is more than 1, the program loops, allowing the user to - enjoy randomly changing patterns (the delay is 3 sec), - but there is a secret switch to suppress looping : useful - if you want to pipe the output to a printer. +If `cycle' is more than 1, the program loops, allowing the user to +enjoy randomly changing patterns (the delay is 3 sec), +but there is a secret switch to suppress looping : useful +if you want to pipe the output to a printer. + +`uudecode` the spoiler below if you really want to know. - uudecode the spoiler below if you really want to know. begin 664 spoiler1 M*%1H92!C;VQO;B J:7,J('1H92!S96-R970@8 have been known to cause compilers - (and in one case a system) to crash during compilation. +Warning: in the past, values of LEVEL>8 have been known to cause compilers (and +in one case a system) to crash during compilation. We tested it in 2023 on a +MacBook Pro with the M1 chip and found that LEVEL > 6 caused problems. - For a bad/slow time try LEVEL=15. +For a bad/slow time try LEVEL=15. -## Author's comments +## Authors' comments: - A classic problem in computer science is known as the Towers - of Hanoi. It involves a set of different-sized disks mounted - on one of three pegs. The object is to move the pile of disks - to one of the other pegs. You may only move one disk at a - time, and there is an additional constraint that a disk may - never be placed on top of a smaller disk. +A classic problem in computer science is known as the Towers +of Hanoi. It involves a set of different-sized disks mounted +on one of three pegs. The object is to move the pile of disks +to one of the other pegs. You may only move one disk at a +time, and there is an additional constraint that a disk may +never be placed on top of a smaller disk. - Our program solves the Towers of Hanoi problem. Well, that's - not exactly true; actually, it's the compiler that solves the - problem. The resulting program just prints out the correct - solution. +Our program solves the Towers of Hanoi problem. Well, that's +not exactly true; actually, it's the compiler that solves the +problem. The resulting program just prints out the correct +solution. - How do you trick a compiler into actually solving the problem? - First, you must tell it how many disks you wish to solve it - for. This is done by defining the symbol 'n' on the compile - line. For instance, to cause the compiler to solve the Towers - of Hanoi problem with four disks, you would compile the program - like this: +How do you trick a compiler into actually solving the problem? +First, you must tell it how many disks you wish to solve it +for. This is done by defining the symbol 'n' on the compile +line. For instance, to cause the compiler to solve the Towers +of Hanoi problem with four disks, you would compile the program +like this: gcc hanoi.c -o hanoi -Dn=4 - A default value of 5 will be used for n if you do not define - it on the command line. The value of n cannot be greater than - fifteen (the compiler we used to test has a limit on the #include - depth). The compiler then solves the problem using binary - arithmetic based on whether particular symbols are defined or not. - - To loop, the program #include's itself. This is, of course, - expensive; one compile we did with n=14 took about fifty - minutes to compile on our system (compiling with n=15 - caused our system to crash). +A default value of 5 will be used for n if you do not define +it on the command line. The value of n cannot be greater than +fifteen (the compiler we used to test has a limit on the #include +depth). The compiler then solves the problem using binary +arithmetic based on whether particular symbols are defined or not. - The resulting program that the compiler generates simply - prints out the answer. Did I say "simply"? Actually, the - whole resulting program consists of a single printf statement, - consisting of a massive string constant of length 35*(2^n-1), - followed by 3*(2^n-1) integers which get formatted into the - string. For our n=14 run, this adds up to a string constant - of length 573405, followed by 49149 integers delimeted by - commas. (Generating the string constant depends on the - ANSI C feature in which adjacent character strings are - catenated; a version that does not use this feature has been - included for people who can only run K&R). A good way to see - the resulting program (on a Unix system) is to do the command +To loop, the program #include's itself. This is, of course, +expensive; one compile we did with n=14 took about fifty +minutes to compile on our system (compiling with n=15 +caused our system to crash). + +The resulting program that the compiler generates simply +prints out the answer. Did I say "simply"? Actually, the +whole resulting program consists of a single printf statement, +consisting of a massive string constant of length `35*(2^n-1)`, +followed by `3*(2^n-1)` integers which get formatted into the +string. For our n=14 run, this adds up to a string constant +of length 573405, followed by 49149 integers delimited by +commas. (Generating the string constant depends on the +ANSI C feature in which adjacent character strings are +catenated; a version that does not use this feature has been +included for people who can only run K&R). A good way to see +the resulting program (on a Unix system) is to do the command gcc hanoi.c -E -Dn=5 | grep -v \# | grep -v ^\$ - For an odd number of disks, the program will provide a - solution wherein the disks end up on peg 2; for an even - number of disks, they will end on peg 3. This should - provide some hint as to what sort of algorithm is used. +For an odd number of disks, the program will provide a +solution wherein the disks end up on peg 2; for an even +number of disks, they will end on peg 3. This should +provide some hint as to what sort of algorithm is used. - We have included a "spoiler" version of the program, with - meaningful symbol names and comments, but we encourage you - to try to decipher the program without it... +We have included a "spoiler" version of the program, with +meaningful symbol names and comments, but we encourage you +to try to decipher the program without it... -begin 444 spoiler.c -M(VEF;F1E9B`@24Y)5$E!3$E:140*"B\J"B`J("!)9B!N(&ES;B=T(&1E9FEN -M960L(&UA:V4@:70@-0H@*B\*(VEF;F1E9B`@;@HC9&5F:6YE("!N(#`U"B-E -M;F1I9@H*+RH*("H@4V]M92!UPIP2!N('=E)W)E(&UO=FEN9R!D:7-K(&XK,2X@5&AA="!M96%N6-L92`Q -M(#T^(#(@/3X@,R`]/B`Q+B!#;VUB:6YE('1H:7,@=VET:"!T:&4@:VYO=VQE -M9&=E"B`J("!O9B!W:&5R92!D:7-K(#$@:7,L(&%N9"!W92!C86X@9&5T97)M -M:6YE(&AO=R!T;R!M;W9E(&%N>2!D:7-K+@H@*B\*(VEF;F1E9B`@3D]77T1/ -M7U1(15].54U"15)3"D9/4DU!5%]35%))3D<*(V5LPIP2!N('=E)W)E(&UO=FEN9R!D:7-K(&XK,2X@5&AA="!M96%N6-L92`Q + M(#T^(#(@/3X@,R`]/B`Q+B!#;VUB:6YE('1H:7,@=VET:"!T:&4@:VYO=VQE + M9&=E"B`J("!O9B!W:&5R92!D:7-K(#$@:7,L(&%N9"!W92!C86X@9&5T97)M + M:6YE(&AO=R!T;R!M;W9E(&%N>2!D:7-K+@H@*B\*(VEF;F1E9B`@3D]77T1/ + M7U1(15].54U"15)3"D9/4DU!5%]35%))3D<*(V5L