[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[3.2/3.3/3.4 regression] alias problem during loop pass on m68k



>Category:       other
>Synopsis:       [3.2/3.3/3.4 regression] alias problem during loop pass on m68k
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Class:          wrong-code
>Submitter-Id:   net
>Originator:     zippel@linux-m68k.org
>Release:        3.2/3.3/3.4
>Environment:
linux-m68k
>Description:
The message repeated here was originall sent to:
http://gcc.gnu.org/ml/gcc/2003-03/msg00574.html

Hi,

I'm currently trying to debug a problem, which causes a few problems for
Debian/m68k. The problem is present at least since 3.2 and also in
latest tree, but it seems not to be in 3.0.
I've put a test case at http://www.xs4all.nl/~zippel/sha.i, it's a
precompiled example from coreutils. Here is the important part:

void
sha_process_block (const void *buffer, size_t len, struct sha_ctx *ctx)
{
  const md5_uint32 *words = buffer;
  size_t nwords = len / sizeof (md5_uint32);
  const md5_uint32 *endp = words + nwords;
  md5_uint32 x[16];

  [..]
  while (words < endp)
    {
      md5_uint32 tm;
      int t;

      for (t = 0; t < 16; t++)
        {
          x[t] = (*words);
          words++;
        }

First it looks at the small loop and replaces x[t] with a pointer:

-(insn 86 84 87 (set (mem/s:SI (plus:SI (plus:SI (mult:SI (reg/v:SI 47)
-                        (const_int 4 [0x4]))
-                    (reg/f:SI 14 %a6))
-                (const_int -64 [0xffffffc0])) [5 x S4 A16])
-        (mem:SI (reg/v/f:SI 32) [5 S4 A16])) 29 {*m68k.md:976} (nil)
+(insn 86 84 2470 (set (mem/s:SI (reg/f:SI 1137) [5 x S4 A16])
+        (mem:SI (reg/v/f:SI 32) [5 S4 A16])) -1 (nil)
+    (nil))
+
+(insn 2470 86 87 (set (reg/f:SI 1137)
+        (plus:SI (reg/f:SI 1137)
+            (const_int 4 [0x4]))) -1 (nil)
     (nil))

The problem is now when it looks at the large loop, the x array is only
read after this and the optimizer thinks now it can move the array out
of the loop. AFAICS it goes wrong in loop.c:load_mems(), it does an
alias analysis with the already modified instructions, but then it uses
loop_info->store_mems to test for dependency tests, but this list still
contains the old reference.
At this point I really could need some help, how this should be fixed
correctly. Any ideas?
>How-To-Repeat:

>Fix:

>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="sha.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="sha.i"

dHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBtZDVfdWlu
dDMyOwpzdHJ1Y3Qgc2hhX2N0eAp7CiAgbWQ1X3VpbnQzMiBBOwogIG1kNV91aW50MzIgQjsKICBt
ZDVfdWludDMyIEM7CiAgbWQ1X3VpbnQzMiBEOwogIG1kNV91aW50MzIgRTsKCiAgbWQ1X3VpbnQz
MiB0b3RhbFsyXTsKICBtZDVfdWludDMyIGJ1ZmxlbjsKICBjaGFyIGJ1ZmZlclsxMjhdOwp9OwoK
dm9pZApzaGFfcHJvY2Vzc19ibG9jayAoY29uc3Qgdm9pZCAqYnVmZmVyLCBzaXplX3QgbGVuLCBz
dHJ1Y3Qgc2hhX2N0eCAqY3R4KQp7CiAgY29uc3QgbWQ1X3VpbnQzMiAqd29yZHMgPSBidWZmZXI7
CiAgc2l6ZV90IG53b3JkcyA9IGxlbiAvIHNpemVvZiAobWQ1X3VpbnQzMik7CiAgY29uc3QgbWQ1
X3VpbnQzMiAqZW5kcCA9IHdvcmRzICsgbndvcmRzOwogIG1kNV91aW50MzIgeFsxNl07CiAgbWQ1
X3VpbnQzMiBhID0gY3R4LT5BOwogIG1kNV91aW50MzIgYiA9IGN0eC0+QjsKICBtZDVfdWludDMy
IGMgPSBjdHgtPkM7CiAgbWQ1X3VpbnQzMiBkID0gY3R4LT5EOwogIG1kNV91aW50MzIgZSA9IGN0
eC0+RTsKCgoKCiAgY3R4LT50b3RhbFswXSArPSBsZW47CiAgaWYgKGN0eC0+dG90YWxbMF0gPCBs
ZW4pCiAgICArK2N0eC0+dG90YWxbMV07CiAgd2hpbGUgKHdvcmRzIDwgZW5kcCkKICAgIHsKICAg
ICAgbWQ1X3VpbnQzMiB0bTsKICAgICAgaW50IHQ7CgogICAgICBmb3IgKHQgPSAwOyB0IDwgMTY7
IHQrKykKICAgICAgICB7CiAgICAgICAgICB4W3RdID0gKCp3b3Jkcyk7CiAgICAgICAgICB3b3Jk
cysrOwogICAgICAgIH0KCiAgICAgIGRvIHsgZSArPSAoICgoYSkgPDwgKDUpKSB8ICgoYSkgPj4g
KDMyLSg1KSkpICkgKyAoIGQgXiAoIGIgJiAoIGMgXiBkICkgKSApICsgMHg1YTgyNzk5OUwgKyB4
WyAwXTsgYiA9ICggKChiKSA8PCAoMzApKSB8ICgoYikgPj4gKDMyLSgzMCkpKSApOyB9IHdoaWxl
KDApOwogICAgICBkbyB7IGQgKz0gKCAoKGUpIDw8ICg1KSkgfCAoKGUpID4+ICgzMi0oNSkpKSAp
ICsgKCBjIF4gKCBhICYgKCBiIF4gYyApICkgKSArIDB4NWE4Mjc5OTlMICsgeFsgMV07IGEgPSAo
ICgoYSkgPDwgKDMwKSkgfCAoKGEpID4+ICgzMi0oMzApKSkgKTsgfSB3aGlsZSgwKTsKICAgICAg
ZG8geyBjICs9ICggKChkKSA8PCAoNSkpIHwgKChkKSA+PiAoMzItKDUpKSkgKSArICggYiBeICgg
ZSAmICggYSBeIGIgKSApICkgKyAweDVhODI3OTk5TCArIHhbIDJdOyBlID0gKCAoKGUpIDw8ICgz
MCkpIHwgKChlKSA+PiAoMzItKDMwKSkpICk7IH0gd2hpbGUoMCk7CiAgICAgIGRvIHsgYiArPSAo
ICgoYykgPDwgKDUpKSB8ICgoYykgPj4gKDMyLSg1KSkpICkgKyAoIGEgXiAoIGQgJiAoIGUgXiBh
ICkgKSApICsgMHg1YTgyNzk5OUwgKyB4WyAzXTsgZCA9ICggKChkKSA8PCAoMzApKSB8ICgoZCkg
Pj4gKDMyLSgzMCkpKSApOyB9IHdoaWxlKDApOwogICAgICBkbyB7IGEgKz0gKCAoKGIpIDw8ICg1
KSkgfCAoKGIpID4+ICgzMi0oNSkpKSApICsgKCBlIF4gKCBjICYgKCBkIF4gZSApICkgKSArIDB4
NWE4Mjc5OTlMICsgeFsgNF07IGMgPSAoICgoYykgPDwgKDMwKSkgfCAoKGMpID4+ICgzMi0oMzAp
KSkgKTsgfSB3aGlsZSgwKTsKICAgICAgZG8geyBlICs9ICggKChhKSA8PCAoNSkpIHwgKChhKSA+
PiAoMzItKDUpKSkgKSArICggZCBeICggYiAmICggYyBeIGQgKSApICkgKyAweDVhODI3OTk5TCAr
IHhbIDVdOyBiID0gKCAoKGIpIDw8ICgzMCkpIHwgKChiKSA+PiAoMzItKDMwKSkpICk7IH0gd2hp
bGUoMCk7CiAgICAgIGRvIHsgZCArPSAoICgoZSkgPDwgKDUpKSB8ICgoZSkgPj4gKDMyLSg1KSkp
ICkgKyAoIGMgXiAoIGEgJiAoIGIgXiBjICkgKSApICsgMHg1YTgyNzk5OUwgKyB4WyA2XTsgYSA9
ICggKChhKSA8PCAoMzApKSB8ICgoYSkgPj4gKDMyLSgzMCkpKSApOyB9IHdoaWxlKDApOwogICAg
ICBkbyB7IGMgKz0gKCAoKGQpIDw8ICg1KSkgfCAoKGQpID4+ICgzMi0oNSkpKSApICsgKCBiIF4g
KCBlICYgKCBhIF4gYiApICkgKSArIDB4NWE4Mjc5OTlMICsgeFsgN107IGUgPSAoICgoZSkgPDwg
KDMwKSkgfCAoKGUpID4+ICgzMi0oMzApKSkgKTsgfSB3aGlsZSgwKTsKICAgICAgZG8geyBiICs9
ICggKChjKSA8PCAoNSkpIHwgKChjKSA+PiAoMzItKDUpKSkgKSArICggYSBeICggZCAmICggZSBe
IGEgKSApICkgKyAweDVhODI3OTk5TCArIHhbIDhdOyBkID0gKCAoKGQpIDw8ICgzMCkpIHwgKChk
KSA+PiAoMzItKDMwKSkpICk7IH0gd2hpbGUoMCk7CiAgICAgIGRvIHsgYSArPSAoICgoYikgPDwg
KDUpKSB8ICgoYikgPj4gKDMyLSg1KSkpICkgKyAoIGUgXiAoIGMgJiAoIGQgXiBlICkgKSApICsg
MHg1YTgyNzk5OUwgKyB4WyA5XTsgYyA9ICggKChjKSA8PCAoMzApKSB8ICgoYykgPj4gKDMyLSgz
MCkpKSApOyB9IHdoaWxlKDApOwogICAgICBkbyB7IGUgKz0gKCAoKGEpIDw8ICg1KSkgfCAoKGEp
ID4+ICgzMi0oNSkpKSApICsgKCBkIF4gKCBiICYgKCBjIF4gZCApICkgKSArIDB4NWE4Mjc5OTlM
ICsgeFsxMF07IGIgPSAoICgoYikgPDwgKDMwKSkgfCAoKGIpID4+ICgzMi0oMzApKSkgKTsgfSB3
aGlsZSgwKTsKICAgICAgZG8geyBkICs9ICggKChlKSA8PCAoNSkpIHwgKChlKSA+PiAoMzItKDUp
KSkgKSArICggYyBeICggYSAmICggYiBeIGMgKSApICkgKyAweDVhODI3OTk5TCArIHhbMTFdOyBh
ID0gKCAoKGEpIDw8ICgzMCkpIHwgKChhKSA+PiAoMzItKDMwKSkpICk7IH0gd2hpbGUoMCk7CiAg
ICAgIGRvIHsgYyArPSAoICgoZCkgPDwgKDUpKSB8ICgoZCkgPj4gKDMyLSg1KSkpICkgKyAoIGIg
XiAoIGUgJiAoIGEgXiBiICkgKSApICsgMHg1YTgyNzk5OUwgKyB4WzEyXTsgZSA9ICggKChlKSA8
PCAoMzApKSB8ICgoZSkgPj4gKDMyLSgzMCkpKSApOyB9IHdoaWxlKDApOwogICAgICBkbyB7IGIg
Kz0gKCAoKGMpIDw8ICg1KSkgfCAoKGMpID4+ICgzMi0oNSkpKSApICsgKCBhIF4gKCBkICYgKCBl
IF4gYSApICkgKSArIDB4NWE4Mjc5OTlMICsgeFsxM107IGQgPSAoICgoZCkgPDwgKDMwKSkgfCAo
KGQpID4+ICgzMi0oMzApKSkgKTsgfSB3aGlsZSgwKTsKICAgICAgZG8geyBhICs9ICggKChiKSA8
PCAoNSkpIHwgKChiKSA+PiAoMzItKDUpKSkgKSArICggZSBeICggYyAmICggZCBeIGUgKSApICkg
KyAweDVhODI3OTk5TCArIHhbMTRdOyBjID0gKCAoKGMpIDw8ICgzMCkpIHwgKChjKSA+PiAoMzIt
KDMwKSkpICk7IH0gd2hpbGUoMCk7CiAgICAgIGRvIHsgZSArPSAoICgoYSkgPDwgKDUpKSB8ICgo
YSkgPj4gKDMyLSg1KSkpICkgKyAoIGQgXiAoIGIgJiAoIGMgXiBkICkgKSApICsgMHg1YTgyNzk5
OUwgKyB4WzE1XTsgYiA9ICggKChiKSA8PCAoMzApKSB8ICgoYikgPj4gKDMyLSgzMCkpKSApOyB9
IHdoaWxlKDApOwogICAgICBkbyB7IGQgKz0gKCAoKGUpIDw8ICg1KSkgfCAoKGUpID4+ICgzMi0o
NSkpKSApICsgKCBjIF4gKCBhICYgKCBiIF4gYyApICkgKSArIDB4NWE4Mjc5OTlMICsgKCB0bSA9
IHhbMTYmMHgwZl0gXiB4WygxNiAtMTQpJjB4MGZdIF4geFsoMTYgLTgpJjB4MGZdIF4geFsoMTYg
LTMpJjB4MGZdICwgKHhbMTYmMHgwZl0gPSAoICgodG0pIDw8ICgxKSkgfCAoKHRtKSA+PiAoMzIt
KDEpKSkgKSkgKTsgYSA9ICggKChhKSA8PCAoMzApKSB8ICgoYSkgPj4gKDMyLSgzMCkpKSApOyB9
IHdoaWxlKDApOwogICAgICBkbyB7IGMgKz0gKCAoKGQpIDw8ICg1KSkgfCAoKGQpID4+ICgzMi0o
NSkpKSApICsgKCBiIF4gKCBlICYgKCBhIF4gYiApICkgKSArIDB4NWE4Mjc5OTlMICsgKCB0bSA9
IHhbMTcmMHgwZl0gXiB4WygxNyAtMTQpJjB4MGZdIF4geFsoMTcgLTgpJjB4MGZdIF4geFsoMTcg
LTMpJjB4MGZdICwgKHhbMTcmMHgwZl0gPSAoICgodG0pIDw8ICgxKSkgfCAoKHRtKSA+PiAoMzIt
KDEpKSkgKSkgKTsgZSA9ICggKChlKSA8PCAoMzApKSB8ICgoZSkgPj4gKDMyLSgzMCkpKSApOyB9
IHdoaWxlKDApOwogICAgICBkbyB7IGIgKz0gKCAoKGMpIDw8ICg1KSkgfCAoKGMpID4+ICgzMi0o
NSkpKSApICsgKCBhIF4gKCBkICYgKCBlIF4gYSApICkgKSArIDB4NWE4Mjc5OTlMICsgKCB0bSA9
IHhbMTgmMHgwZl0gXiB4WygxOCAtMTQpJjB4MGZdIF4geFsoMTggLTgpJjB4MGZdIF4geFsoMTgg
LTMpJjB4MGZdICwgKHhbMTgmMHgwZl0gPSAoICgodG0pIDw8ICgxKSkgfCAoKHRtKSA+PiAoMzIt
KDEpKSkgKSkgKTsgZCA9ICggKChkKSA8PCAoMzApKSB8ICgoZCkgPj4gKDMyLSgzMCkpKSApOyB9
IHdoaWxlKDApOwogICAgICBkbyB7IGEgKz0gKCAoKGIpIDw8ICg1KSkgfCAoKGIpID4+ICgzMi0o
NSkpKSApICsgKCBlIF4gKCBjICYgKCBkIF4gZSApICkgKSArIDB4NWE4Mjc5OTlMICsgKCB0bSA9
IHhbMTkmMHgwZl0gXiB4WygxOSAtMTQpJjB4MGZdIF4geFsoMTkgLTgpJjB4MGZdIF4geFsoMTkg
LTMpJjB4MGZdICwgKHhbMTkmMHgwZl0gPSAoICgodG0pIDw8ICgxKSkgfCAoKHRtKSA+PiAoMzIt
KDEpKSkgKSkgKTsgYyA9ICggKChjKSA8PCAoMzApKSB8ICgoYykgPj4gKDMyLSgzMCkpKSApOyB9
IHdoaWxlKDApOwogICAgICBkbyB7IGUgKz0gKCAoKGEpIDw8ICg1KSkgfCAoKGEpID4+ICgzMi0o
NSkpKSApICsgKGIgXiBjIF4gZCkgKyAweDZlZDllYmExTCArICggdG0gPSB4WzIwJjB4MGZdIF4g
eFsoMjAgLTE0KSYweDBmXSBeIHhbKDIwIC04KSYweDBmXSBeIHhbKDIwIC0zKSYweDBmXSAsICh4
WzIwJjB4MGZdID0gKCAoKHRtKSA8PCAoMSkpIHwgKCh0bSkgPj4gKDMyLSgxKSkpICkpICk7IGIg
PSAoICgoYikgPDwgKDMwKSkgfCAoKGIpID4+ICgzMi0oMzApKSkgKTsgfSB3aGlsZSgwKTsKICAg
ICAgZG8geyBkICs9ICggKChlKSA8PCAoNSkpIHwgKChlKSA+PiAoMzItKDUpKSkgKSArIChhIF4g
YiBeIGMpICsgMHg2ZWQ5ZWJhMUwgKyAoIHRtID0geFsyMSYweDBmXSBeIHhbKDIxIC0xNCkmMHgw
Zl0gXiB4WygyMSAtOCkmMHgwZl0gXiB4WygyMSAtMykmMHgwZl0gLCAoeFsyMSYweDBmXSA9ICgg
KCh0bSkgPDwgKDEpKSB8ICgodG0pID4+ICgzMi0oMSkpKSApKSApOyBhID0gKCAoKGEpIDw8ICgz
MCkpIHwgKChhKSA+PiAoMzItKDMwKSkpICk7IH0gd2hpbGUoMCk7CiAgICAgIGRvIHsgYyArPSAo
ICgoZCkgPDwgKDUpKSB8ICgoZCkgPj4gKDMyLSg1KSkpICkgKyAoZSBeIGEgXiBiKSArIDB4NmVk
OWViYTFMICsgKCB0bSA9IHhbMjImMHgwZl0gXiB4WygyMiAtMTQpJjB4MGZdIF4geFsoMjIgLTgp
JjB4MGZdIF4geFsoMjIgLTMpJjB4MGZdICwgKHhbMjImMHgwZl0gPSAoICgodG0pIDw8ICgxKSkg
fCAoKHRtKSA+PiAoMzItKDEpKSkgKSkgKTsgZSA9ICggKChlKSA8PCAoMzApKSB8ICgoZSkgPj4g
KDMyLSgzMCkpKSApOyB9IHdoaWxlKDApOwogICAgICBkbyB7IGIgKz0gKCAoKGMpIDw8ICg1KSkg
fCAoKGMpID4+ICgzMi0oNSkpKSApICsgKGQgXiBlIF4gYSkgKyAweDZlZDllYmExTCArICggdG0g
PSB4WzIzJjB4MGZdIF4geFsoMjMgLTE0KSYweDBmXSBeIHhbKDIzIC04KSYweDBmXSBeIHhbKDIz
IC0zKSYweDBmXSAsICh4WzIzJjB4MGZdID0gKCAoKHRtKSA8PCAoMSkpIHwgKCh0bSkgPj4gKDMy
LSgxKSkpICkpICk7IGQgPSAoICgoZCkgPDwgKDMwKSkgfCAoKGQpID4+ICgzMi0oMzApKSkgKTsg
fSB3aGlsZSgwKTsKICAgICAgZG8geyBhICs9ICggKChiKSA8PCAoNSkpIHwgKChiKSA+PiAoMzIt
KDUpKSkgKSArIChjIF4gZCBeIGUpICsgMHg2ZWQ5ZWJhMUwgKyAoIHRtID0geFsyNCYweDBmXSBe
IHhbKDI0IC0xNCkmMHgwZl0gXiB4WygyNCAtOCkmMHgwZl0gXiB4WygyNCAtMykmMHgwZl0gLCAo
eFsyNCYweDBmXSA9ICggKCh0bSkgPDwgKDEpKSB8ICgodG0pID4+ICgzMi0oMSkpKSApKSApOyBj
ID0gKCAoKGMpIDw8ICgzMCkpIHwgKChjKSA+PiAoMzItKDMwKSkpICk7IH0gd2hpbGUoMCk7CiAg
ICAgIGRvIHsgZSArPSAoICgoYSkgPDwgKDUpKSB8ICgoYSkgPj4gKDMyLSg1KSkpICkgKyAoYiBe
IGMgXiBkKSArIDB4NmVkOWViYTFMICsgKCB0bSA9IHhbMjUmMHgwZl0gXiB4WygyNSAtMTQpJjB4
MGZdIF4geFsoMjUgLTgpJjB4MGZdIF4geFsoMjUgLTMpJjB4MGZdICwgKHhbMjUmMHgwZl0gPSAo
ICgodG0pIDw8ICgxKSkgfCAoKHRtKSA+PiAoMzItKDEpKSkgKSkgKTsgYiA9ICggKChiKSA8PCAo
MzApKSB8ICgoYikgPj4gKDMyLSgzMCkpKSApOyB9IHdoaWxlKDApOwogICAgICBkbyB7IGQgKz0g
KCAoKGUpIDw8ICg1KSkgfCAoKGUpID4+ICgzMi0oNSkpKSApICsgKGEgXiBiIF4gYykgKyAweDZl
ZDllYmExTCArICggdG0gPSB4WzI2JjB4MGZdIF4geFsoMjYgLTE0KSYweDBmXSBeIHhbKDI2IC04
KSYweDBmXSBeIHhbKDI2IC0zKSYweDBmXSAsICh4WzI2JjB4MGZdID0gKCAoKHRtKSA8PCAoMSkp
IHwgKCh0bSkgPj4gKDMyLSgxKSkpICkpICk7IGEgPSAoICgoYSkgPDwgKDMwKSkgfCAoKGEpID4+
ICgzMi0oMzApKSkgKTsgfSB3aGlsZSgwKTsKICAgICAgZG8geyBjICs9ICggKChkKSA8PCAoNSkp
IHwgKChkKSA+PiAoMzItKDUpKSkgKSArIChlIF4gYSBeIGIpICsgMHg2ZWQ5ZWJhMUwgKyAoIHRt
ID0geFsyNyYweDBmXSBeIHhbKDI3IC0xNCkmMHgwZl0gXiB4WygyNyAtOCkmMHgwZl0gXiB4Wygy
NyAtMykmMHgwZl0gLCAoeFsyNyYweDBmXSA9ICggKCh0bSkgPDwgKDEpKSB8ICgodG0pID4+ICgz
Mi0oMSkpKSApKSApOyBlID0gKCAoKGUpIDw8ICgzMCkpIHwgKChlKSA+PiAoMzItKDMwKSkpICk7
IH0gd2hpbGUoMCk7CiAgICAgIGRvIHsgYiArPSAoICgoYykgPDwgKDUpKSB8ICgoYykgPj4gKDMy
LSg1KSkpICkgKyAoZCBeIGUgXiBhKSArIDB4NmVkOWViYTFMICsgKCB0bSA9IHhbMjgmMHgwZl0g
XiB4WygyOCAtMTQpJjB4MGZdIF4geFsoMjggLTgpJjB4MGZdIF4geFsoMjggLTMpJjB4MGZdICwg
KHhbMjgmMHgwZl0gPSAoICgodG0pIDw8ICgxKSkgfCAoKHRtKSA+PiAoMzItKDEpKSkgKSkgKTsg
ZCA9ICggKChkKSA8PCAoMzApKSB8ICgoZCkgPj4gKDMyLSgzMCkpKSApOyB9IHdoaWxlKDApOwog
ICAgICBkbyB7IGEgKz0gKCAoKGIpIDw8ICg1KSkgfCAoKGIpID4+ICgzMi0oNSkpKSApICsgKGMg
XiBkIF4gZSkgKyAweDZlZDllYmExTCArICggdG0gPSB4WzI5JjB4MGZdIF4geFsoMjkgLTE0KSYw
eDBmXSBeIHhbKDI5IC04KSYweDBmXSBeIHhbKDI5IC0zKSYweDBmXSAsICh4WzI5JjB4MGZdID0g
KCAoKHRtKSA8PCAoMSkpIHwgKCh0bSkgPj4gKDMyLSgxKSkpICkpICk7IGMgPSAoICgoYykgPDwg
KDMwKSkgfCAoKGMpID4+ICgzMi0oMzApKSkgKTsgfSB3aGlsZSgwKTsKICAgICAgZG8geyBlICs9
ICggKChhKSA8PCAoNSkpIHwgKChhKSA+PiAoMzItKDUpKSkgKSArIChiIF4gYyBeIGQpICsgMHg2
ZWQ5ZWJhMUwgKyAoIHRtID0geFszMCYweDBmXSBeIHhbKDMwIC0xNCkmMHgwZl0gXiB4WygzMCAt
OCkmMHgwZl0gXiB4WygzMCAtMykmMHgwZl0gLCAoeFszMCYweDBmXSA9ICggKCh0bSkgPDwgKDEp
KSB8ICgodG0pID4+ICgzMi0oMSkpKSApKSApOyBiID0gKCAoKGIpIDw8ICgzMCkpIHwgKChiKSA+
PiAoMzItKDMwKSkpICk7IH0gd2hpbGUoMCk7CiAgICAgIGRvIHsgZCArPSAoICgoZSkgPDwgKDUp
KSB8ICgoZSkgPj4gKDMyLSg1KSkpICkgKyAoYSBeIGIgXiBjKSArIDB4NmVkOWViYTFMICsgKCB0
bSA9IHhbMzEmMHgwZl0gXiB4WygzMSAtMTQpJjB4MGZdIF4geFsoMzEgLTgpJjB4MGZdIF4geFso
MzEgLTMpJjB4MGZdICwgKHhbMzEmMHgwZl0gPSAoICgodG0pIDw8ICgxKSkgfCAoKHRtKSA+PiAo
MzItKDEpKSkgKSkgKTsgYSA9ICggKChhKSA8PCAoMzApKSB8ICgoYSkgPj4gKDMyLSgzMCkpKSAp
OyB9IHdoaWxlKDApOwogICAgICBkbyB7IGMgKz0gKCAoKGQpIDw8ICg1KSkgfCAoKGQpID4+ICgz
Mi0oNSkpKSApICsgKGUgXiBhIF4gYikgKyAweDZlZDllYmExTCArICggdG0gPSB4WzMyJjB4MGZd
IF4geFsoMzIgLTE0KSYweDBmXSBeIHhbKDMyIC04KSYweDBmXSBeIHhbKDMyIC0zKSYweDBmXSAs
ICh4WzMyJjB4MGZdID0gKCAoKHRtKSA8PCAoMSkpIHwgKCh0bSkgPj4gKDMyLSgxKSkpICkpICk7
IGUgPSAoICgoZSkgPDwgKDMwKSkgfCAoKGUpID4+ICgzMi0oMzApKSkgKTsgfSB3aGlsZSgwKTsK
ICAgICAgZG8geyBiICs9ICggKChjKSA8PCAoNSkpIHwgKChjKSA+PiAoMzItKDUpKSkgKSArIChk
IF4gZSBeIGEpICsgMHg2ZWQ5ZWJhMUwgKyAoIHRtID0geFszMyYweDBmXSBeIHhbKDMzIC0xNCkm
MHgwZl0gXiB4WygzMyAtOCkmMHgwZl0gXiB4WygzMyAtMykmMHgwZl0gLCAoeFszMyYweDBmXSA9
ICggKCh0bSkgPDwgKDEpKSB8ICgodG0pID4+ICgzMi0oMSkpKSApKSApOyBkID0gKCAoKGQpIDw8
ICgzMCkpIHwgKChkKSA+PiAoMzItKDMwKSkpICk7IH0gd2hpbGUoMCk7CiAgICAgIGRvIHsgYSAr
PSAoICgoYikgPDwgKDUpKSB8ICgoYikgPj4gKDMyLSg1KSkpICkgKyAoYyBeIGQgXiBlKSArIDB4
NmVkOWViYTFMICsgKCB0bSA9IHhbMzQmMHgwZl0gXiB4WygzNCAtMTQpJjB4MGZdIF4geFsoMzQg
LTgpJjB4MGZdIF4geFsoMzQgLTMpJjB4MGZdICwgKHhbMzQmMHgwZl0gPSAoICgodG0pIDw8ICgx
KSkgfCAoKHRtKSA+PiAoMzItKDEpKSkgKSkgKTsgYyA9ICggKChjKSA8PCAoMzApKSB8ICgoYykg
Pj4gKDMyLSgzMCkpKSApOyB9IHdoaWxlKDApOwogICAgICBkbyB7IGUgKz0gKCAoKGEpIDw8ICg1
KSkgfCAoKGEpID4+ICgzMi0oNSkpKSApICsgKGIgXiBjIF4gZCkgKyAweDZlZDllYmExTCArICgg
dG0gPSB4WzM1JjB4MGZdIF4geFsoMzUgLTE0KSYweDBmXSBeIHhbKDM1IC04KSYweDBmXSBeIHhb
KDM1IC0zKSYweDBmXSAsICh4WzM1JjB4MGZdID0gKCAoKHRtKSA8PCAoMSkpIHwgKCh0bSkgPj4g
KDMyLSgxKSkpICkpICk7IGIgPSAoICgoYikgPDwgKDMwKSkgfCAoKGIpID4+ICgzMi0oMzApKSkg
KTsgfSB3aGlsZSgwKTsKICAgICAgZG8geyBkICs9ICggKChlKSA8PCAoNSkpIHwgKChlKSA+PiAo
MzItKDUpKSkgKSArIChhIF4gYiBeIGMpICsgMHg2ZWQ5ZWJhMUwgKyAoIHRtID0geFszNiYweDBm
XSBeIHhbKDM2IC0xNCkmMHgwZl0gXiB4WygzNiAtOCkmMHgwZl0gXiB4WygzNiAtMykmMHgwZl0g
LCAoeFszNiYweDBmXSA9ICggKCh0bSkgPDwgKDEpKSB8ICgodG0pID4+ICgzMi0oMSkpKSApKSAp
OyBhID0gKCAoKGEpIDw8ICgzMCkpIHwgKChhKSA+PiAoMzItKDMwKSkpICk7IH0gd2hpbGUoMCk7
CiAgICAgIGRvIHsgYyArPSAoICgoZCkgPDwgKDUpKSB8ICgoZCkgPj4gKDMyLSg1KSkpICkgKyAo
ZSBeIGEgXiBiKSArIDB4NmVkOWViYTFMICsgKCB0bSA9IHhbMzcmMHgwZl0gXiB4WygzNyAtMTQp
JjB4MGZdIF4geFsoMzcgLTgpJjB4MGZdIF4geFsoMzcgLTMpJjB4MGZdICwgKHhbMzcmMHgwZl0g
PSAoICgodG0pIDw8ICgxKSkgfCAoKHRtKSA+PiAoMzItKDEpKSkgKSkgKTsgZSA9ICggKChlKSA8
PCAoMzApKSB8ICgoZSkgPj4gKDMyLSgzMCkpKSApOyB9IHdoaWxlKDApOwogICAgICBkbyB7IGIg
Kz0gKCAoKGMpIDw8ICg1KSkgfCAoKGMpID4+ICgzMi0oNSkpKSApICsgKGQgXiBlIF4gYSkgKyAw
eDZlZDllYmExTCArICggdG0gPSB4WzM4JjB4MGZdIF4geFsoMzggLTE0KSYweDBmXSBeIHhbKDM4
IC04KSYweDBmXSBeIHhbKDM4IC0zKSYweDBmXSAsICh4WzM4JjB4MGZdID0gKCAoKHRtKSA8PCAo
MSkpIHwgKCh0bSkgPj4gKDMyLSgxKSkpICkpICk7IGQgPSAoICgoZCkgPDwgKDMwKSkgfCAoKGQp
ID4+ICgzMi0oMzApKSkgKTsgfSB3aGlsZSgwKTsKICAgICAgZG8geyBhICs9ICggKChiKSA8PCAo
NSkpIHwgKChiKSA+PiAoMzItKDUpKSkgKSArIChjIF4gZCBeIGUpICsgMHg2ZWQ5ZWJhMUwgKyAo
IHRtID0geFszOSYweDBmXSBeIHhbKDM5IC0xNCkmMHgwZl0gXiB4WygzOSAtOCkmMHgwZl0gXiB4
WygzOSAtMykmMHgwZl0gLCAoeFszOSYweDBmXSA9ICggKCh0bSkgPDwgKDEpKSB8ICgodG0pID4+
ICgzMi0oMSkpKSApKSApOyBjID0gKCAoKGMpIDw8ICgzMCkpIHwgKChjKSA+PiAoMzItKDMwKSkp
ICk7IH0gd2hpbGUoMCk7CiAgICAgIGRvIHsgZSArPSAoICgoYSkgPDwgKDUpKSB8ICgoYSkgPj4g
KDMyLSg1KSkpICkgKyAoICggYiAmIGMgKSB8ICggZCAmICggYiB8IGMgKSApICkgKyAweDhmMWJi
Y2RjTCArICggdG0gPSB4WzQwJjB4MGZdIF4geFsoNDAgLTE0KSYweDBmXSBeIHhbKDQwIC04KSYw
eDBmXSBeIHhbKDQwIC0zKSYweDBmXSAsICh4WzQwJjB4MGZdID0gKCAoKHRtKSA8PCAoMSkpIHwg
KCh0bSkgPj4gKDMyLSgxKSkpICkpICk7IGIgPSAoICgoYikgPDwgKDMwKSkgfCAoKGIpID4+ICgz
Mi0oMzApKSkgKTsgfSB3aGlsZSgwKTsKICAgICAgZG8geyBkICs9ICggKChlKSA8PCAoNSkpIHwg
KChlKSA+PiAoMzItKDUpKSkgKSArICggKCBhICYgYiApIHwgKCBjICYgKCBhIHwgYiApICkgKSAr
IDB4OGYxYmJjZGNMICsgKCB0bSA9IHhbNDEmMHgwZl0gXiB4Wyg0MSAtMTQpJjB4MGZdIF4geFso
NDEgLTgpJjB4MGZdIF4geFsoNDEgLTMpJjB4MGZdICwgKHhbNDEmMHgwZl0gPSAoICgodG0pIDw8
ICgxKSkgfCAoKHRtKSA+PiAoMzItKDEpKSkgKSkgKTsgYSA9ICggKChhKSA8PCAoMzApKSB8ICgo
YSkgPj4gKDMyLSgzMCkpKSApOyB9IHdoaWxlKDApOwogICAgICBkbyB7IGMgKz0gKCAoKGQpIDw8
ICg1KSkgfCAoKGQpID4+ICgzMi0oNSkpKSApICsgKCAoIGUgJiBhICkgfCAoIGIgJiAoIGUgfCBh
ICkgKSApICsgMHg4ZjFiYmNkY0wgKyAoIHRtID0geFs0MiYweDBmXSBeIHhbKDQyIC0xNCkmMHgw
Zl0gXiB4Wyg0MiAtOCkmMHgwZl0gXiB4Wyg0MiAtMykmMHgwZl0gLCAoeFs0MiYweDBmXSA9ICgg
KCh0bSkgPDwgKDEpKSB8ICgodG0pID4+ICgzMi0oMSkpKSApKSApOyBlID0gKCAoKGUpIDw8ICgz
MCkpIHwgKChlKSA+PiAoMzItKDMwKSkpICk7IH0gd2hpbGUoMCk7CiAgICAgIGRvIHsgYiArPSAo
ICgoYykgPDwgKDUpKSB8ICgoYykgPj4gKDMyLSg1KSkpICkgKyAoICggZCAmIGUgKSB8ICggYSAm
ICggZCB8IGUgKSApICkgKyAweDhmMWJiY2RjTCArICggdG0gPSB4WzQzJjB4MGZdIF4geFsoNDMg
LTE0KSYweDBmXSBeIHhbKDQzIC04KSYweDBmXSBeIHhbKDQzIC0zKSYweDBmXSAsICh4WzQzJjB4
MGZdID0gKCAoKHRtKSA8PCAoMSkpIHwgKCh0bSkgPj4gKDMyLSgxKSkpICkpICk7IGQgPSAoICgo
ZCkgPDwgKDMwKSkgfCAoKGQpID4+ICgzMi0oMzApKSkgKTsgfSB3aGlsZSgwKTsKICAgICAgZG8g
eyBhICs9ICggKChiKSA8PCAoNSkpIHwgKChiKSA+PiAoMzItKDUpKSkgKSArICggKCBjICYgZCAp
IHwgKCBlICYgKCBjIHwgZCApICkgKSArIDB4OGYxYmJjZGNMICsgKCB0bSA9IHhbNDQmMHgwZl0g
XiB4Wyg0NCAtMTQpJjB4MGZdIF4geFsoNDQgLTgpJjB4MGZdIF4geFsoNDQgLTMpJjB4MGZdICwg
KHhbNDQmMHgwZl0gPSAoICgodG0pIDw8ICgxKSkgfCAoKHRtKSA+PiAoMzItKDEpKSkgKSkgKTsg
YyA9ICggKChjKSA8PCAoMzApKSB8ICgoYykgPj4gKDMyLSgzMCkpKSApOyB9IHdoaWxlKDApOwog
ICAgICBkbyB7IGUgKz0gKCAoKGEpIDw8ICg1KSkgfCAoKGEpID4+ICgzMi0oNSkpKSApICsgKCAo
IGIgJiBjICkgfCAoIGQgJiAoIGIgfCBjICkgKSApICsgMHg4ZjFiYmNkY0wgKyAoIHRtID0geFs0
NSYweDBmXSBeIHhbKDQ1IC0xNCkmMHgwZl0gXiB4Wyg0NSAtOCkmMHgwZl0gXiB4Wyg0NSAtMykm
MHgwZl0gLCAoeFs0NSYweDBmXSA9ICggKCh0bSkgPDwgKDEpKSB8ICgodG0pID4+ICgzMi0oMSkp
KSApKSApOyBiID0gKCAoKGIpIDw8ICgzMCkpIHwgKChiKSA+PiAoMzItKDMwKSkpICk7IH0gd2hp
bGUoMCk7CiAgICAgIGRvIHsgZCArPSAoICgoZSkgPDwgKDUpKSB8ICgoZSkgPj4gKDMyLSg1KSkp
ICkgKyAoICggYSAmIGIgKSB8ICggYyAmICggYSB8IGIgKSApICkgKyAweDhmMWJiY2RjTCArICgg
dG0gPSB4WzQ2JjB4MGZdIF4geFsoNDYgLTE0KSYweDBmXSBeIHhbKDQ2IC04KSYweDBmXSBeIHhb
KDQ2IC0zKSYweDBmXSAsICh4WzQ2JjB4MGZdID0gKCAoKHRtKSA8PCAoMSkpIHwgKCh0bSkgPj4g
KDMyLSgxKSkpICkpICk7IGEgPSAoICgoYSkgPDwgKDMwKSkgfCAoKGEpID4+ICgzMi0oMzApKSkg
KTsgfSB3aGlsZSgwKTsKICAgICAgZG8geyBjICs9ICggKChkKSA8PCAoNSkpIHwgKChkKSA+PiAo
MzItKDUpKSkgKSArICggKCBlICYgYSApIHwgKCBiICYgKCBlIHwgYSApICkgKSArIDB4OGYxYmJj
ZGNMICsgKCB0bSA9IHhbNDcmMHgwZl0gXiB4Wyg0NyAtMTQpJjB4MGZdIF4geFsoNDcgLTgpJjB4
MGZdIF4geFsoNDcgLTMpJjB4MGZdICwgKHhbNDcmMHgwZl0gPSAoICgodG0pIDw8ICgxKSkgfCAo
KHRtKSA+PiAoMzItKDEpKSkgKSkgKTsgZSA9ICggKChlKSA8PCAoMzApKSB8ICgoZSkgPj4gKDMy
LSgzMCkpKSApOyB9IHdoaWxlKDApOwogICAgICBkbyB7IGIgKz0gKCAoKGMpIDw8ICg1KSkgfCAo
KGMpID4+ICgzMi0oNSkpKSApICsgKCAoIGQgJiBlICkgfCAoIGEgJiAoIGQgfCBlICkgKSApICsg
MHg4ZjFiYmNkY0wgKyAoIHRtID0geFs0OCYweDBmXSBeIHhbKDQ4IC0xNCkmMHgwZl0gXiB4Wyg0
OCAtOCkmMHgwZl0gXiB4Wyg0OCAtMykmMHgwZl0gLCAoeFs0OCYweDBmXSA9ICggKCh0bSkgPDwg
KDEpKSB8ICgodG0pID4+ICgzMi0oMSkpKSApKSApOyBkID0gKCAoKGQpIDw8ICgzMCkpIHwgKChk
KSA+PiAoMzItKDMwKSkpICk7IH0gd2hpbGUoMCk7CiAgICAgIGRvIHsgYSArPSAoICgoYikgPDwg
KDUpKSB8ICgoYikgPj4gKDMyLSg1KSkpICkgKyAoICggYyAmIGQgKSB8ICggZSAmICggYyB8IGQg
KSApICkgKyAweDhmMWJiY2RjTCArICggdG0gPSB4WzQ5JjB4MGZdIF4geFsoNDkgLTE0KSYweDBm
XSBeIHhbKDQ5IC04KSYweDBmXSBeIHhbKDQ5IC0zKSYweDBmXSAsICh4WzQ5JjB4MGZdID0gKCAo
KHRtKSA8PCAoMSkpIHwgKCh0bSkgPj4gKDMyLSgxKSkpICkpICk7IGMgPSAoICgoYykgPDwgKDMw
KSkgfCAoKGMpID4+ICgzMi0oMzApKSkgKTsgfSB3aGlsZSgwKTsKICAgICAgZG8geyBlICs9ICgg
KChhKSA8PCAoNSkpIHwgKChhKSA+PiAoMzItKDUpKSkgKSArICggKCBiICYgYyApIHwgKCBkICYg
KCBiIHwgYyApICkgKSArIDB4OGYxYmJjZGNMICsgKCB0bSA9IHhbNTAmMHgwZl0gXiB4Wyg1MCAt
MTQpJjB4MGZdIF4geFsoNTAgLTgpJjB4MGZdIF4geFsoNTAgLTMpJjB4MGZdICwgKHhbNTAmMHgw
Zl0gPSAoICgodG0pIDw8ICgxKSkgfCAoKHRtKSA+PiAoMzItKDEpKSkgKSkgKTsgYiA9ICggKChi
KSA8PCAoMzApKSB8ICgoYikgPj4gKDMyLSgzMCkpKSApOyB9IHdoaWxlKDApOwogICAgICBkbyB7
IGQgKz0gKCAoKGUpIDw8ICg1KSkgfCAoKGUpID4+ICgzMi0oNSkpKSApICsgKCAoIGEgJiBiICkg
fCAoIGMgJiAoIGEgfCBiICkgKSApICsgMHg4ZjFiYmNkY0wgKyAoIHRtID0geFs1MSYweDBmXSBe
IHhbKDUxIC0xNCkmMHgwZl0gXiB4Wyg1MSAtOCkmMHgwZl0gXiB4Wyg1MSAtMykmMHgwZl0gLCAo
eFs1MSYweDBmXSA9ICggKCh0bSkgPDwgKDEpKSB8ICgodG0pID4+ICgzMi0oMSkpKSApKSApOyBh
ID0gKCAoKGEpIDw8ICgzMCkpIHwgKChhKSA+PiAoMzItKDMwKSkpICk7IH0gd2hpbGUoMCk7CiAg
ICAgIGRvIHsgYyArPSAoICgoZCkgPDwgKDUpKSB8ICgoZCkgPj4gKDMyLSg1KSkpICkgKyAoICgg
ZSAmIGEgKSB8ICggYiAmICggZSB8IGEgKSApICkgKyAweDhmMWJiY2RjTCArICggdG0gPSB4WzUy
JjB4MGZdIF4geFsoNTIgLTE0KSYweDBmXSBeIHhbKDUyIC04KSYweDBmXSBeIHhbKDUyIC0zKSYw
eDBmXSAsICh4WzUyJjB4MGZdID0gKCAoKHRtKSA8PCAoMSkpIHwgKCh0bSkgPj4gKDMyLSgxKSkp
ICkpICk7IGUgPSAoICgoZSkgPDwgKDMwKSkgfCAoKGUpID4+ICgzMi0oMzApKSkgKTsgfSB3aGls
ZSgwKTsKICAgICAgZG8geyBiICs9ICggKChjKSA8PCAoNSkpIHwgKChjKSA+PiAoMzItKDUpKSkg
KSArICggKCBkICYgZSApIHwgKCBhICYgKCBkIHwgZSApICkgKSArIDB4OGYxYmJjZGNMICsgKCB0
bSA9IHhbNTMmMHgwZl0gXiB4Wyg1MyAtMTQpJjB4MGZdIF4geFsoNTMgLTgpJjB4MGZdIF4geFso
NTMgLTMpJjB4MGZdICwgKHhbNTMmMHgwZl0gPSAoICgodG0pIDw8ICgxKSkgfCAoKHRtKSA+PiAo
MzItKDEpKSkgKSkgKTsgZCA9ICggKChkKSA8PCAoMzApKSB8ICgoZCkgPj4gKDMyLSgzMCkpKSAp
OyB9IHdoaWxlKDApOwogICAgICBkbyB7IGEgKz0gKCAoKGIpIDw8ICg1KSkgfCAoKGIpID4+ICgz
Mi0oNSkpKSApICsgKCAoIGMgJiBkICkgfCAoIGUgJiAoIGMgfCBkICkgKSApICsgMHg4ZjFiYmNk
Y0wgKyAoIHRtID0geFs1NCYweDBmXSBeIHhbKDU0IC0xNCkmMHgwZl0gXiB4Wyg1NCAtOCkmMHgw
Zl0gXiB4Wyg1NCAtMykmMHgwZl0gLCAoeFs1NCYweDBmXSA9ICggKCh0bSkgPDwgKDEpKSB8ICgo
dG0pID4+ICgzMi0oMSkpKSApKSApOyBjID0gKCAoKGMpIDw8ICgzMCkpIHwgKChjKSA+PiAoMzIt
KDMwKSkpICk7IH0gd2hpbGUoMCk7CiAgICAgIGRvIHsgZSArPSAoICgoYSkgPDwgKDUpKSB8ICgo
YSkgPj4gKDMyLSg1KSkpICkgKyAoICggYiAmIGMgKSB8ICggZCAmICggYiB8IGMgKSApICkgKyAw
eDhmMWJiY2RjTCArICggdG0gPSB4WzU1JjB4MGZdIF4geFsoNTUgLTE0KSYweDBmXSBeIHhbKDU1
IC04KSYweDBmXSBeIHhbKDU1IC0zKSYweDBmXSAsICh4WzU1JjB4MGZdID0gKCAoKHRtKSA8PCAo
MSkpIHwgKCh0bSkgPj4gKDMyLSgxKSkpICkpICk7IGIgPSAoICgoYikgPDwgKDMwKSkgfCAoKGIp
ID4+ICgzMi0oMzApKSkgKTsgfSB3aGlsZSgwKTsKICAgICAgZG8geyBkICs9ICggKChlKSA8PCAo
NSkpIHwgKChlKSA+PiAoMzItKDUpKSkgKSArICggKCBhICYgYiApIHwgKCBjICYgKCBhIHwgYiAp
ICkgKSArIDB4OGYxYmJjZGNMICsgKCB0bSA9IHhbNTYmMHgwZl0gXiB4Wyg1NiAtMTQpJjB4MGZd
IF4geFsoNTYgLTgpJjB4MGZdIF4geFsoNTYgLTMpJjB4MGZdICwgKHhbNTYmMHgwZl0gPSAoICgo
dG0pIDw8ICgxKSkgfCAoKHRtKSA+PiAoMzItKDEpKSkgKSkgKTsgYSA9ICggKChhKSA8PCAoMzAp
KSB8ICgoYSkgPj4gKDMyLSgzMCkpKSApOyB9IHdoaWxlKDApOwogICAgICBkbyB7IGMgKz0gKCAo
KGQpIDw8ICg1KSkgfCAoKGQpID4+ICgzMi0oNSkpKSApICsgKCAoIGUgJiBhICkgfCAoIGIgJiAo
IGUgfCBhICkgKSApICsgMHg4ZjFiYmNkY0wgKyAoIHRtID0geFs1NyYweDBmXSBeIHhbKDU3IC0x
NCkmMHgwZl0gXiB4Wyg1NyAtOCkmMHgwZl0gXiB4Wyg1NyAtMykmMHgwZl0gLCAoeFs1NyYweDBm
XSA9ICggKCh0bSkgPDwgKDEpKSB8ICgodG0pID4+ICgzMi0oMSkpKSApKSApOyBlID0gKCAoKGUp
IDw8ICgzMCkpIHwgKChlKSA+PiAoMzItKDMwKSkpICk7IH0gd2hpbGUoMCk7CiAgICAgIGRvIHsg
YiArPSAoICgoYykgPDwgKDUpKSB8ICgoYykgPj4gKDMyLSg1KSkpICkgKyAoICggZCAmIGUgKSB8
ICggYSAmICggZCB8IGUgKSApICkgKyAweDhmMWJiY2RjTCArICggdG0gPSB4WzU4JjB4MGZdIF4g
eFsoNTggLTE0KSYweDBmXSBeIHhbKDU4IC04KSYweDBmXSBeIHhbKDU4IC0zKSYweDBmXSAsICh4
WzU4JjB4MGZdID0gKCAoKHRtKSA8PCAoMSkpIHwgKCh0bSkgPj4gKDMyLSgxKSkpICkpICk7IGQg
PSAoICgoZCkgPDwgKDMwKSkgfCAoKGQpID4+ICgzMi0oMzApKSkgKTsgfSB3aGlsZSgwKTsKICAg
ICAgZG8geyBhICs9ICggKChiKSA8PCAoNSkpIHwgKChiKSA+PiAoMzItKDUpKSkgKSArICggKCBj
ICYgZCApIHwgKCBlICYgKCBjIHwgZCApICkgKSArIDB4OGYxYmJjZGNMICsgKCB0bSA9IHhbNTkm
MHgwZl0gXiB4Wyg1OSAtMTQpJjB4MGZdIF4geFsoNTkgLTgpJjB4MGZdIF4geFsoNTkgLTMpJjB4
MGZdICwgKHhbNTkmMHgwZl0gPSAoICgodG0pIDw8ICgxKSkgfCAoKHRtKSA+PiAoMzItKDEpKSkg
KSkgKTsgYyA9ICggKChjKSA8PCAoMzApKSB8ICgoYykgPj4gKDMyLSgzMCkpKSApOyB9IHdoaWxl
KDApOwogICAgICBkbyB7IGUgKz0gKCAoKGEpIDw8ICg1KSkgfCAoKGEpID4+ICgzMi0oNSkpKSAp
ICsgKGIgXiBjIF4gZCkgKyAweGNhNjJjMWQ2TCArICggdG0gPSB4WzYwJjB4MGZdIF4geFsoNjAg
LTE0KSYweDBmXSBeIHhbKDYwIC04KSYweDBmXSBeIHhbKDYwIC0zKSYweDBmXSAsICh4WzYwJjB4
MGZdID0gKCAoKHRtKSA8PCAoMSkpIHwgKCh0bSkgPj4gKDMyLSgxKSkpICkpICk7IGIgPSAoICgo
YikgPDwgKDMwKSkgfCAoKGIpID4+ICgzMi0oMzApKSkgKTsgfSB3aGlsZSgwKTsKICAgICAgZG8g
eyBkICs9ICggKChlKSA8PCAoNSkpIHwgKChlKSA+PiAoMzItKDUpKSkgKSArIChhIF4gYiBeIGMp
ICsgMHhjYTYyYzFkNkwgKyAoIHRtID0geFs2MSYweDBmXSBeIHhbKDYxIC0xNCkmMHgwZl0gXiB4
Wyg2MSAtOCkmMHgwZl0gXiB4Wyg2MSAtMykmMHgwZl0gLCAoeFs2MSYweDBmXSA9ICggKCh0bSkg
PDwgKDEpKSB8ICgodG0pID4+ICgzMi0oMSkpKSApKSApOyBhID0gKCAoKGEpIDw8ICgzMCkpIHwg
KChhKSA+PiAoMzItKDMwKSkpICk7IH0gd2hpbGUoMCk7CiAgICAgIGRvIHsgYyArPSAoICgoZCkg
PDwgKDUpKSB8ICgoZCkgPj4gKDMyLSg1KSkpICkgKyAoZSBeIGEgXiBiKSArIDB4Y2E2MmMxZDZM
ICsgKCB0bSA9IHhbNjImMHgwZl0gXiB4Wyg2MiAtMTQpJjB4MGZdIF4geFsoNjIgLTgpJjB4MGZd
IF4geFsoNjIgLTMpJjB4MGZdICwgKHhbNjImMHgwZl0gPSAoICgodG0pIDw8ICgxKSkgfCAoKHRt
KSA+PiAoMzItKDEpKSkgKSkgKTsgZSA9ICggKChlKSA8PCAoMzApKSB8ICgoZSkgPj4gKDMyLSgz
MCkpKSApOyB9IHdoaWxlKDApOwogICAgICBkbyB7IGIgKz0gKCAoKGMpIDw8ICg1KSkgfCAoKGMp
ID4+ICgzMi0oNSkpKSApICsgKGQgXiBlIF4gYSkgKyAweGNhNjJjMWQ2TCArICggdG0gPSB4WzYz
JjB4MGZdIF4geFsoNjMgLTE0KSYweDBmXSBeIHhbKDYzIC04KSYweDBmXSBeIHhbKDYzIC0zKSYw
eDBmXSAsICh4WzYzJjB4MGZdID0gKCAoKHRtKSA8PCAoMSkpIHwgKCh0bSkgPj4gKDMyLSgxKSkp
ICkpICk7IGQgPSAoICgoZCkgPDwgKDMwKSkgfCAoKGQpID4+ICgzMi0oMzApKSkgKTsgfSB3aGls
ZSgwKTsKICAgICAgZG8geyBhICs9ICggKChiKSA8PCAoNSkpIHwgKChiKSA+PiAoMzItKDUpKSkg
KSArIChjIF4gZCBeIGUpICsgMHhjYTYyYzFkNkwgKyAoIHRtID0geFs2NCYweDBmXSBeIHhbKDY0
IC0xNCkmMHgwZl0gXiB4Wyg2NCAtOCkmMHgwZl0gXiB4Wyg2NCAtMykmMHgwZl0gLCAoeFs2NCYw
eDBmXSA9ICggKCh0bSkgPDwgKDEpKSB8ICgodG0pID4+ICgzMi0oMSkpKSApKSApOyBjID0gKCAo
KGMpIDw8ICgzMCkpIHwgKChjKSA+PiAoMzItKDMwKSkpICk7IH0gd2hpbGUoMCk7CiAgICAgIGRv
IHsgZSArPSAoICgoYSkgPDwgKDUpKSB8ICgoYSkgPj4gKDMyLSg1KSkpICkgKyAoYiBeIGMgXiBk
KSArIDB4Y2E2MmMxZDZMICsgKCB0bSA9IHhbNjUmMHgwZl0gXiB4Wyg2NSAtMTQpJjB4MGZdIF4g
eFsoNjUgLTgpJjB4MGZdIF4geFsoNjUgLTMpJjB4MGZdICwgKHhbNjUmMHgwZl0gPSAoICgodG0p
IDw8ICgxKSkgfCAoKHRtKSA+PiAoMzItKDEpKSkgKSkgKTsgYiA9ICggKChiKSA8PCAoMzApKSB8
ICgoYikgPj4gKDMyLSgzMCkpKSApOyB9IHdoaWxlKDApOwogICAgICBkbyB7IGQgKz0gKCAoKGUp
IDw8ICg1KSkgfCAoKGUpID4+ICgzMi0oNSkpKSApICsgKGEgXiBiIF4gYykgKyAweGNhNjJjMWQ2
TCArICggdG0gPSB4WzY2JjB4MGZdIF4geFsoNjYgLTE0KSYweDBmXSBeIHhbKDY2IC04KSYweDBm
XSBeIHhbKDY2IC0zKSYweDBmXSAsICh4WzY2JjB4MGZdID0gKCAoKHRtKSA8PCAoMSkpIHwgKCh0
bSkgPj4gKDMyLSgxKSkpICkpICk7IGEgPSAoICgoYSkgPDwgKDMwKSkgfCAoKGEpID4+ICgzMi0o
MzApKSkgKTsgfSB3aGlsZSgwKTsKICAgICAgZG8geyBjICs9ICggKChkKSA8PCAoNSkpIHwgKChk
KSA+PiAoMzItKDUpKSkgKSArIChlIF4gYSBeIGIpICsgMHhjYTYyYzFkNkwgKyAoIHRtID0geFs2
NyYweDBmXSBeIHhbKDY3IC0xNCkmMHgwZl0gXiB4Wyg2NyAtOCkmMHgwZl0gXiB4Wyg2NyAtMykm
MHgwZl0gLCAoeFs2NyYweDBmXSA9ICggKCh0bSkgPDwgKDEpKSB8ICgodG0pID4+ICgzMi0oMSkp
KSApKSApOyBlID0gKCAoKGUpIDw8ICgzMCkpIHwgKChlKSA+PiAoMzItKDMwKSkpICk7IH0gd2hp
bGUoMCk7CiAgICAgIGRvIHsgYiArPSAoICgoYykgPDwgKDUpKSB8ICgoYykgPj4gKDMyLSg1KSkp
ICkgKyAoZCBeIGUgXiBhKSArIDB4Y2E2MmMxZDZMICsgKCB0bSA9IHhbNjgmMHgwZl0gXiB4Wyg2
OCAtMTQpJjB4MGZdIF4geFsoNjggLTgpJjB4MGZdIF4geFsoNjggLTMpJjB4MGZdICwgKHhbNjgm
MHgwZl0gPSAoICgodG0pIDw8ICgxKSkgfCAoKHRtKSA+PiAoMzItKDEpKSkgKSkgKTsgZCA9ICgg
KChkKSA8PCAoMzApKSB8ICgoZCkgPj4gKDMyLSgzMCkpKSApOyB9IHdoaWxlKDApOwogICAgICBk
byB7IGEgKz0gKCAoKGIpIDw8ICg1KSkgfCAoKGIpID4+ICgzMi0oNSkpKSApICsgKGMgXiBkIF4g
ZSkgKyAweGNhNjJjMWQ2TCArICggdG0gPSB4WzY5JjB4MGZdIF4geFsoNjkgLTE0KSYweDBmXSBe
IHhbKDY5IC04KSYweDBmXSBeIHhbKDY5IC0zKSYweDBmXSAsICh4WzY5JjB4MGZdID0gKCAoKHRt
KSA8PCAoMSkpIHwgKCh0bSkgPj4gKDMyLSgxKSkpICkpICk7IGMgPSAoICgoYykgPDwgKDMwKSkg
fCAoKGMpID4+ICgzMi0oMzApKSkgKTsgfSB3aGlsZSgwKTsKICAgICAgZG8geyBlICs9ICggKChh
KSA8PCAoNSkpIHwgKChhKSA+PiAoMzItKDUpKSkgKSArIChiIF4gYyBeIGQpICsgMHhjYTYyYzFk
NkwgKyAoIHRtID0geFs3MCYweDBmXSBeIHhbKDcwIC0xNCkmMHgwZl0gXiB4Wyg3MCAtOCkmMHgw
Zl0gXiB4Wyg3MCAtMykmMHgwZl0gLCAoeFs3MCYweDBmXSA9ICggKCh0bSkgPDwgKDEpKSB8ICgo
dG0pID4+ICgzMi0oMSkpKSApKSApOyBiID0gKCAoKGIpIDw8ICgzMCkpIHwgKChiKSA+PiAoMzIt
KDMwKSkpICk7IH0gd2hpbGUoMCk7CiAgICAgIGRvIHsgZCArPSAoICgoZSkgPDwgKDUpKSB8ICgo
ZSkgPj4gKDMyLSg1KSkpICkgKyAoYSBeIGIgXiBjKSArIDB4Y2E2MmMxZDZMICsgKCB0bSA9IHhb
NzEmMHgwZl0gXiB4Wyg3MSAtMTQpJjB4MGZdIF4geFsoNzEgLTgpJjB4MGZdIF4geFsoNzEgLTMp
JjB4MGZdICwgKHhbNzEmMHgwZl0gPSAoICgodG0pIDw8ICgxKSkgfCAoKHRtKSA+PiAoMzItKDEp
KSkgKSkgKTsgYSA9ICggKChhKSA8PCAoMzApKSB8ICgoYSkgPj4gKDMyLSgzMCkpKSApOyB9IHdo
aWxlKDApOwogICAgICBkbyB7IGMgKz0gKCAoKGQpIDw8ICg1KSkgfCAoKGQpID4+ICgzMi0oNSkp
KSApICsgKGUgXiBhIF4gYikgKyAweGNhNjJjMWQ2TCArICggdG0gPSB4WzcyJjB4MGZdIF4geFso
NzIgLTE0KSYweDBmXSBeIHhbKDcyIC04KSYweDBmXSBeIHhbKDcyIC0zKSYweDBmXSAsICh4Wzcy
JjB4MGZdID0gKCAoKHRtKSA8PCAoMSkpIHwgKCh0bSkgPj4gKDMyLSgxKSkpICkpICk7IGUgPSAo
ICgoZSkgPDwgKDMwKSkgfCAoKGUpID4+ICgzMi0oMzApKSkgKTsgfSB3aGlsZSgwKTsKICAgICAg
ZG8geyBiICs9ICggKChjKSA8PCAoNSkpIHwgKChjKSA+PiAoMzItKDUpKSkgKSArIChkIF4gZSBe
IGEpICsgMHhjYTYyYzFkNkwgKyAoIHRtID0geFs3MyYweDBmXSBeIHhbKDczIC0xNCkmMHgwZl0g
XiB4Wyg3MyAtOCkmMHgwZl0gXiB4Wyg3MyAtMykmMHgwZl0gLCAoeFs3MyYweDBmXSA9ICggKCh0
bSkgPDwgKDEpKSB8ICgodG0pID4+ICgzMi0oMSkpKSApKSApOyBkID0gKCAoKGQpIDw8ICgzMCkp
IHwgKChkKSA+PiAoMzItKDMwKSkpICk7IH0gd2hpbGUoMCk7CiAgICAgIGRvIHsgYSArPSAoICgo
YikgPDwgKDUpKSB8ICgoYikgPj4gKDMyLSg1KSkpICkgKyAoYyBeIGQgXiBlKSArIDB4Y2E2MmMx
ZDZMICsgKCB0bSA9IHhbNzQmMHgwZl0gXiB4Wyg3NCAtMTQpJjB4MGZdIF4geFsoNzQgLTgpJjB4
MGZdIF4geFsoNzQgLTMpJjB4MGZdICwgKHhbNzQmMHgwZl0gPSAoICgodG0pIDw8ICgxKSkgfCAo
KHRtKSA+PiAoMzItKDEpKSkgKSkgKTsgYyA9ICggKChjKSA8PCAoMzApKSB8ICgoYykgPj4gKDMy
LSgzMCkpKSApOyB9IHdoaWxlKDApOwogICAgICBkbyB7IGUgKz0gKCAoKGEpIDw8ICg1KSkgfCAo
KGEpID4+ICgzMi0oNSkpKSApICsgKGIgXiBjIF4gZCkgKyAweGNhNjJjMWQ2TCArICggdG0gPSB4
Wzc1JjB4MGZdIF4geFsoNzUgLTE0KSYweDBmXSBeIHhbKDc1IC04KSYweDBmXSBeIHhbKDc1IC0z
KSYweDBmXSAsICh4Wzc1JjB4MGZdID0gKCAoKHRtKSA8PCAoMSkpIHwgKCh0bSkgPj4gKDMyLSgx
KSkpICkpICk7IGIgPSAoICgoYikgPDwgKDMwKSkgfCAoKGIpID4+ICgzMi0oMzApKSkgKTsgfSB3
aGlsZSgwKTsKICAgICAgZG8geyBkICs9ICggKChlKSA8PCAoNSkpIHwgKChlKSA+PiAoMzItKDUp
KSkgKSArIChhIF4gYiBeIGMpICsgMHhjYTYyYzFkNkwgKyAoIHRtID0geFs3NiYweDBmXSBeIHhb
KDc2IC0xNCkmMHgwZl0gXiB4Wyg3NiAtOCkmMHgwZl0gXiB4Wyg3NiAtMykmMHgwZl0gLCAoeFs3
NiYweDBmXSA9ICggKCh0bSkgPDwgKDEpKSB8ICgodG0pID4+ICgzMi0oMSkpKSApKSApOyBhID0g
KCAoKGEpIDw8ICgzMCkpIHwgKChhKSA+PiAoMzItKDMwKSkpICk7IH0gd2hpbGUoMCk7CiAgICAg
IGRvIHsgYyArPSAoICgoZCkgPDwgKDUpKSB8ICgoZCkgPj4gKDMyLSg1KSkpICkgKyAoZSBeIGEg
XiBiKSArIDB4Y2E2MmMxZDZMICsgKCB0bSA9IHhbNzcmMHgwZl0gXiB4Wyg3NyAtMTQpJjB4MGZd
IF4geFsoNzcgLTgpJjB4MGZdIF4geFsoNzcgLTMpJjB4MGZdICwgKHhbNzcmMHgwZl0gPSAoICgo
dG0pIDw8ICgxKSkgfCAoKHRtKSA+PiAoMzItKDEpKSkgKSkgKTsgZSA9ICggKChlKSA8PCAoMzAp
KSB8ICgoZSkgPj4gKDMyLSgzMCkpKSApOyB9IHdoaWxlKDApOwogICAgICBkbyB7IGIgKz0gKCAo
KGMpIDw8ICg1KSkgfCAoKGMpID4+ICgzMi0oNSkpKSApICsgKGQgXiBlIF4gYSkgKyAweGNhNjJj
MWQ2TCArICggdG0gPSB4Wzc4JjB4MGZdIF4geFsoNzggLTE0KSYweDBmXSBeIHhbKDc4IC04KSYw
eDBmXSBeIHhbKDc4IC0zKSYweDBmXSAsICh4Wzc4JjB4MGZdID0gKCAoKHRtKSA8PCAoMSkpIHwg
KCh0bSkgPj4gKDMyLSgxKSkpICkpICk7IGQgPSAoICgoZCkgPDwgKDMwKSkgfCAoKGQpID4+ICgz
Mi0oMzApKSkgKTsgfSB3aGlsZSgwKTsKICAgICAgZG8geyBhICs9ICggKChiKSA8PCAoNSkpIHwg
KChiKSA+PiAoMzItKDUpKSkgKSArIChjIF4gZCBeIGUpICsgMHhjYTYyYzFkNkwgKyAoIHRtID0g
eFs3OSYweDBmXSBeIHhbKDc5IC0xNCkmMHgwZl0gXiB4Wyg3OSAtOCkmMHgwZl0gXiB4Wyg3OSAt
MykmMHgwZl0gLCAoeFs3OSYweDBmXSA9ICggKCh0bSkgPDwgKDEpKSB8ICgodG0pID4+ICgzMi0o
MSkpKSApKSApOyBjID0gKCAoKGMpIDw8ICgzMCkpIHwgKChjKSA+PiAoMzItKDMwKSkpICk7IH0g
d2hpbGUoMCk7CgogICAgICBhID0gY3R4LT5BICs9IGE7CiAgICAgIGIgPSBjdHgtPkIgKz0gYjsK
ICAgICAgYyA9IGN0eC0+QyArPSBjOwogICAgICBkID0gY3R4LT5EICs9IGQ7CiAgICAgIGUgPSBj
dHgtPkUgKz0gZTsKICAgIH0KfQo=



Reply to: