------ art_13995_2718062.1167685909606 Content-Type: multipart/alternative; boundary --- art_13996_14893456.1167685909606" ------ art_13996_14893456.1167685909606 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hello. This is my first ever ruby program of more than 10 lines, so be gentle. :) I'm a java programmer by profession and it will probably show in my solution, but I thought I'd post it and get feedback on my code. I didn't do any of the extra credit, although the to_s on the LetterGrid class is an alternate output format. Wildcards would be very easy to add. I attached both my solution and some test cases I wrote along the way. If attachments are not appropriate, I can re-submit with my code copied into the body of the message (sorry for my n00b ignorance here!) Thanks! John ------ art_13996_14893456.1167685909606 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hello. This is my first ever ruby program of more than 10 lines, so be gentle. :) I'm a java programmer by profession and it will probably show in my solution, but I thought I'd post it and get feedback on my code. <br><br>I didn't do any of the extra credit, although the to_s on the LetterGrid class is an alternate output format. Wildcards would be very easy to add.<br><br>I attached both my solution and some test cases I wrote along the way. If attachments are not appropriate, I can re-submit with my code copied into the body of the message (sorry for my n00b ignorance here!) <br><br>Thanks!<br> John<br><br><br> ------ art_13996_14893456.1167685909606-- ------ art_13995_2718062.1167685909606 Content-Type: application/octet-stream; name=wordsearch.rb Content-Transfer-Encoding: base64 X-Attachment-Id: f_ewfdz39o Content-Disposition: attachment; filename="wordsearch.rb" IyEvc3cvYmluL3J1YnkKcmVxdWlyZSAnZGVsZWdhdGUnCgpjbGFzcyBMZXR0ZXJHcmlkCiAgYXR0 cl9yZWFkZXIgOmNoYXJhY3RlclJvd3MKICBkZWYgaW5pdGlhbGl6ZSgqcm93cykKICAgIEBjaGFy YWN0ZXJSb3dzID0gcm93cy5jb2xsZWN0e3x4fCBHcmlkTGV0dGVyU2VxdWVuY2UubmV3KHgpfQog IGVuZAoKICBkZWYgW10oa2V5KQogICAgQGNoYXJhY3RlclJvd3Nba2V5XQogIGVuZAogIAogIGRl ZiBlYWNoCiAgICBAY2hhcmFjdGVyUm93cy5lYWNoIHsgfGN8IHlpZWxkIGMgfQogIGVuZAogIAog IGRlZiBzZXF1ZW5jZXMKICAgIChob3Jpel9zZXF1ZW5jZXMgKyB2ZXJ0X3NlcXVlbmNlcyArIGRp YWdfcmlnaHRfc2VxdWVuY2VzICsgZGlhZ19sZWZ0X3NlcXVlbmNlcykudW5pcQogIGVuZAogIAog IGRlZiBob3Jpel9zZXF1ZW5jZXMKICAgIHJlc3VsdCA9IEBjaGFyYWN0ZXJSb3dzICsgQGNoYXJh Y3RlclJvd3MuY29sbGVjdHt8eHwgeC5yZXZlcnNlfQogICAgcmVzdWx0LnVuaXEKICBlbmQKICAK ICBkZWYgdmVydF9zZXF1ZW5jZXMKICAgIHJlc3VsdCA9IFtdCiAgICBAY2hhcmFjdGVyUm93cy5l YWNoe3xyb3d8IHJvdy5lYWNoX3dpdGhfaW5kZXgge3xjLGl8IHJlc3VsdFtpXSA/IHJlc3VsdFtp XSA8PCBjIDogcmVzdWx0W2ldID0gW2NdfSB9CiAgICByZXN1bHQuY29sbGVjdCF7fHh8IEdyaWRM ZXR0ZXJTZXF1ZW5jZS5uZXcoeCl9CiAgICByZXN1bHQgKz0gcmVzdWx0LmNvbGxlY3R7fHh8IHgu cmV2ZXJzZX0KICAgIHJlc3VsdC51bmlxCiAgZW5kIAogIAogIGRlZiBkaWFnX3JpZ2h0X3NlcXVl bmNlcwogICAgZGlhZ19zZXF1ZW5jZXMoQGNoYXJhY3RlclJvd3MpCiAgZW5kIAogIAogIGRlZiBk aWFnX3NlcXVlbmNlcyhhcnJheVRvTG9va0F0KQogICAgbGlzdHMgPSByaWdodF9kaWFnKGFycmF5 VG9Mb29rQXQubGVuZ3RoLTEsIGFycmF5VG9Mb29rQXRbMF0ubGVuZ3RoLTEpCiAgICBzZXFzID0g bGlzdHMuY29sbGVjdHt8eHwgeC5pbmplY3QoR3JpZExldHRlclNlcXVlbmNlLm5ldygiIikpe3xh Y2N1bSwgeXwgYWNjdW0gPDwgYXJyYXlUb0xvb2tBdFt5WzBdXVt5WzFdXX19CiAgICBzZXFzICs9 IHNlcXMuY29sbGVjdHt8eHwgeC5yZXZlcnNlfQogICAgc2Vxcy51bmlxICAgIAogIGVuZAogIAog IGRlZiBkaWFnX2xlZnRfc2VxdWVuY2VzCiAgICBkaWFnX3NlcXVlbmNlcyhAY2hhcmFjdGVyUm93 cy5yZXZlcnNlKQogIGVuZAogIAogIGRlZiB0b19zCiAgICBAY2hhcmFjdGVyUm93cy5pbmplY3Qo IiIpe3xhY2N1bSwgcm93fCBhY2N1bSArPSAocm93LnRvX3MgKyAiXG4iKX0KICBlbmQKICAKICBk ZWYgc2VhcmNoKCp0b2tlbnMpCiAgICBzID0gc2VxdWVuY2VzCiAgICBzLmVhY2ggZG8gfHN8IAog ICAgICBzZXEgPSBHcmlkTGV0dGVyU2VxdWVuY2UubmV3KHMpCiAgICAgIHRva2Vucy5lYWNoe3x0 b2tlbnwgc2VxLmZpbmRBbmRNYXJrKHRva2VuKX0KICAgIGVuZAogIGVuZAplbmQKCmNsYXNzIEdy aWRMZXR0ZXIKICBkZWYgaW5pdGlhbGl6ZShjaGFyKQogICAgQGNoYXIgPSBjaGFyCiAgICBAZm91 bmQgPSBmYWxzZQogIGVuZAogIAogIGF0dHJfYWNjZXNzb3IgOmZvdW5kCiAgYXR0cl9yZWFkZXIg OmNoYXIKCiAgZGVmIGVxbD8ob2JqZWN0KQogICAgc2VsZiA9PSAob2JqZWN0KQogIGVuZAogIAog IGRlZiA9PShvYmplY3QpCiAgICBvYmplY3QuZXF1YWw/KHNlbGYpIHx8IChvYmplY3QuaW5zdGFu Y2Vfb2Y/KHNlbGYuY2xhc3MpICYmCiAgICAgICAgICAgb2JqZWN0LmNoYXIgPT0gY2hhciAmJiBv YmplY3QuZm91bmQgPT0gZm91bmQpCiAgZW5kCiAgCiAgZGVmIHRvX3MKICAgIGlmIChAZm91bmQp CiAgICAgIEBjaGFyLnVwY2FzZQogICAgZWxzZQogICAgICBAY2hhci5kb3duY2FzZQogICAgZW5k CiAgZW5kCmVuZAoKY2xhc3MgR3JpZExldHRlclNlcXVlbmNlIDwgRGVsZWdhdGVDbGFzcyhBcnJh eSkKICBkZWYgaW5pdGlhbGl6ZSh2YWx1ZSkKICAgIGlmICh2YWx1ZS5pbnN0YW5jZV9vZj8oU3Ry aW5nKSkKICAgICAgc3VwZXIodmFsdWUuc3BsaXQoLy8pLmNvbGxlY3R7fHh8IEdyaWRMZXR0ZXIu bmV3KHgpfSkKICAgIGVsc2UKICAgICAgc3VwZXIKICAgIGVuZAogIGVuZAogIAogIGRlZiB0b19z CiAgICBqb2luKCIgIikKICBlbmQKICAKICBkZWYgZmluZChwYXR0ZXJuKQogICAgc3RyaW5ndmFs ID0gam9pbgogICAgcmVzdWx0cyA9IFtdCiAgICBpID0gMAogICAgd2hpbGUgKGxvYyA9IHN0cmlu Z3ZhbC5pbmRleChSZWdleHAubmV3KHBhdHRlcm4sICJpIiksIGkpKQogICAgICByZXN1bHRzIDw8 IFtsb2MsIChsb2MgLTEgKyBwYXR0ZXJuLmxlbmd0aCldCiAgICAgIGkgPSBsb2MgKyAxCiAgICBl bmQKICAgIHJlc3VsdHMKICBlbmQKICAKICBkZWYgbWFya0ZvdW5kKHJhbmdlcykKICAgIHJhbmdl cy5lYWNoe3xyfCBzZWxmW1JhbmdlLm5ldygqcildLmVhY2h7fHh8IHguZm91bmQgPSB0cnVlfX0K ICBlbmQKICAKICBkZWYgZmluZEFuZE1hcmsocGF0dGVybikKICAgIG1hcmtGb3VuZChmaW5kKHBh dHRlcm4pKQogIGVuZAplbmQKCmRlZiByaWdodF9kaWFnKHJvd3MsIGNvbHVtbnMpCiAgbWF4cj1y b3dzCiAgbWlucj1yb3dzCiAgbWF4Yz0wCiAgbWluYz0wCiAgcmVzdWx0cyA9IFtdCiAgd2hpbGUg KG1heHIgPj0gMCAmJiBtaW5jIDw9IGNvbHVtbnMpCiAgICB3aGlsZSAobWluciA+PSAwICYmIG1h eGMgPD0gY29sdW1ucykgCiAgICAgIGNzID0gW10KICAgICAgcnMgPSBbXQogICAgICAobWluci4u bWF4cikuZWFjaCB7fHJ8IHJzIDw8IHJ9ICAgICAgCiAgICAgIChtaW5jLi5tYXhjKS5lYWNoIHt8 Y3wgY3MgPDwgY30KICAgICAgCiAgICAgIG1pbnIgPSBtaW5yIC0gMQogICAgICBtYXhjID0gbWF4 YyArIDEKICAgICAgc3VicmVzdWx0ID0gW10KICAgICAgcnMuZWFjaF93aXRoX2luZGV4e3x4LGl8 IHN1YnJlc3VsdCA8PCBbeCwgY3NbaV1dfQogICAgICAjc3VicmVzdWx0LmVhY2h7fHh8IHB1dHMg IiN7eFswXX0sICN7eFsxXX0ifQogICAgICAjcHV0cwogICAgICByZXN1bHRzIDw8IHN1YnJlc3Vs dAogICAgZW5kCiAgICBtYXhyID0gbWF4ciAtIDEgaWYgKG1pbmMgPiAwIHx8IHJvd3MgPj0gY29s dW1ucykKICAgIG1pbmMgPSBtaW5jICsgMSBpZiAobWF4ciA8IGNvbHVtbnMgfHwgY29sdW1ucyA+ PSByb3dzKQogICAgbWluciA9IDAKICAgIG1heGMgPSBjb2x1bW5zCiAgZW5kCiAgcmVzdWx0cwpl bmQKCmlmIF9fRklMRV9fID09ICQwCiAgcm93cyA9IFtdCiAgd2hpbGUgKChyb3cgPSBnZXRzLmNo b21wKSAhPSAiIiApCiAgICByb3dzIDw8IHJvdwogIGVuZAogIHdvcmRzID0gZ2V0cy5jaG9tcC5z cGxpdCgvLC8pCiAgd29yZHMuY29sbGVjdHt8d29yZHwgd29yZC5zdHJpcCF9CgogIGcgPSBMZXR0 ZXJHcmlkLm5ldygqcm93cykKICBnLnNlYXJjaCgqd29yZHMpCgogIHB1dHMKICBnLmVhY2ggZG8g fHJ8IAogICAgci5lYWNoIGRvIHxjfAogICAgICBpZiAoYy5mb3VuZCkKICAgICAgICBwcmludCBj CiAgICAgIGVsc2UKICAgICAgICBwcmludCAiKyIKICAgICAgZW5kCiAgICAgIHByaW50ICIgIgog ICAgZW5kCiAgICBwdXRzCiAgZW5kCmVuZA ------ art_13995_2718062.1167685909606 Content-Type: application/octet-stream; name=wordsearchtest.rb Content-Transfer-Encoding: base64 X-Attachment-Id: f_ewfdzigs Content-Disposition: attachment; filename="wordsearchtest.rb" cmVxdWlyZSAndGVzdC91bml0JwpyZXF1aXJlICd0ZXN0L3VuaXQvdGVzdHN1aXRlJwpyZXF1aXJl ICd0ZXN0L3VuaXQvdWkvY29uc29sZS90ZXN0cnVubmVyJwpyZXF1aXJlICd3b3Jkc2VhcmNoJwoK Y2xhc3MgTGV0dGVyR3JpZFRlc3QgPCBUZXN0OjpVbml0OjpUZXN0Q2FzZQogIGRlZiB0ZXN0TG9h ZGluZwogICAgYSA9IExldHRlckdyaWQubmV3KCJIRUxMTyIpCiAgICBhc3NlcnRfZXF1YWwoR3Jp ZExldHRlclNlcXVlbmNlLm5ldygiSEVMTE8iKSwgYVswXSkKICAgIAogICAgYT1MZXR0ZXJHcmlk Lm5ldygiSEVMTE8iLCJHT09EQllFIikKICAgIGFzc2VydF9lcXVhbChHcmlkTGV0dGVyU2VxdWVu Y2UubmV3KCJIRUxMTyIpLCBhWzBdKQogICAgYXNzZXJ0X2VxdWFsKEdyaWRMZXR0ZXJTZXF1ZW5j ZS5uZXcoIkdPT0RCWUUiKSwgYVsxXSkKICBlbmQKICAKICBkZWYgdGVzdFNlcXVlbmNlc1N1cGVy U2ltcGxlCiAgICBhID0gTGV0dGVyR3JpZC5uZXcoIkEiKQogICAgYiA9IGEuc2VxdWVuY2VzCiAg ICBhc3NlcnRfbm90X25pbChiKQogICAgYXNzZXJ0X2VxdWFsKDMsIGIubGVuZ3RoLCAicmVzdWx0 IHdhcyAje2J9IikKICAgIGFzc2VydChiLm1lbWJlcj8oR3JpZExldHRlclNlcXVlbmNlLm5ldygi QSIpKSkKICAgIGFzc2VydCghYi5tZW1iZXI/KEdyaWRMZXR0ZXJTZXF1ZW5jZS5uZXcoIkFBIikp LCAiZm91bmQgQUEiKQogIGVuZAogIAogIGRlZiB0ZXN0U2VxdWVuY2VzT25lQnlUd28KICAgIGEg PSBMZXR0ZXJHcmlkLm5ldygiQUIiKQogICAgYiA9IGEuc2VxdWVuY2VzCiAgICBhc3NlcnRfbm90 X25pbChiKQogICAgYXNzZXJ0X2VxdWFsKDYsIGIubGVuZ3RoLCAicmVzdWx0IHdhcyAje2J9IikK ICAgIGFzc2VydChiLm1lbWJlcj8oR3JpZExldHRlclNlcXVlbmNlLm5ldygiQUIiKSkpCiAgICBh c3NlcnQoYi5tZW1iZXI/KEdyaWRMZXR0ZXJTZXF1ZW5jZS5uZXcoIkJBIikpKQogICAgYXNzZXJ0 KGIubWVtYmVyPyhHcmlkTGV0dGVyU2VxdWVuY2UubmV3KCJBIikpKQogICAgYXNzZXJ0KGIubWVt YmVyPyhHcmlkTGV0dGVyU2VxdWVuY2UubmV3KCJCIikpKQogIGVuZAogIAogIGRlZiB0ZXN0Umln aHREaWFncwogICAgYSA9IExldHRlckdyaWQubmV3KCJBQiIsICJDRCIpCiAgICBzZXF1ZW5jZXMg PSBhLmRpYWdfcmlnaHRfc2VxdWVuY2VzCiAgICAKICAgIGFzc2VydF9ub3RfbmlsKHNlcXVlbmNl cykKICAgIGFzc2VydF9lcXVhbCg0LCBzZXF1ZW5jZXMubGVuZ3RoLCAicmVzdWx0IHdhcyAje3Nl cXVlbmNlcy5pbnNwZWN0fSIpCiAgICBhc3NlcnQoc2VxdWVuY2VzLm1lbWJlcj8oR3JpZExldHRl clNlcXVlbmNlLm5ldygiQUQiKSkpCiAgICBhc3NlcnQoc2VxdWVuY2VzLm1lbWJlcj8oR3JpZExl dHRlclNlcXVlbmNlLm5ldygiQiIpKSkKICAgIGFzc2VydChzZXF1ZW5jZXMubWVtYmVyPyhHcmlk TGV0dGVyU2VxdWVuY2UubmV3KCJDIikpKQogICAgYXNzZXJ0KHNlcXVlbmNlcy5tZW1iZXI/KEdy aWRMZXR0ZXJTZXF1ZW5jZS5uZXcoIkRBIikpKQogIGVuZAogIAogIGRlZiB0ZXN0TGVmdERpYWdz CiAgICBhID0gTGV0dGVyR3JpZC5uZXcoIkFCIiwgIkNEIikKICAgIHNlcXVlbmNlcyA9IGEuZGlh Z19sZWZ0X3NlcXVlbmNlcwogICAgYXNzZXJ0X25vdF9uaWwoc2VxdWVuY2VzLCAibm90aGluZyBj YW1lIGJhY2siKQogICAgYXNzZXJ0X2VxdWFsKDQsIHNlcXVlbmNlcy5sZW5ndGgsICJyZXN1bHQg d2FzICN7c2VxdWVuY2VzLmluc3BlY3R9IikKICAgIGFzc2VydChzZXF1ZW5jZXMubWVtYmVyPyhH cmlkTGV0dGVyU2VxdWVuY2UubmV3KCJBIikpKQogICAgYXNzZXJ0KHNlcXVlbmNlcy5tZW1iZXI/ KEdyaWRMZXR0ZXJTZXF1ZW5jZS5uZXcoIkQiKSkpCiAgICBhc3NlcnQoc2VxdWVuY2VzLm1lbWJl cj8oR3JpZExldHRlclNlcXVlbmNlLm5ldygiQkMiKSkpCiAgICBhc3NlcnQoc2VxdWVuY2VzLm1l bWJlcj8oR3JpZExldHRlclNlcXVlbmNlLm5ldygiQ0IiKSkpCiAgZW5kCiAgICAKICBkZWYgdGVz dFJpZ2h0RGlhZ0luZGljZXMzMgogICAgaW5kaWNlcyA9IHJpZ2h0X2RpYWcoMywyKQogICAgYXNz ZXJ0X2VxdWFsKDYsIGluZGljZXMubGVuZ3RoKQogICAgYXNzZXJ0X2VxdWFsKFtbMywwXV0sIGlu ZGljZXNbMF0pCiAgICBhc3NlcnRfZXF1YWwoW1syLDBdLFszLDFdXSwgaW5kaWNlc1sxXSkKICAg IGFzc2VydF9lcXVhbChbWzEsMF0sWzIsMV0sWzMsMl1dLCBpbmRpY2VzWzJdKQogICAgYXNzZXJ0 X2VxdWFsKFtbMCwwXSxbMSwxXSxbMiwyXV0sIGluZGljZXNbM10pCiAgICBhc3NlcnRfZXF1YWwo W1swLDFdLFsxLDJdXSwgaW5kaWNlc1s0XSkKICAgIGFzc2VydF9lcXVhbChbWzAsMl1dLCBpbmRp Y2VzWzVdKQogIGVuZAoKICBkZWYgdGVzdFJpZ2h0RGlhZ0luZGljZXMyMwogICAgaW5kaWNlcyA9 IHJpZ2h0X2RpYWcoMiwzKQogICAgYXNzZXJ0X2VxdWFsKDYsIGluZGljZXMubGVuZ3RoKQogICAg YXNzZXJ0X2VxdWFsKFtbMiwwXV0sIGluZGljZXNbMF0pCiAgICBhc3NlcnRfZXF1YWwoW1sxLDBd LFsyLDFdXSwgaW5kaWNlc1sxXSkKICAgIGFzc2VydF9lcXVhbChbWzAsMF0sWzEsMV0sWzIsMl1d LCBpbmRpY2VzWzJdKQogICAgYXNzZXJ0X2VxdWFsKFtbMCwxXSxbMSwyXSxbMiwzXV0sIGluZGlj ZXNbM10pCiAgICBhc3NlcnRfZXF1YWwoW1swLDJdLFsxLDNdXSwgaW5kaWNlc1s0XSkKICAgIGFz c2VydF9lcXVhbChbWzAsM11dLCBpbmRpY2VzWzVdKQogIGVuZAplbmQKCmNsYXNzIEdyaWRMZXR0 ZXJUZXN0IDwgVGVzdDo6VW5pdDo6VGVzdENhc2UKICBkZWYgdGVzdEZvdW5kCiAgICBhID0gR3Jp ZExldHRlci5uZXcoImEiKQogICAgYXNzZXJ0KCFhLmZvdW5kLCAid2Fzbid0IGluaXRpYWxpemVk IHByb3Blcmx5IikKICAgIGEuZm91bmQ9dHJ1ZQogICAgYXNzZXJ0KGEuZm91bmQsICJzZXR0ZXIg ZGlkbid0IHdvcmsiKQogICAgYS5mb3VuZCA9IGZhbHNlCiAgICBhc3NlcnQoIWEuZm91bmQsICJz ZXR0ZXIgZGlkbid0IHdvcmsiKQogIGVuZAogIAogIGRlZiB0ZXN0RXF1YWxzCiAgICBhID0gR3Jp ZExldHRlci5uZXcoImEiKQogICAgYiA9IEdyaWRMZXR0ZXIubmV3KCJhIikKICAgIGFzc2VydF9l cXVhbChhLGIpCiAgICBiLmZvdW5kID0gdHJ1ZQogICAgYXNzZXJ0X25vdF9lcXVhbChhLGIpCiAg ZW5kCiAgCmVuZAoKY2xhc3MgR3JpZExldHRlclNlcXVlbmNlVGVzdCA8IFRlc3Q6OlVuaXQ6OlRl c3RDYXNlCiAgZGVmIHRlc3RTdHJpbmdFYWNoRml4bnVtcwogICAgYSA9IEdyaWRMZXR0ZXJTZXF1 ZW5jZS5uZXcoIkhlbGxvIFdvcmxkIikKICAgIGEuZWFjaCB7fHh8IGFzc2VydCgheC5mb3VuZCwg IiN7eH0gd2Fzbid0IGZvdW5kPyIpfQogICAgYS5lYWNoIHt8eHwgeC5mb3VuZD10cnVlIH0KICAg IGEuZWFjaCB7fHh8IGFzc2VydCh4LmZvdW5kKX0KICBlbmQgIAoKICBkZWYgdGVzdEZseXdlaWdo dG5lc3MKICAgIGE9R3JpZExldHRlclNlcXVlbmNlLm5ldygiSGVsbG8gSGFuayIpCiAgICBhWzBd LmZvdW5kID0gdHJ1ZQogICAgYXNzZXJ0KCFhWzZdLmZvdW5kLCAiZmx5d2VpZ2h0LiBibGFoLiIp CiAgZW5kCiAgCiAgZGVmIHRlc3RSZXZlcnNlCiAgICBhID0gR3JpZExldHRlclNlcXVlbmNlLm5l dygiSGVsbG8iKQogICAgYXNzZXJ0X2VxdWFsKEdyaWRMZXR0ZXJTZXF1ZW5jZS5uZXcoIm9sbGVI IiksIGEucmV2ZXJzZSkKICBlbmQKICAKICBkZWYgdGVzdEVxdWFscwogICAgYXNzZXJ0KEdyaWRM ZXR0ZXJTZXF1ZW5jZS5uZXcoIkFBIikgIT0gR3JpZExldHRlclNlcXVlbmNlLm5ldygiQSIpLCAi QUEgPT0gQT8iKQogICAgYXNzZXJ0KEdyaWRMZXR0ZXJTZXF1ZW5jZS5uZXcoIkEiKSAhPSBHcmlk TGV0dGVyU2VxdWVuY2UubmV3KCJBQSIpLCAiQSA9PSBBQT8iKQogICAgYXNzZXJ0KEdyaWRMZXR0 ZXJTZXF1ZW5jZS5uZXcoIkFBIikgPT0gR3JpZExldHRlclNlcXVlbmNlLm5ldygiQUEiKSwgIkFB ICE9IEFBPyIpCiAgICBhc3NlcnQoR3JpZExldHRlclNlcXVlbmNlLm5ldygiQUEiKSAhPSBHcmlk TGV0dGVyU2VxdWVuY2UubmV3KCJBQiIpLCAiQUEgPT0gQUI/IikKICBlbmQKCiAgZGVmIHRlc3RG aW5kaW5nRW1iZWRkZWRTdHJpbmdzCiAgICB0ID0gR3JpZExldHRlclNlcXVlbmNlLm5ldygiRE9H Q0FUTUFOIikKICAgIGFzc2VydF9lcXVhbChbWzQsNF0sIFs3LDddXSwgdC5maW5kKCJBIikpCiAg ICBhc3NlcnRfZXF1YWwoW1szLDVdXSwgdC5maW5kKCJDQVQiKSkKICAgIGFzc2VydF9lcXVhbChb WzAsMl1dLCB0LmZpbmQoIkRPRyIpKQogICAgYXNzZXJ0X2VxdWFsKFtbNiw4XV0sIHQuZmluZCgi TUFOIikpCiAgICBhc3NlcnRfZXF1YWwoW10sIHQuZmluZCgiRkxJQkJFUiIpKQogIGVuZAogIAog IGRlZiB0ZXN0TWFya2luZ0ZvdW5kCiAgICB0ID0gR3JpZExldHRlclNlcXVlbmNlLm5ldygiRE9H Q0FUTUFOIikKICAgIHQubWFya0ZvdW5kKFtbMyw1XSwgWzgsOF1dKQogICAgdFszLi41XS5lYWNo e3x4fCBhc3NlcnQoeC5mb3VuZCl9CiAgICB0WzguLjhdLmVhY2h7fHh8IGFzc2VydCh4LmZvdW5k KX0KICAgIHRbMC4uMl0uZWFjaHt8eHwgYXNzZXJ0KCF4LmZvdW5kKX0KICAgIHRbNi4uN10uZWFj aHt8eHwgYXNzZXJ0KCF4LmZvdW5kKX0KICBlbmQKZW5kCgoK ------ art_13995_2718062.1167685909606--