------ art_4992_15383776.1166380121405 Content-Type: multipart/alternative; boundary --- art_4993_18232670.1166380121405" ------ art_4993_18232670.1166380121405 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline This is not a very elegant or concise or even efficient solution. I tried finding the weirdest solution I could think of. The idea is to reduce (or in this case, enlarge :) the problem to the exact-cover problem. So I formalized 6 constraints that need to be satisfied by a solution: 1) all the pieces need to be placed 2) all the columns need to be occupied 3) the left rook must appear to the left of the king and the right rook to the right 4) the left bishop must appear to the left of the right one 5) the left knight must appear to the left of the right knight 6) each color must be occupied by exactly one bishop The program constructs rows of a DLX matrix (if you don't know this algorithm, it's described here: http://en.wikipedia.org/wiki/Dancing_Links). It then uses a DLX solver that I wrote to find legal combinations of piece placements. The enumeration order is not the same as the one on the internet but is deterministic. The file 'dlx.rb' contains the DLX solver. Mushfeq. ------ art_4993_18232670.1166380121405 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline This is not a very elegant or concise or even efficient solution. I tried finding the weirdest solution I could think of. The idea is to reduce (or in this case, enlarge :) the problem to the exact-cover problem. So I formalized 6 constraints that need to be satisfied by a solution: <br><br>1) all the pieces need to be placed<br>2) all the columns need to be occupied<br>3) the left rook must appear to the left of the king and the right rook to the right<br>4) the left bishop must appear to the left of the right one <br>5) the left knight must appear to the left of the right knight<br>6) each color must be occupied by exactly one bishop<br><br>The program constructs rows of a DLX matrix (if you don't know this algorithm, it's described here: <a href ttp://en.wikipedia.org/wiki/Dancing_Links">http://en.wikipedia.org/wiki/Dancing_Links</a>). It then uses a DLX solver that I wrote to find legal combinations of piece placements. The enumeration order is not the same as the one on the internet but is deterministic. <br><br>The file 'dlx.rb' contains the DLX solver. <br><br>Mushfeq.<br><br> ------ art_4993_18232670.1166380121405-- ------ art_4992_15383776.1166380121405 Content-Type: application/octet-stream; name=chess960.rb Content-Transfer-Encoding: base64 X-Attachment-Id: f_evtsizto Content-Disposition: attachment; filename="chess960.rb" cmVxdWlyZSAnZGx4JwpjbGFzcyBQaWVjZQogIGF0dHJfcmVhZGVyIDpjb2x1bW4KICBkZWYgaW5p dGlhbGl6ZShjb2x1bW4pCiAgICBAY29sdW1uID0gY29sdW1uCiAgZW5kCiAgZGVmIGNvbHVtbl9j b25zdHJhaW50CiAgICBvY3RldF93aXRoX29uZXNfYXQoQGNvbHVtbikKICBlbmQKICBkZWYgcm9v a19raW5nX2NvbnN0cmFpbnQKICAgIFswXSo4CiAgZW5kCiAgZGVmIGJpc2hvcF9jb25zdHJhaW50 CiAgICBbMF0qOAogIGVuZAogIGRlZiBrbmlnaHRfY29uc3RyYWludAogICAgWzBdKjgKICBlbmQK ICBkZWYgb2N0ZXRfd2l0aF9vbmVzX2F0KCppbmRleGVzKQogICAgcmVzdWx0ID0gWzBdKjgKICAg IGluZGV4ZXMuZWFjaCB7fGl8IHJlc3VsdFtpXSA9IDF9CiAgICByZXN1bHQKICBlbmQKICBkZWYg c2FtZV9jb2xvcl9jb2x1bW5zKGNvbHVtbikKICAgIGNvbHVtbiAlIDIgPT0gMCA/IFswLCAyLCA0 LCA2XSA6IFsxLCAzLCA1LCA3XQogIGVuZAogIGRlZiBiaXNob3BfY29sb3JfY29uc3RyYWludAog ICAgWzBdCiAgZW5kCiAgZGVmIHRvX2RseF9yb3cKICAgIHBpZWNlX2NvbnN0cmFpbnQgKyBjb2x1 bW5fY29uc3RyYWludCArIHJvb2tfa2luZ19jb25zdHJhaW50ICsgYmlzaG9wX2NvbnN0cmFpbnQg KyBrbmlnaHRfY29uc3RyYWludCArIGJpc2hvcF9jb2xvcl9jb25zdHJhaW50CiAgZW5kCmVuZAoK Y2xhc3MgTGVmdFJvb2sgPCBQaWVjZQogIGRlZiBwaWVjZV9jb25zdHJhaW50CiAgICBvY3RldF93 aXRoX29uZXNfYXQoMCkKICBlbmQKICBkZWYgcm9va19raW5nX2NvbnN0cmFpbnQKICAgIG9jdGV0 X3dpdGhfb25lc19hdCgqKDAuLkBjb2x1bW4pLnRvX2EpCiAgZW5kCiAgZGVmIHRvX3MKICAgICJM ZWZ0IFJvb2sgYXQgI3tAY29sdW1ufSIKICBlbmQKICBkZWYgc3ltYm9sCiAgICAnUicKICBlbmQK ZW5kCgpjbGFzcyBSaWdodFJvb2sgPCBQaWVjZQogIGRlZiBwaWVjZV9jb25zdHJhaW50CiAgICBv Y3RldF93aXRoX29uZXNfYXQoNykKICBlbmQKICBkZWYgcm9va19raW5nX2NvbnN0cmFpbnQKICAg IG9jdGV0X3dpdGhfb25lc19hdCgqKEBjb2x1bW4uLjcpLnRvX2EpCiAgZW5kCiAgZGVmIHRvX3MK ICAgICJSaWdodCBSb29rIGF0ICN7QGNvbHVtbn0iCiAgZW5kCiAgZGVmIHN5bWJvbAogICAgJ1In CiAgZW5kCmVuZAoKY2xhc3MgS2luZyA8IFBpZWNlCiAgZGVmIHBpZWNlX2NvbnN0cmFpbnQKICAg IG9jdGV0X3dpdGhfb25lc19hdCg0KQogIGVuZAogIGRlZiByb29rX2tpbmdfY29uc3RyYWludAog ICAgY29sdW1uX2NvbnN0cmFpbnQKICBlbmQKICBkZWYgdG9fcwogICAgIktpbmcgYXQgI3tAY29s dW1ufSIKICBlbmQKICBkZWYgc3ltYm9sCiAgICAnSycKICBlbmQKZW5kCgpjbGFzcyBRdWVlbiA8 IFBpZWNlCiAgZGVmIHBpZWNlX2NvbnN0cmFpbnQKICAgIG9jdGV0X3dpdGhfb25lc19hdCgzKQog IGVuZAogIGRlZiB0b19zCiAgICAiUXVlZW4gYXQgI3tAY29sdW1ufSIKICBlbmQKICBkZWYgc3lt Ym9sCiAgICAnUScKICBlbmQKZW5kCgpjbGFzcyBGaWxsZXIgPCBQaWVjZQogIGRlZiBjb2x1bW5f Y29uc3RyYWludAogICAgWzBdKjgKICBlbmQKICBkZWYgcGllY2VfY29uc3RyYWludAogICAgWzBd KjgKICBlbmQKICBkZWYgdG9fcwogICAgIkZpbGxlciIKICBlbmQKZW5kCgpjbGFzcyBLbmlnaHRG aWxsZXIgPCBGaWxsZXIKICBkZWYga25pZ2h0X2NvbnN0cmFpbnQKICAgIG9jdGV0X3dpdGhfb25l c19hdChAY29sdW1uKQogIGVuZAplbmQKCmNsYXNzIFJvb2tGaWxsZXIgPCBGaWxsZXIKICBkZWYg cm9va19raW5nX2NvbnN0cmFpbnQKICAgIG9jdGV0X3dpdGhfb25lc19hdChAY29sdW1uKQogIGVu ZAplbmQKCmNsYXNzIEJpc2hvcEZpbGxlciA8IEZpbGxlcgogIGRlZiBiaXNob3BfY29uc3RyYWlu dAogICAgb2N0ZXRfd2l0aF9vbmVzX2F0KEBjb2x1bW4pCiAgZW5kCmVuZAoKCmNsYXNzIExlZnRL bmlnaHQgPCBQaWVjZQogIGRlZiBwaWVjZV9jb25zdHJhaW50CiAgICBvY3RldF93aXRoX29uZXNf YXQoMSkKICBlbmQKICBkZWYga25pZ2h0X2NvbnN0cmFpbnQKICAgIG9jdGV0X3dpdGhfb25lc19h dCgqKDAuLkBjb2x1bW4pLnRvX2EpCiAgZW5kCiAgZGVmIHRvX3MKICAgICJMZWZ0IEtuaWdodCBh dCAje0Bjb2x1bW59IgogIGVuZAogIGRlZiBzeW1ib2wKICAgICdOJwogIGVuZAplbmQKCmNsYXNz IFJpZ2h0S25pZ2h0IDwgUGllY2UKICBkZWYgcGllY2VfY29uc3RyYWludAogICAgb2N0ZXRfd2l0 aF9vbmVzX2F0KDYpCiAgZW5kCiAgZGVmIGtuaWdodF9jb25zdHJhaW50CiAgICBvY3RldF93aXRo X29uZXNfYXQoKihAY29sdW1uLi43KS50b19hKQogIGVuZAogIGRlZiB0b19zCiAgICAiUmlnaHQg S25pZ2h0IGF0ICN7QGNvbHVtbn0iCiAgZW5kCiAgZGVmIHN5bWJvbAogICAgJ04nCiAgZW5kCmVu ZAoKY2xhc3MgTGVmdEJpc2hvcCA8IFBpZWNlCiAgZGVmIHBpZWNlX2NvbnN0cmFpbnQKICAgIG9j dGV0X3dpdGhfb25lc19hdCgyKQogIGVuZAogIGRlZiBiaXNob3BfY29sb3JfY29uc3RyYWludAog ICAgQGNvbHVtbiAlIDIgPT0gMCA/IFsxXSA6IFswXQogIGVuZAogIGRlZiBiaXNob3BfY29uc3Ry YWludAogICAgb2N0ZXRfd2l0aF9vbmVzX2F0KCooMC4uQGNvbHVtbikudG9fYSkKICBlbmQKICBk ZWYgdG9fcwogICAgIkxlZnQgQmlzaG9wIGF0ICN7QGNvbHVtbn0iCiAgZW5kCiAgZGVmIHN5bWJv bAogICAgJ0InCiAgZW5kCmVuZAoKY2xhc3MgUmlnaHRCaXNob3AgPCBQaWVjZQogIGRlZiBwaWVj ZV9jb25zdHJhaW50CiAgICBvY3RldF93aXRoX29uZXNfYXQoNSkKICBlbmQKICBkZWYgYmlzaG9w X2NvbG9yX2NvbnN0cmFpbnQKICAgIEBjb2x1bW4gJSAyID09IDAgPyBbMV0gOiBbMF0KICBlbmQK ICBkZWYgYmlzaG9wX2NvbnN0cmFpbnQKICAgIG9jdGV0X3dpdGhfb25lc19hdCgqKEBjb2x1bW4u LjcpLnRvX2EpCiAgZW5kCiAgZGVmIHRvX3MKICAgICJSaWdodCBCaXNob3AgYXQgI3tAY29sdW1u fSIKICBlbmQKICBkZWYgc3ltYm9sCiAgICAnQicKICBlbmQKZW5kCgpkZWYgdG9fYm9hcmQocGxh Y2VtZW50cykKICByZXN1bHQgPSBbXQogIHBsYWNlbWVudHMuZWFjaCBkbyB8cGxhY2VtZW50fAog ICAgcmVzdWx0W3BsYWNlbWVudC5jb2x1bW5dID0gcGxhY2VtZW50LnN5bWJvbCB1bmxlc3MgRmls bGVyID09PSBwbGFjZW1lbnQKICBlbmQKICByZXN1bHQuam9pbignJykKZW5kCgpwbGFjZW1lbnRz ID0gW10KMC51cHRvKDUpIHt8Y29sfCBwbGFjZW1lbnRzIDw8IExlZnRSb29rLm5ldyhjb2wpfQow LnVwdG8oNikge3xjb2x8IHBsYWNlbWVudHMgPDwgTGVmdEtuaWdodC5uZXcoY29sKSA8PCBMZWZ0 QmlzaG9wLm5ldyhjb2wpfQowLnVwdG8oNykge3xjb2x8IHBsYWNlbWVudHMgPDwgUXVlZW4ubmV3 KGNvbCl9CjEudXB0byg2KSB7fGNvbHwgcGxhY2VtZW50cyA8PCBSb29rRmlsbGVyLm5ldyhjb2wp IDw8IEtpbmcubmV3KGNvbCkgPDwgS25pZ2h0RmlsbGVyLm5ldyhjb2wpIDw8IEJpc2hvcEZpbGxl ci5uZXcoY29sKX0KMS51cHRvKDcpIHt8Y29sfCBwbGFjZW1lbnRzIDw8IFJpZ2h0S25pZ2h0Lm5l dyhjb2wpIDw8IFJpZ2h0QmlzaG9wLm5ldyhjb2wpfQoyLnVwdG8oNykge3xjb2x8IHBsYWNlbWVu dHMgPDwgUmlnaHRSb29rLm5ldyhjb2wpfQoKZCA9IERMWE1hdHJpeC5uZXcocGxhY2VtZW50cy5j b2xsZWN0IHt8cGxhY2VtZW50fCBwbGFjZW1lbnQudG9fZGx4X3Jvd30pCm4gPSAwCmQuc29sdXRp b25zIGRvIHxzb2x1dGlvbnwKICBwdXRzICJTb2x1dGlvbiAje259OiIKICBwdXRzIHRvX2JvYXJk KHNvbHV0aW9uLmNvbGxlY3R7fGluZGV4fCBwbGFjZW1lbnRzW2luZGV4XX0pCiAgbiArPSAxCmVu ZAo------ art_4992_15383776.1166380121405 Content-Type: application/octet-stream; name=dlx.rb Content-Transfer-Encoding: base64 X-Attachment-Id: f_evtsk7ta Content-Disposition: attachment; filename="dlx.rb" RElSRUNUSU9OUyA9IFs6bGVmdCwgOnJpZ2h0LCA6dXAsIDpkb3duXQoKY2xhc3MgTm9kZQoJYXR0 cl9hY2Nlc3NvciAqRElSRUNUSU9OUwoJZGVmIGluaXRpYWxpemUoYXR0cnMpCgkgIERJUkVDVElP TlMuZWFjaCBkbyB8ZGlyZWN0aW9ufAoJICAgIHNlbGYuc2VuZCgiI3tkaXJlY3Rpb24udG9fc309 IiwgYXR0cnNbZGlyZWN0aW9uXSkKCSAgZW5kCgllbmQKCWRlZiBhZGphY2VudF9ub2RlcyhkaXJl Y3Rpb24pCgkgIGN1cnJfbm9kZSA9IHNlbGYuc2VuZChkaXJlY3Rpb24pCgkgIHdoaWxlIHRydWUK CSAgICBicmVhayBpZiAoY3Vycl9ub2RlID09IHNlbGYpCgkgICAgeWllbGQgY3Vycl9ub2RlCgkg ICAgY3Vycl9ub2RlID0gY3Vycl9ub2RlLnNlbmQoZGlyZWN0aW9uKQoJICBlbmQKCWVuZAoJZGVm IGluc3BlY3QKCSAgdG9fcyArICIgIisgKERJUkVDVElPTlMuY29sbGVjdCB7fGRpcmVjdGlvbnwg IiN7ZGlyZWN0aW9uLnRvX3N9OiAje3NlbGYuc2VuZChkaXJlY3Rpb24pfSJ9LmpvaW4oIiAiKSkK CWVuZAplbmQKCmNsYXNzIEhlYWRlck5vZGUgPCBOb2RlCiAgYXR0cl9hY2Nlc3NvciA6bnVtX29u ZXMKICBhdHRyX3JlYWRlciA6Y29sCiAgZGVmIGluaXRpYWxpemUoYXR0cnMpCiAgICBAY29sID0g YXR0cnNbOmNvbF0KICAgIEBudW1fb25lcyA9IDAKICAgIHN1cGVyCiAgZW5kCiAgZGVmIHRvX3MK ICAgICI8SGVhZGVyICN7Y29sfT4iCiAgZW5kCmVuZAoKY2xhc3MgRW50cnlOb2RlIDwgTm9kZQog IGF0dHJfcmVhZGVyIDpyb3csIDpjb2wsIDpoZWFkZXIKICBkZWYgaW5pdGlhbGl6ZShhdHRycykK ICAgIEByb3cgPSBhdHRyc1s6cm93XQogICAgQGNvbCA9IGF0dHJzWzpjb2xdCiAgICBAaGVhZGVy ID0gYXR0cnNbOmhlYWRlcl0KICAgIHN1cGVyCiAgZW5kCiAgZGVmIHRvX3MKICAgICI8RW50cnkg YXQgKCN7cm93fSwgI3tjb2x9KT4iCiAgZW5kCmVuZAoKY2xhc3MgRExYTWF0cml4CiAgYXR0cl9y ZWFkZXIgOm1hc3Rlcl9ub2RlCiAgZGVmIGluaXRpYWxpemUobWF0cml4KQogICAgQG1hc3Rlcl9u b2RlID0gSGVhZGVyTm9kZS5uZXcoOmNvbCA9PiAtMSkKICAgIChAbWFzdGVyX25vZGUubGVmdCA9 ICgwLi4ubWF0cml4WzBdLnNpemUpLmluamVjdChAbWFzdGVyX25vZGUpIGRvIHxwcmV2aW91c19u b2RlLCBjb2x8CiAgICAgIHByZXZpb3VzX25vZGUucmlnaHQgPSBIZWFkZXJOb2RlLm5ldyg6Y29s ID0+IGNvbCwgOmxlZnQgPT4gcHJldmlvdXNfbm9kZSkKICAgIGVuZCkucmlnaHQgPSBAbWFzdGVy X25vZGUKCiAgICBoZWFkZXJzID0gW10KICAgIEBtYXN0ZXJfbm9kZS5hZGphY2VudF9ub2Rlcyg6 cmlnaHQpIGRvIHxub2RlfAogICAgICBoZWFkZXJzIDw8IG5vZGUKICAgIGVuZAogICAgdXBfbm9k ZXMgPSBoZWFkZXJzLmR1cAogICAgCiAgICBtYXRyaXguZWFjaF93aXRoX2luZGV4IGRvIHxyb3cs IHJvd19udW18CiAgICAgIG5vZGVzID0gW10KICAgICAgcm93LmVhY2hfd2l0aF9pbmRleCBkbyB8 Y29sLCBjb2xfbnVtfAogICAgICAgIGlmIGNvbD09MQogICAgICAgICAgdXBfbm9kZXNbY29sX251 bV0uZG93biA9IG5ld19ub2RlID0gRW50cnlOb2RlLm5ldyg6bGVmdCA9PiBub2Rlc1stMV0sIDp1 cCA9PiB1cF9ub2Rlc1tjb2xfbnVtXSwgOnJvdyA9PiByb3dfbnVtLCA6Y29sID0+IGNvbF9udW0s IDpoZWFkZXIgPT4gaGVhZGVyc1tjb2xfbnVtXSkKICAgICAgICAgIG5vZGVzWy0xXS5yaWdodCA9 IG5ld19ub2RlIGlmIG5vZGVzWy0xXQogICAgICAgICAgbmV3X25vZGUuaGVhZGVyLm51bV9vbmVz ICs9IDEKICAgICAgICAgIG5vZGVzIDw8IHVwX25vZGVzW2NvbF9udW1dID0gbmV3X25vZGUKICAg ICAgICBlbmQKICAgICAgZW5kCiAgICAgIGlmIG5vZGVzLnNpemUgPiAwCiAgICAgICAgbm9kZXNb MF0ubGVmdCA9IG5vZGVzWy0xXQogICAgICAgIG5vZGVzWy0xXS5yaWdodCA9IG5vZGVzWzBdCiAg ICAgIGVuZAogICAgZW5kCiAgICAoMC4uLm1hdHJpeFswXS5zaXplKS5lYWNoIGRvIHxjb2xfbnVt fAogICAgICB1cF9ub2Rlc1tjb2xfbnVtXS5kb3duID0gaGVhZGVyc1tjb2xfbnVtXQogICAgICBo ZWFkZXJzW2NvbF9udW1dLnVwID0gdXBfbm9kZXNbY29sX251bV0KICAgIGVuZAogIGVuZAogIGRl ZiBjb3ZlcihoZWFkZXIpCiAgICBoZWFkZXIubGVmdC5yaWdodCA9IGhlYWRlci5yaWdodAogICAg aGVhZGVyLnJpZ2h0LmxlZnQgPSBoZWFkZXIubGVmdAogICAgaGVhZGVyLmFkamFjZW50X25vZGVz KDpkb3duKSBkbyB8Y29sdW1uX25vZGV8CiAgICAgIGNvbHVtbl9ub2RlLmFkamFjZW50X25vZGVz KDpyaWdodCkgZG8gfHJvd19ub2RlfAogICAgICAgIHJvd19ub2RlLnVwLmRvd24gPSByb3dfbm9k ZS5kb3duCiAgICAgICAgcm93X25vZGUuZG93bi51cCA9IHJvd19ub2RlLnVwCiAgICAgICAgcm93 X25vZGUuaGVhZGVyLm51bV9vbmVzIC09IDEKICAgICAgZW5kCiAgICBlbmQKICBlbmQKICBkZWYg dW5jb3ZlcihoZWFkZXIpCiAgICBoZWFkZXIuYWRqYWNlbnRfbm9kZXMoOnVwKSBkbyB8Y29sdW1u X25vZGV8CiAgICAgIGNvbHVtbl9ub2RlLmFkamFjZW50X25vZGVzKDpsZWZ0KSBkbyB8cm93X25v ZGV8CiAgICAgICAgcm93X25vZGUudXAuZG93biA9IHJvd19ub2RlCiAgICAgICAgcm93X25vZGUu ZG93bi51cCA9IHJvd19ub2RlCiAgICAgICAgcm93X25vZGUuaGVhZGVyLm51bV9vbmVzICs9IDEK ICAgICAgZW5kCiAgICBlbmQKICAgIGhlYWRlci5sZWZ0LnJpZ2h0ID0gaGVhZGVyCiAgICBoZWFk ZXIucmlnaHQubGVmdCA9IGhlYWRlcgogIGVuZAogIGRlZiBzb2x1dGlvbnMoc29sdXRpb24gPSBb XSkKICAgIHNvbHV0aW9uID0gc29sdXRpb24uZHVwCiAgICBpZiBtYXN0ZXJfbm9kZS5yaWdodCA9 PSBtYXN0ZXJfbm9kZQogICAgICB5aWVsZCBzb2x1dGlvbgogICAgICByZXR1cm4KICAgIGVuZAoK ICAgIHNwYXJzZXN0X2hlYWRlciA9IG1hc3Rlcl9ub2RlLnJpZ2h0CiAgICBtYXN0ZXJfbm9kZS5h ZGphY2VudF9ub2Rlcyg6cmlnaHQpIGRvIHxoZWFkZXJ8CiAgICAgIHNwYXJzZXN0X2hlYWRlciA9 IGhlYWRlciBpZiAoaGVhZGVyLm51bV9vbmVzIDwgc3BhcnNlc3RfaGVhZGVyLm51bV9vbmVzKQog ICAgZW5kCiAgICAKICAgIGNvdmVyKHNwYXJzZXN0X2hlYWRlcikKICAgIAogICAgc29sdXRpb24g PDwgbmlsCiAgICBzcGFyc2VzdF9oZWFkZXIuYWRqYWNlbnRfbm9kZXMoOmRvd24pIGRvIHxjb2x1 bW5fbm9kZXwKICAgICAgc29sdXRpb25bLTFdID0gY29sdW1uX25vZGUucm93CiAgICAgIGNvbHVt bl9ub2RlLmFkamFjZW50X25vZGVzKDpyaWdodCkgZG8gfHJvd19ub2RlfAogICAgICAgIGNvdmVy KHJvd19ub2RlLmhlYWRlcikKICAgICAgZW5kCiAgICAgIHNvbHV0aW9ucyhzb2x1dGlvbikgZG8g fHNvbHwKICAgICAgICB5aWVsZCBzb2wKICAgICAgZW5kCiAgICAgIGNvbHVtbl9ub2RlLmFkamFj ZW50X25vZGVzKDpsZWZ0KSBkbyB8cm93X25vZGV8CiAgICAgICAgdW5jb3Zlcihyb3dfbm9kZS5o ZWFkZXIpCiAgICAgIGVuZAogICAgZW5kCiAgICAKICAgIHVuY292ZXIoc3BhcnNlc3RfaGVhZGVy KQogIGVuZAplbmQK ------ art_4992_15383776.1166380121405--