Lyogdmk6c2V0IHRzPTggc3RzPTQgc3c9NDoKICoKICogVklNIC0gVmkgSU1wcm92ZWQJYnkgQnJhbSBNb29sZW5hYXIKICoKICogRG8gIjpoZWxwIHVnYW5kYSIgIGluIFZpbSB0byByZWFkIGNvcHlpbmcgYW5kIHVzYWdlIGNvbmRpdGlvbnMuCiAqIERvICI6aGVscCBjcmVkaXRzIiBpbiBWaW0gdG8gc2VlIGEgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkLgogKiBTZWUgUkVBRE1FLnR4dCBmb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIFZpbSBzb3VyY2UgY29kZS4KICovCgojaW5jbHVkZSAidmltLmgiCgojaWZuZGVmIEhBTkdVTF9ERUZBVUxUX0tFWUJPQVJECiMgZGVmaW5lIEhBTkdVTF9ERUZBVUxUX0tFWUJPQVJEIDMKI2VuZGlmCgojZGVmaW5lIEFVVE9NQVRBX05FVwkJMAojZGVmaW5lIEFVVE9NQVRBX0NPUlJFQ1QJMQojZGVmaW5lIEFVVE9NQVRBX1NQRUNJQUwJMgojZGVmaW5lIEFVVE9NQVRBX0NPUlJFQ1RfTkVXCTMKI2RlZmluZSBBVVRPTUFUQV9FUlJPUgkJNAojZGVmaW5lIEFVVE9NQVRBX05VTEwJCTUKCiNkZWZpbmUgRl9GCTB4MQkvKiDDyry6IChpbml0aWFsIHNvdW5kKSAqLwojZGVmaW5lIEZfTQkweDIJLyogwd+8uiAobWVkaWFsIHZvd2VsKSAqLwojZGVmaW5lIEZfTAkweDQJLyogwb68uiAoZmluYWwgY29uc29uYW50KSAqLwojZGVmaW5lIEZfQQkweDgJLyogQVNDSUkgKi8KI2RlZmluZSBGX05VTEwgMQojZGVmaW5lIE1fTlVMTCAyCiNkZWZpbmUgTF9OVUxMIDEKCnN0YXRpYyBpbnQgaGFuZ3VsX2lucHV0X3N0YXRlID0gMDsKc3RhdGljIGludCBmPUZfTlVMTCwgbT1NX05VTEwsIGw9TF9OVUxMOwpzdGF0aWMgaW50IHNwPTA7CnN0YXRpYyBjaGFyX3Ugc3RhY2tbMjBdID0gezB9OwpzdGF0aWMgaW50IGxhc3RfbCA9IC0xLCBsYXN0X2xsID0gLTE7CnN0YXRpYyBpbnQgaGFuZ3VsX2tleWJvYXJkX3R5cGUgPSBIQU5HVUxfREVGQVVMVF9LRVlCT0FSRDsKCnN0YXRpYyB2b2lkIGNvbnZlcnRfa3NfdG9fMyhjb25zdCBjaGFyX3UgKnNyYywgaW50ICpmcCwgaW50ICptcCwgaW50ICpscCk7CnN0YXRpYyBpbnQgY29udmVydF8zX3RvX2tzKGludCBmdiwgaW50IG12LCBpbnQgbHYsIGNoYXJfdSAqZGVzKTsKc3RhdGljIGludCBoYW5ndWxfYXV0b21hdGEyKGNoYXJfdSAqYnVmLCB1bnNpZ25lZCBpbnQgKmMpOwpzdGF0aWMgaW50IGhhbmd1bF9hdXRvbWF0YTMoY2hhcl91ICpidWYsIHVuc2lnbmVkIGludCAqYyk7CgojZGVmaW5lIHB1c2goeCkJIHtzdGFja1sgc3ArKyBdID0gKih4KTsgc3RhY2tbc3ArK10gPSAqKCh4KSsxKTt9CiNkZWZpbmUgcG9wKHgpCSB7KigoeCkgKyAxKSA9IHN0YWNrWy0tc3BdOyAqKHgpID0gc3RhY2tbLS1zcF07fQojZGVmaW5lIHF1ZXJ5KHgpIHsqKCh4KSArIDEpID0gc3RhY2tbc3AgLSAxXTsgKih4KSA9IHN0YWNrW3NwIC0gMl07fQoKI2RlZmluZSBjb252ZXJ0XzNfdG9fY29kZSBjb252ZXJ0XzNfdG9fa3MKCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoqKioqKiAzILn6vcTA2sbHwLsgwKfH0SC358a+ICAoUm91dGluZXMgZm9yIDMgYnVsc2lrIGtleWJvYXJkKSAqKioqKiovCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyogMyC5+r3Ev6G8rSDA2sbHILqvyK8gKDMgYnVsc2lrIGtleWJvYXJkIGNvbnZlcnNpb24pICovCgpzdGF0aWMgY2hhcl91IHZhbHVlX3RhYmxlX2Zvcl8zW10gPQp7CiAgICAyNCAgLCAnIicgLCAnIycgLCAnJCcgLCAnJScgLCAnJicgLAkvKiAhICIgIyAkICUgJiAqLwogICAgMTggICwgJygnICwgJyknICwgJyonICwgJysnICwgJywnICwJLyogJyAoICkgKiArICwgKi8KICAgICctJyAsICcuJyAsIDEzICAsIDE3ICAsIDI5ICAsIDIyICAsCS8qIC0gLiAvIDAgMSAyICovCiAgICAxOSAgLCAxOSAgLCAyNiAgLCA1ICAgLCAxMiAgLCAyOCAgLAkvKiAzIDQgNSA2IDcgOCAqLwogICAgMjAgICwgJzonICwgOSAgICwgJzInICwgJz0nICwgJzMnICwJLyogOSA6IDsgPCA9ID4gKi8KICAgICc/JyAsICdAJyAsIDggICAsICchJyAsIDExICAsIDEwICAsCS8qID8gQCBBIEIgQyBEICovCiAgICAyNiAgLCAzICAgLCAnLycgLCAzOSAgLCAnOCcgLCAnNCcgLAkvKiBFIEYgRyBIIEkgSiAqLwogICAgJzUnICwgJzYnICwgJzEnICwgJzAnICwgJzknICwgJz4nICwJLyogSyBMIE0gTiBPIFAgKi8KICAgIDI4ICAsIDYgICAsIDcgICAsICc7JyAsICc3JyAsIDE2ICAsCS8qIFEgUiBTIFQgVSBWICovCiAgICAyNyAgLCAyMCAgLCAnPCcgLCAyNSAgLCAnWycgLCA5MiAgLAkvKiBXIFggWSBaIFsgXCAqLwogICAgJ10nICwgJ14nICwgJ18nICwgJ2AnICwgMjMgICwgMjAgICwJLyogXSBeIF8gYCBhIGIgKi8KICAgIDEwICAsIDI5ICAsIDExICAsIDMgICAsIDI3ICAsIDQgICAsCS8qIGMgZCBlIGYgZyBoICovCiAgICA4ICAgLCAxMyAgLCAyICAgLCAxNCAgLCAyMCAgLCAxMSAgLAkvKiBpIGogayBsIG0gbiAqLwogICAgMTYgICwgMTkgICwgMjEgICwgNCAgICwgNSAgICwgNyAgICwJLyogbyBwIHEgciBzIHQgKi8KICAgIDUgICAsIDEzICAsIDkgICAsIDIgICAsIDcgICAsIDE3ICAsCS8qIHUgdiB3IHggeSB6ICovCn07CgpzdGF0aWMgc2hvcnRfdSBraW5kX3RhYmxlX2Zvcl8zW10gPQp7CiAgICBGX0wsIEZfQSwgRl9BLCBGX0EsIEZfQSwgRl9BLAkvKiAhICIgIyAkICUgJiAqLwogICAgRl9GLCBGX0EsIEZfQSwgRl9BLCBGX0EsIEZfQSwJLyogJyAoICkgKiArICwgKi8KICAgIEZfQSwgRl9BLCBGX00sIEZfRiwgRl9MLCBGX0wsCS8qIC0gLiAvIDAgMSAyICovCiAgICBGX0wsIEZfTSwgRl9NLCBGX00sIEZfTSwgRl9NLAkvKiAzIDQgNSA2IDcgOCAqLwogICAgRl9NLCBGX0EsIEZfRiwgRl9BLCBGX0EsIEZfQSwJLyogOSA6IDsgPCA9ID4gKi8KICAgIEZfQSwgRl9BLCBGX0wsIEZfQSwgRl9MLCBGX0wsCS8qID8gQCBBIEIgQyBEICovCiAgICBGX0wsIEZfTCwgRl9BLCBGX0EsIEZfQSwgRl9BLAkvKiBFIEYgRyBIIEkgSiAqLwogICAgRl9BLCBGX0EsIEZfQSwgRl9BLCBGX0EsIEZfQSwJLyogSyBMIE0gTiBPIFAgKi8KICAgIEZfTCwgRl9NLCBGX0wsIEZfQSwgRl9BLCBGX0wsCS8qIFEgUiBTIFQgVSBWICovCiAgICBGX0wsIEZfTCwgRl9BLCBGX0wsIEZfQSwgRl9BLAkvKiBXIFggWSBaIFsgXCAqLwogICAgRl9BLCBGX0EsIEZfQSwgRl9BLCBGX0wsIEZfTSwJLyogXSBeIF8gYCBhIGIgKi8KICAgIEZfTSwgRl9NLCBGX00sIEZfTSwgRl9NLCBGX0YsCS8qIGMgZCBlIGYgZyBoICovCiAgICBGX0YsIEZfRiwgRl9GLCBGX0YsIEZfRiwgRl9GLAkvKiBpIGogayBsIG0gbiAqLwogICAgRl9GLCBGX0YsIEZfTCwgRl9NLCBGX0wsIEZfTSwJLyogbyBwIHEgciBzIHQgKi8KICAgIEZfRiwgRl9NLCBGX0wsIEZfTCwgRl9GLCBGX0wsCS8qIHUgdiB3IHggeSB6ICovCn07CgovKiAzILn6vcS/obytICjH9sDnw8q8uiwgwNS3wr+1ua4pIC0+ILq5x9XDyry6IMOzuK4KICogMyBidWxzaWs6IChjdXJyZW50IGluaXRpYWwgc291bmQsIGlucHV0IGVuZ2xpc2gpIC0+IGNvbXBvdW5kIGluaXRpYWwgc291bmQuCiAqLwoKICAgIHN0YXRpYyBpbnQKY29tZmNvbjMoaW50IHYsIGludCBjKQp7CiAgICBpZiAodiA9PSAyICYmIGMgPT0gMikKCXJldHVybiAzOwogICAgaWYgKHYgPT0gNSAmJiBjID09IDUpCglyZXR1cm4gNjsKICAgIGlmICh2ID09IDkgJiYgYyA9PSA5KQoJcmV0dXJuIDEwOwogICAgaWYgKHYgPT0gMTEgJiYgYyA9PSAxMSkKCXJldHVybiAxMjsKICAgIGlmICh2ID09IDE0ICYmIGMgPT0gMTQpCglyZXR1cm4gMTU7CiAgICByZXR1cm4gMDsKfQoKLyogMyC5+r3Ev6G8rSAox/bA57jwwL0sIMDUt8Igv7W5rikgLT4gurnH1SC48MC9IMOzuK4KICogMyBidWxzaWs6IChjdXJyZW50IHZvd2VsLCBpbnB1dCBlbmdsaXNoKSAtPiBjb21wb3VuZCB2b3dlbC4KICovCgogICAgc3RhdGljIGludApjb212b3czKGludCB2LCBpbnQgYykKewogICAgc3dpdGNoICh2KQogICAgewoJY2FzZSAxMzoJCQkJCS8qIKTHICovCgkgICAgc3dpdGNoIChjKSB7CgkJY2FzZSAzOgkJCQkJLyogpMekvyAqLwoJCSAgICByZXR1cm4gMTQ7CgkJY2FzZSA0OgkJCQkJLyogpMekwCAqLwoJCSAgICByZXR1cm4gMTU7CgkJY2FzZSAyOToJCQkJLyogpMek0yAqLwoJCSAgICByZXR1cm4gMTg7CgkgICAgfQoJICAgIGJyZWFrOwoKCWNhc2UgMjA6CQkJCQkvKiCkzCAqLwoJICAgIHN3aXRjaCAoYykgewoJCWNhc2UgNzoJCQkJCS8qIKTMpMMgKi8KCQkgICAgcmV0dXJuIDIxOwoJCWNhc2UgMTA6CQkJCS8qIKTMpMQgKi8KCQkgICAgcmV0dXJuIDIyOwoJCWNhc2UgMjk6CQkJCS8qIKTMpNMgKi8KCQkgICAgcmV0dXJuIDIzOwoJICAgIH0KCSAgICBicmVhazsKCgkgICAgLyogMyC5+r3EIMDaxsfAuiCk0aTTILChIMDWwLi5x7fOIC4uLiAqLwogICAgfQogICAgcmV0dXJuIDA7Cn0KCi8qIDMgufq9xL+hvK0gKMf2wOcgud7Epywgv7W5rsDaIMDUt8IpIC0+ILnexKcKICogMyBidWxzaWs6IChjdXJyZW50IHByb3AoPyksIGlucHV0IGVuZ2xpc2gpIC0+IHByb3AoPykuCiAqIEkgd2FudCB0byBzYXksIHRoZSAncHJvcCcgaXMgc2ltaWxhciB0byAnZmluYWwgY29uc29uYW50JywgYnV0IG5vdCB2b3dlbC4KICogKEkgY2Fubm90IGZpbmQgdGhlIHJlYWwgZW5nbGlzaCBmcm9tIG15IGRpY3Rpb25hcnkuIFNvcnJ5ISkKICogVklNOiBWID0gaW5pdGlhbCBzb3VuZCwgSSA9IG1lZGlhbCB2b3dlbCwgTSA9IGZpbmFsIGNvbnNvbmFudC4KICovCgogICAgc3RhdGljIGludApjb21jb24zKGludCBrLCBpbnQgYykKewogICAgc3dpdGNoIChrKQogICAgewoJY2FzZSAyOgkJCQkJCS8qIKShICovCgkgICAgc3dpdGNoIChjKSB7CgkJY2FzZSAyOgoJCSAgICByZXR1cm4gMzsJCQkJLyogpKGkoSAqLwoJCWNhc2UgMjE6CgkJICAgIHJldHVybiA0OwkJCQkvKiCkoaS1ICovCgkgICAgfQoJICAgIGJyZWFrOwoKCWNhc2UgNToJCQkJCQkvKiCkpCAqLwoJICAgIHN3aXRjaCAoYykgewoJCWNhc2UgMjQ6CQkJCS8qIKSkpLggKi8KCQkgICAgcmV0dXJuIDY7CgkJY2FzZSAyOToKCQkgICAgcmV0dXJuIDc7CQkJCS8qIKSkpL4gKi8KCSAgICB9CgkgICAgYnJlYWs7CgoJY2FzZSA5OgkJCQkJCS8qIKSpICovCgkgICAgc3dpdGNoIChjKSB7CgkJY2FzZSAyOgkJCQkJLyogpKmkoSAqLwoJCSAgICByZXR1cm4gMTA7CgkJY2FzZSAxNzoJCQkJLyogpKmksSAqLwoJCSAgICByZXR1cm4gMTE7CgkJY2FzZSAxOToJCQkJLyogpKmksiAqLwoJCSAgICByZXR1cm4gMTI7CgkJY2FzZSAyMToJCQkJLyogpKmktSAqLwoJCSAgICByZXR1cm4gMTM7CgkJY2FzZSAyNzoJCQkJLyogpKmkvCAqLwoJCSAgICByZXR1cm4gMTQ7CgkJY2FzZSAyODoJCQkJLyogpKmkvSAqLwoJCSAgICByZXR1cm4gMTU7CgkJY2FzZSAyOToJCQkJLyogpKmkviAqLwoJCSAgICByZXR1cm4gMTY7CgkgICAgfQoJICAgIGJyZWFrOwoKCWNhc2UgMTk6CgkgICAgc3dpdGNoIChjKSB7CgkJY2FzZSAyMToJCQkJLyogpLKktSAqLwoJCSAgICByZXR1cm4gMjA7CgkgICAgfQoJICAgIGJyZWFrOwogICAgfQogICAgcmV0dXJuIDA7Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwovKioqKioqIDIgufq9xMDaxsfAuyDAp8fRILfnxr4gIChSb3V0aW5lcyBmb3IgMiBidWxzaWsga2V5Ym9hcmQpICoqKioqKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgogICAgc3RhdGljIGludApraW5kX3RhYmxlX2Zvcl8yKGludCBjKQp7CiAgICBzdGF0aWMgY2hhcl91IHRhYmxlW10gPQogICAgewogICAgIC8qIGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIGksIGosIGssIGwsIG0sIG4sIG8sIHAsIHEsIHIsIHMgKi8KCTAsIDEsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDAsIDAsIDAsCiAgICAgLyogdCwgdSwgdiwgdywgeCwgeSwgeiAqLwoJMCwgMSwgMCwgMCwgMCwgMSwgMAogICAgfTsKCiAgICBpZiAoYyA8PSAnWicpCgljIC09ICdBJzsKICAgIGVsc2UKCWMgLT0gJ2EnOwoKICAgIHJldHVybiB0YWJsZVtjXTsKfQoKLyogMiC5+r3Ev6G8rSC/tbmuwNogLT4gwbbH1cf8IMPKvLoguq/IrwogKiAoMiBidWxzaWs6IGNvbnZlcnNpb24gZW5nbGlzaCBjaGFyLiB0byBpbml0aWFsIHNvdW5kIG9mIGNvbXBvdW5kIHR5cGUpCiAqILDhsPo6IMPKvLrAzCC+xrTPuOkgMCAoSWYgaXQgaXMgbm90IGluaXRpYWwgc291bmQsIHJldHVybiAwKS4KICovCiAgICBzdGF0aWMgaW50CmZjb24oaW50IGMpCnsKICAgIHN0YXRpYyBjaGFyX3UgdGFibGVbXSA9CiAgICB7CgkvKkUgKi8gNiAsIC8qRiAqLyAwICwgLypHICovIDAgLCAvKkggKi8gMCAsIC8qSSAqLyAwICwgLypKICovIDAgLCAvKksgKi8gMCAsCgkvKkwgKi8gMCAsIC8qTSAqLyAwICwgLypOICovIDAgLCAvKk8gKi8gMCAsIC8qUCAqLyAwICwgLypRICovIDEwLCAvKlIgKi8gMyAsCgkvKlMgKi8gMCAsIC8qVCAqLyAxMiwgLypVICovIDAgLCAvKlYgKi8gMCAsIC8qVyAqLyAxNSwgLypYICovIDAgLCAvKlkgKi8gMCAsCgkvKlogKi8gMCAsIC8qWyAqLyAwICwgLypcICovIDAgLCAvKl0gKi8gMCAsIC8qXiAqLyAwICwgLypfICovIDAgLCAvKmAgKi8gMCAsCgkvKmEgKi8gOCAsIC8qYiAqLyAwICwgLypjICovIDE2LCAvKmQgKi8gMTMsIC8qZSAqLyA1ICwgLypmICovIDcgLCAvKmcgKi8gMjAsCgkvKmggKi8gMCAsIC8qaSAqLyAwICwgLypqICovIDAgLCAvKmsgKi8gMCAsIC8qbCAqLyAwICwgLyptICovIDAgLCAvKm4gKi8gMCAsCgkvKm8gKi8gMCAsIC8qcCAqLyAwICwgLypxICovIDkgLCAvKnIgKi8gMiAsIC8qcyAqLyA0ICwgLyp0ICovIDExLCAvKnUgKi8gMCAsCgkvKnYgKi8gMTksIC8qdyAqLyAxNCwgLyp4ICovIDE4LCAvKnkgKi8gMCAsIC8qeiAqLyAxNwogICAgfTsKCiAgICBpZiAoYyA8ICdFJyB8fCBjID4gJ3onKQoJcmV0dXJuIDA7CiAgICByZXR1cm4gdGFibGVbYyAtICdFJ107Cn0KCi8qIDIgufq9xL+hvK0gv7W5rsDaIC0+IMHfvLoguq/IrwogKiAoMiBidWxzaWs6IGNvbnZlcnNpb24gZW5nbGlzaCBjaGFyLiB0byBtZWRpYWwgdm93ZWwpCiAqILDhsPo6IMHfvLrAzCC+xrTPuOkgMCAoSWYgaXQgaXMgbm90IG1lZGlhbCB2b3dlbCwgcmV0dXJuIDApLgogKi8KICAgIHN0YXRpYyBpbnQKdm93KGludCBjKQp7CiAgICBzdGF0aWMgY2hhcl91IHRhYmxlW10gPQogICAgewoJLypPICovIDYgLCAvKlAgKi8gMTIsIC8qUSAqLyAwICwgLypSICovIDAgLCAvKlMgKi8gMCAsIC8qVCAqLyAwICwgLypVICovIDAgLAoJLypWICovIDAgLCAvKlcgKi8gMCAsIC8qWCAqLyAwICwgLypZICovIDAgLCAvKlogKi8gMCAsIC8qWyAqLyAwICwgLypcICovIDAgLAoJLypdICovIDAgLCAvKl4gKi8gMCAsIC8qXyAqLyAwICwgLypgICovIDAgLCAvKmEgKi8gMCAsIC8qYiAqLyAyNiwgLypjICovIDAgLAoJLypkICovIDAgLCAvKmUgKi8gMCAsIC8qZiAqLyAwICwgLypnICovIDAgLCAvKmggKi8gMTMsIC8qaSAqLyA1ICwgLypqICovIDcgLAoJLyprICovIDMgLCAvKmwgKi8gMjksIC8qbSAqLyAyNywgLypuICovIDIwLCAvKm8gKi8gNCAsIC8qcCAqLyAxMCwgLypxICovIDAgLAoJLypyICovIDAgLCAvKnMgKi8gMCAsIC8qdCAqLyAwICwgLyp1ICovIDExLCAvKnYgKi8gMCAsIC8qdyAqLyAwICwgLyp4ICovIDAgLAoJLyp5ICovIDE5fTsKCiAgICBpZiAoYyA8ICdPJyB8fCBjID4gJ3knKQoJcmV0dXJuIDA7CiAgICByZXR1cm4gdGFibGVbYyAtICdPJ107Cn0KCi8qIDK5+r3Ev6G8rSC/tbmuwNogLT4gud7EpyC6r8ivCiAqICgyIGJ1bHNpazogY29udmVyc2lvbiBlbmdsaXNoIGNoYXIuIHRvIHByb3ApCiAqILDhsPo6ILnexKfAzCC+xrTPuOkgMCAoSWYgbm90IHByb3AsIHJldHVybiAwKQogKi8KICAgIHN0YXRpYyBpbnQKbGNvbihpbnQgYykKewogICAgc3RhdGljIGNoYXJfdSB0YWJsZVtdID0KICAgIHsKCS8qUiAqLyAzICwgLypTICovIDAgLCAvKlQgKi8gMjIsIC8qVSAqLyAwICwgLypWICovIDAgLCAvKlcgKi8gMCAsIC8qWCAqLyAwICwKCS8qWSAqLyAwICwgLypaICovIDAgLCAvKlsgKi8gMCAsIC8qXCAqLyAwICwgLypdICovIDAgLCAvKl4gKi8gMCAsIC8qXyAqLyAwICwKCS8qYCAqLyAwICwgLyphICovIDE3LCAvKmIgKi8gMCAsIC8qYyAqLyAyNSwgLypkICovIDIzLCAvKmUgKi8gOCAsIC8qZiAqLyA5ICwKCS8qZyAqLyAyOSwgLypoICovIDAgLCAvKmkgKi8gMCAsIC8qaiAqLyAwICwgLyprICovIDAgLCAvKmwgKi8gMCAsIC8qbSAqLyAwICwKCS8qbiAqLyAwICwgLypvICovIDAgLCAvKnAgKi8gMCAsIC8qcSAqLyAxOSwgLypyICovIDIgLCAvKnMgKi8gNSAsIC8qdCAqLyAyMSwKCS8qdSAqLyAwICwgLyp2ICovIDI4LCAvKncgKi8gMjQsIC8qeCAqLyAyNywgLyp5ICovIDAgLCAvKnogKi8gMjYKICAgIH07CgogICAgaWYgKGMgPCAnUicgfHwgYyA+ICd6JykKCXJldHVybiAwOwogICAgcmV0dXJuIHRhYmxlW2MgLSAnUiddOwp9CgovKiAyILn6vcS/obytICjH9sDnILnexKcsIL+1ua7A2iDA1LfCKSAtPiC53sSnILqvyK8KICogKDIgYnVsc2lrOiBjb252ZXJzaW9uIChjdXJyLiBwcm9wLCBpbnB1dCBlbmdsaXNoKSB0byBwcm9wKQogKi8KCiAgICBzdGF0aWMgaW50CmNvbWNvbjIoaW50IGssIGludCBjKQp7CiAgICBzd2l0Y2ggKGspCiAgICB7CgljYXNlIDI6CQkJCQkvKiCkoSAqLwoJICAgIHN3aXRjaCAoYykgewoJCWNhc2UgJ3QnOgoJCSAgICByZXR1cm4gNDsJCQkvKiCkoaS1ICovCgkgICAgfQoJICAgIGJyZWFrOwoKCWNhc2UgNToJCQkJCS8qIKSkICovCgkgICAgc3dpdGNoIChjKSB7CgkJY2FzZSAndyc6CQkJLyogpKSkuCAqLwoJCSAgICByZXR1cm4gNjsKCQljYXNlICdnJzoJCQkvKiCkpKS+ICovCgkJICAgIHJldHVybiA3OwoJICAgIH0KCSAgICBicmVhazsKCgljYXNlIDk6CQkJCQkvKiCkqSAqLwoJICAgIHN3aXRjaCAoYykgewoJCWNhc2UgJ3InOgkJCS8qIKSppKEgKi8KCQkgICAgcmV0dXJuIDEwOwoJCWNhc2UgJ2EnOgkJCS8qIKSppLEgKi8KCQkgICAgcmV0dXJuIDExOwoJCWNhc2UgJ3EnOgkJCS8qIKSppLIgKi8KCQkgICAgcmV0dXJuIDEyOwoJCWNhc2UgJ3QnOgkJCS8qIKSppLUgKi8KCQkgICAgcmV0dXJuIDEzOwoJCWNhc2UgJ3gnOgkJCS8qIKSppLwgKi8KCQkgICAgcmV0dXJuIDE0OwoJCWNhc2UgJ3YnOgkJCS8qIKSppL0gKi8KCQkgICAgcmV0dXJuIDE1OwoJCWNhc2UgJ2cnOgkJCS8qIKSppL4gKi8KCQkgICAgcmV0dXJuIDE2OwoJICAgIH0KCSAgICBicmVhazsKCgljYXNlIDE5OgkJCQkvKiCksiAqLwoJICAgIHN3aXRjaCAoYykgewoJCWNhc2UgJ3QnOgkJCS8qIKSypLUgKi8KCQkgICAgcmV0dXJuIDIwOwoJICAgIH0KCSAgICBicmVhazsKICAgIH0KICAgIHJldHVybiAwOwp9CgovKiAyufq9xL+hvK0gKMf2wOcgwd+8uiwgv7W5riDA1LfCKSAtPiDB37y6ILqvyK8KICogKDIgYnVsc2lrOiBjb252ZXJzaW9uIChjdXJyLiBtZWRpYWwgdm93ZWwsIGlucHV0IGVuZ2xpc2gpIHRvIG1lZGlhbAogKiB2b3dlbCkKICovCgogICAgc3RhdGljIGludApjb212b3cyKGludCB2LCBpbnQgYykKewogICAgc3dpdGNoICh2KQogICAgewoJY2FzZSAxMzoJCQkJCS8qIKTHICovCgkgICAgc3dpdGNoIChjKSB7CgkJY2FzZSAnayc6CQkJCS8qIKTHpL8gKi8KCQkgICAgcmV0dXJuIDE0OwoJCWNhc2UgJ28nOgkJCQkvKiCkx6TAICovCgkJICAgIHJldHVybiAxNTsKCQljYXNlICdsJzoJCQkJLyogpMek0yAqLwoJCSAgICByZXR1cm4gMTg7CgkgICAgfQoJICAgIGJyZWFrOwoKCWNhc2UgMjA6CQkJCQkvKiCkzCAqLwoJICAgIHN3aXRjaCAoYykgewoJCWNhc2UgJ2onOgkJCQkvKiCkzKTDICovCgkJICAgIHJldHVybiAyMTsKCQljYXNlICdwJzoJCQkJLyogpMykxCAqLwoJCSAgICByZXR1cm4gMjI7CgkJY2FzZSAnbCc6CQkJCS8qIKTMpNMgKi8KCQkgICAgcmV0dXJuIDIzOwoJICAgIH0KCSAgICBicmVhazsKCgljYXNlIDI3OgkJCQkJLyogpNEgKi8KCSAgICBzd2l0Y2ggKGMpIHsKCQljYXNlICdsJzoJCQkJLyogpNGk0yAqLwoJCSAgICByZXR1cm4gMjg7CgkgICAgfQoJICAgIGJyZWFrOwogICAgfQogICAgcmV0dXJuIDA7Cn0KCiAgICBpbnQKaGFuZ3VsX2lucHV0X3N0YXRlX2dldCh2b2lkKQp7CiAgICByZXR1cm4gaGFuZ3VsX2lucHV0X3N0YXRlOwp9CgogICAgdm9pZApoYW5ndWxfaW5wdXRfc3RhdGVfc2V0KGludCBzdGF0ZSkKewogICAgaGFuZ3VsX2lucHV0X3N0YXRlID0gc3RhdGU7CiAgICBoYW5ndWxfaW5wdXRfY2xlYXIoKTsKfQoKICAgIGludAppbV9nZXRfc3RhdHVzKHZvaWQpCnsKICAgIHJldHVybiBoYW5ndWxfaW5wdXRfc3RhdGVfZ2V0KCk7Cn0KCiAgICB2b2lkCmhhbmd1bF9pbnB1dF9zdGF0ZV90b2dnbGUodm9pZCkKewogICAgaWYgKGhhbmd1bF9pbnB1dF9zdGF0ZV9nZXQoKSkKICAgIHsKCWhhbmd1bF9pbnB1dF9zdGF0ZV9zZXQoMCk7CglpZiAoY29tcG9zaW5nX2hhbmd1bCkKCXsKCSAgICBwdXNoX3Jhd19rZXkoY29tcG9zaW5nX2hhbmd1bF9idWZmZXIsIDIpOwoJICAgIGNvbXBvc2luZ19oYW5ndWwgPSAwOwoJfQogICAgfQogICAgZWxzZQoJaGFuZ3VsX2lucHV0X3N0YXRlX3NldCgxKTsKCiAgICBpZiAoc2hvd21vZGUoKSkKICAgIHsKCXNldGN1cnNvcigpOwoJb3V0X2ZsdXNoKCk7CiAgICB9CgogICAgZ3VpX3VwZGF0ZV9jdXJzb3IoVFJVRSwgRkFMU0UpOwp9CgogICAgc3RhdGljIGludApoYW5ndWxfYXV0b21hdGEyKGNoYXJfdSAqYnVmLCBpbnRfdSAqYykKewogICAgaW50IHQsdDI7CgogICAgaWYgKCpjID09IEJTKQogICAgewoJaWYgKHNwID09IDApCgkgICAgcmV0dXJuIEFVVE9NQVRBX1NQRUNJQUw7CgllbHNlIGlmIChzcCA8IDQpCgl7CgkgICAgaGFuZ3VsX2lucHV0X2NsZWFyKCk7CgkgICAgcmV0dXJuIEFVVE9NQVRBX05VTEw7Cgl9Cglwb3AoYnVmKTsKCXF1ZXJ5KGJ1Zik7Cgljb252ZXJ0X2tzX3RvXzMoYnVmLCAmZiwgJm0sICZsKTsKCWxhc3RfbCA9IGxhc3RfbGw7CglsYXN0X2xsID0gLTE7CglyZXR1cm4gQVVUT01BVEFfQ09SUkVDVDsKICAgIH0KICAgIGlmICgoISgqYyA+PSAnQScgJiYgKmMgPD0gJ1onKSkgJiYgKCEoKmMgPj0gJ2EnICYmICpjIDw9ICd6JykpKQogICAgewoJaGFuZ3VsX2lucHV0X2NsZWFyKCk7CglyZXR1cm4gQVVUT01BVEFfU1BFQ0lBTDsKICAgIH0KICAgIHQgPSAqYzsKICAgIHN3aXRjaCAoa2luZF90YWJsZV9mb3JfMih0KSkKICAgIHsKCWNhc2UgMDogLyogwNrAvSAoY29uc29uYW50KSAqLwoJICAgIGlmIChmID09IEZfTlVMTCkKCSAgICB7CgkJaWYgKG0gIT0gTV9OVUxMKQoJCSAgICBoYW5ndWxfaW5wdXRfY2xlYXIoKTsKCQlmID0gZmNvbih0KTsKCQljb252ZXJ0XzNfdG9fY29kZShmLCBNX05VTEwsIExfTlVMTCwgYnVmKTsKCQlwdXNoKGJ1Zik7CgkJbGFzdF9sbCA9IGxhc3RfbCA9IC0xOwoJCXJldHVybiBBVVRPTUFUQV9ORVc7CgkgICAgfQoJICAgIGlmIChtID09IE1fTlVMTCkKCQlyZXR1cm4gQVVUT01BVEFfRVJST1I7CgkgICAgaWYgKGwgPT0gTF9OVUxMKQoJICAgIHsKCQl0MiA9IGxjb24odCk7CgkJaWYgKCF0MikgICAgLyogud7Ep8C4t84gwPvH1cfPwfa+yrTZIChjYW5ub3QgdXNlIGl0IGFzIGEgcHJvcCkgKi8KCQl7CgkJICAgIGhhbmd1bF9pbnB1dF9jbGVhcigpOwoJCSAgICBsYXN0X2xsID0gbGFzdF9sID0gLTE7CgkJICAgIGYgPSBmY29uKHQpOwoJCSAgICBjb252ZXJ0XzNfdG9fY29kZShmLCBtLCBsLCBidWYpOwoJCSAgICBwdXNoKGJ1Zik7CgkJICAgIHJldHVybiBBVVRPTUFUQV9ORVc7CgkJfQoJCWlmICgyID09IGNvbnZlcnRfM190b19jb2RlKGYsIG0sIHQyLCBidWYpKQoJCXsKCQkgICAgbGFzdF9sbCA9IC0xOwoJCSAgICBsYXN0X2wgPSB0OwoJCSAgICBsID0gdDI7CgkJICAgIHB1c2goYnVmKTsKCQkgICAgcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CgkJfQoJCWVsc2UJLyogud7Ep8C4t84gvrK3wcfPv7TAuLOqIGNvZGW/oSC++LTCILHbwNrAzLTZICovCgkJewkvKiBjYW5ub3QgZmluZCBzdWNoIGEgcHJvcCBpbiB0aGUgY29kZSB0YWJsZSAqLwoJCSAgICBsYXN0X2xsID0gbGFzdF9sID0gLTE7CgkJICAgIGhhbmd1bF9pbnB1dF9jbGVhcigpOwoJCSAgICBmID0gZmNvbih0KTsKCQkgICAgY29udmVydF8zX3RvX2NvZGUoZiwgbSwgbCwgYnVmKTsKCQkgICAgcHVzaChidWYpOwoJCSAgICByZXR1cm4gQVVUT01BVEFfTkVXOwoJCX0KCSAgICB9CgkgICAgLyogw8ogwd8gwb68usDMILjwtc4gsK7D377uwa4gwNa02QoJICAgICAqIEkgaGF2ZSBhbGwgdGhlICdpbml0aWFsIHNvdW5kJyBhbmQgJ21lZGlhbCB2b3dlbCcgYW5kICdmaW5hbAoJICAgICAqIGNvbnNvbmFudCcuCgkgICAgICovCgkgICAgdDIgPSBjb21jb24yKGwsIHQpOwoJICAgIGlmICh0MikKCSAgICB7CgkJaWYgKDIgPT0gY29udmVydF8zX3RvX2NvZGUoZiwgbSwgdDIsIGJ1ZikpCgkJewoJCSAgICBsID0gdDI7CgkJICAgIGxhc3RfbGwgPSBsYXN0X2w7CgkJICAgIGxhc3RfbCA9IHQ7CgkJICAgIHB1c2goYnVmKTsKCQkgICAgcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CgkJfQoJICAgIH0KCSAgICBsYXN0X2xsID0gbGFzdF9sID0gLTE7CgkgICAgaGFuZ3VsX2lucHV0X2NsZWFyKCk7CgkgICAgZiA9IGZjb24odCk7CgkgICAgY29udmVydF8zX3RvX2NvZGUoZiwgbSwgbCwgYnVmKTsKCSAgICBwdXNoKGJ1Zik7CgkgICAgcmV0dXJuIEFVVE9NQVRBX05FVzsKCgljYXNlIDE6CgkgICAgaWYgKGYgPT0gRl9OVUxMKQoJICAgIHsKCQloYW5ndWxfaW5wdXRfY2xlYXIoKTsKCQltID0gdm93KHQpOwoJCWNvbnZlcnRfM190b19jb2RlIChmLCBtLCBMX05VTEwsIGJ1Zik7CgkJcHVzaCAoYnVmKTsKCQlsYXN0X2xsID0gbGFzdF9sID0gLTE7CgkJcmV0dXJuIEFVVE9NQVRBX05FVzsKCSAgICB9CgkgICAgaWYgKG0gPT0gTV9OVUxMKQoJICAgIHsKCQltID0gdm93KHQpOwoJCWlmICgyID09IGNvbnZlcnRfM190b19jb2RlKGYsIG0sIExfTlVMTCwgYnVmKSkKCQl7CgkJICAgIGxhc3RfbGwgPSBsYXN0X2wgPSAtMTsKCQkgICAgcHVzaChidWYpOwoJCSAgICByZXR1cm4gQVVUT01BVEFfQ09SUkVDVDsKCQl9CgkJbSA9IE1fTlVMTDsKCQlyZXR1cm4gQVVUT01BVEFfRVJST1I7CgkgICAgfQoJICAgIGlmIChsID09IExfTlVMTCkKCSAgICB7CgkJdDIgPSBjb212b3cyKG0sIHQpOwoJCWlmICh0MikKCQl7CgkJICAgIGlmICgyICE9IGNvbnZlcnRfM190b19jb2RlKGYsIHQyLCBMX05VTEwsIGJ1ZikpCgkJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKCgkJICAgIG0gPSB0MjsKCQkgICAgcHVzaChidWYpOwoJCSAgICBsYXN0X2xsID0gbGFzdF9sID0gLTE7CgkJICAgIHJldHVybiBBVVRPTUFUQV9DT1JSRUNUOwoJCX0KCQlyZXR1cm4gQVVUT01BVEFfRVJST1I7CgkgICAgfQoJICAgIHBvcChidWYpOwoJICAgIHBvcChidWYpOwoJICAgIHNwID0gMDsKCSAgICBpZiAobGFzdF9sID09IC0xKQoJICAgIHsKCQkvKiDAvS4uLiDAzLDUIMfKv+THz7OqPz8gKEhtbS4uLiBJcyBpdCBuZWVkZWQ/KSAqLwoJCWNvbnZlcnRfa3NfdG9fMyhidWYsICZmLCAmbSwgJmwpOwoJICAgIH0KCSAgICBlbHNlCgkgICAgewoJCWNoYXJfdSB0bXBbM107CgkJZiA9IGZjb24obGFzdF9sKTsKCQljb252ZXJ0XzNfdG9fY29kZSAoZiwgTV9OVUxMLCBMX05VTEwsIHRtcCk7CgkJcHVzaCAodG1wKTsKCSAgICB9CgkgICAgbSA9IHZvdyh0KTsKCSAgICBsID0gTF9OVUxMOwoJICAgIGNvbnZlcnRfM190b19jb2RlKGYsIG0sIGwsIGJ1ZiArIDIpOwoJICAgIHB1c2goYnVmICsgMik7CgkgICAgcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1RfTkVXOwoKCWRlZmF1bHQ6CgkgICAgRU1TRyhfKCJFMjU2OiBIYW5ndWwgYXV0b21hdGEgRVJST1IiKSk7CgkgICAgYnJlYWs7CiAgICB9CiAgICByZXR1cm4gQVVUT01BVEFfRVJST1I7IC8qIFJyRWVBYUxsTGxZeSBFZVJyUnJPb1JyICovCn0KCiAgICBzdGF0aWMgaW50Cmhhbmd1bF9hdXRvbWF0YTMoY2hhcl91ICpidWYsIGludF91ICpjKQp7CiAgICBpbnQgdCwgdDI7CgogICAgaWYgKCpjID49ICchJyAmJiAqYyA8PSAneicpCiAgICB7CgkqYyAtPSAnISc7Cgl0ID0gdmFsdWVfdGFibGVfZm9yXzNbKmNdOwoJc3dpdGNoIChraW5kX3RhYmxlX2Zvcl8zWypjXSkKCXsKCSAgICBjYXNlIEZfRjogLyogw8q8urmuwNogKGNoYXIuIG9mIGFuIGluaXRpYWwgc291bmQpICovCgkJaWYgKG0gIT0gTV9OVUxMIHx8IHNwID09IDApCgkJewoJCSAgICAvKiDDyry6wMwguvG++rDFs6ogtNnAvSCx28DaILjwwLix4iC9w8DbCgkJICAgICAqIEVtcHR5ICdpbml0aWFsIHNvdW5kJywgc28gc3RhcnRpbmcgYXV0b21hdGEuCgkJICAgICAqLwoJCSAgICBoYW5ndWxfaW5wdXRfY2xlYXIoKTsKCQkgICAgZiA9IHQ7CgkJICAgIGNvbnZlcnRfM190b19jb2RlKGYsIE1fTlVMTCwgTF9OVUxMLCBidWYpOwoJCSAgICBwdXNoKGJ1Zik7CgkJICAgIHJldHVybiBBVVRPTUFUQV9ORVc7CgkJfQoJCWlmICgodDIgPSBjb21mY29uMyhmLHQpKSAhPSAwKQkvKiC6ucDawL0gKGRvdWJsZT8gY29uc29uYW50KSAqLwoJCXsKCQkgICAgZj10MjsKCQkgICAgY29udmVydF8zX3RvX2NvZGUoZiwgTV9OVUxMLCBMX05VTEwsIGJ1Zik7CgkJICAgIHB1c2goYnVmKTsKCQkgICAgcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CgkJfQoJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKCgkgICAgY2FzZSBGX006CS8qILjwwL0gKHZvd2VsKSAqLwoJCWlmIChtID09IE1fTlVMTCkKCQl7CgkJICAgIGlmICgyICE9IGNvbnZlcnRfM190b19jb2RlKGYsIHQsIExfTlVMTCxidWYpKQoJCQlyZXR1cm4gQVVUT01BVEFfRVJST1I7CgoJCSAgICBtID0gdDsKCQkgICAgcHVzaChidWYpOwoJCSAgICBpZiAoZiA9PSBGX05VTEwpCgkJCXJldHVybiBBVVRPTUFUQV9ORVc7CgkJICAgIGVsc2UKCQkJcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CgkJfQoJCWlmICgodDIgPSBjb212b3czKG0sdCkpKSAgICAvKiC6ubjwwL0gKGEgZGlwaHRob25nKSAqLwoJCXsKCQkgICAgbSA9IHQyOwoJCSAgICBjb252ZXJ0XzNfdG9fY29kZShmLCBtLCBMX05VTEwsIGJ1Zik7CgkJICAgIHB1c2goYnVmKTsKCQkgICAgcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CgkJfQoJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKCgkgICAgY2FzZSBGX0w6CS8qILnexKcgKHByb3A/KSAqLwoJCWlmIChtID09IE1fTlVMTCkKCQkgICAgcmV0dXJuIEFVVE9NQVRBX0VSUk9SOyAvKiDB37y6vvi0wiDBvry6ICovCgkJaWYgKGwgPT0gTF9OVUxMKQoJCXsKCQkgICAgaWYgKDIgIT0gY29udmVydF8zX3RvX2NvZGUoZiwgbSwgdCwgYnVmKSkKCQkgICAgewoJCQlsID0gTF9OVUxMOwoJCQlyZXR1cm4gQVVUT01BVEFfRVJST1I7CgkJICAgIH0KCQkgICAgcHVzaChidWYpOwoJCSAgICBsID0gdDsKCQkgICAgcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CgkJfQoJCWlmICgodDIgPSBjb21jb24zKGwsdCkpICE9IDApCS8qILq5ILnexKcgPz8gKGRvdWJsZSBwcm9wPykgKi8KCQl7CgkJICAgIGlmICgyICE9IGNvbnZlcnRfM190b19jb2RlKGYsIG0sIHQyLCBidWYpKQoJCQlyZXR1cm4gQVVUT01BVEFfRVJST1I7CgoJCSAgICBwdXNoKGJ1Zik7CgkJICAgIGwgPSB0MjsKCQkgICAgcmV0dXJuIEFVVE9NQVRBX0NPUlJFQ1Q7CgkJfQoJCXJldHVybiBBVVRPTUFUQV9FUlJPUjsKCgkgICAgY2FzZSBGX0E6IC8qIMavvPa5rsDas6ogvP3A2iAoc3BlY2lhbCBjaGFyLiBvciBudW1iZXIpICovCgkJaGFuZ3VsX2lucHV0X2NsZWFyKCk7CgkJKmMgPSB0OwoJCXJldHVybiBBVVRPTUFUQV9TUEVDSUFMOwoJfQogICAgfQogICAgaWYgKCpjID09IEJTKQogICAgewoJaWYgKHNwID49IDQpCgl7CgkgICAgcG9wKGJ1Zik7CgkgICAgcG9wKGJ1Zik7CgkgICAgY29udmVydF9rc190b18zKGJ1ZiwgJmYsICZtLCAmbCk7CgkgICAgcHVzaChidWYpOwoJICAgIHJldHVybiBBVVRPTUFUQV9DT1JSRUNUOwoJfQoJZWxzZSBpZiAoc3AgPT0gMCkKCXsKCSAgICByZXR1cm4gQVVUT01BVEFfU1BFQ0lBTDsKCX0KCWVsc2UKCXsKCSAgICBoYW5ndWxfaW5wdXRfY2xlYXIoKTsKCSAgICByZXR1cm4gQVVUT01BVEFfTlVMTDsKCX0KICAgIH0KICAgIGhhbmd1bF9pbnB1dF9jbGVhcigpOwogICAgcmV0dXJuIEFVVE9NQVRBX1NQRUNJQUw7Cn0KCiAgICB2b2lkCmhhbmd1bF9rZXlib2FyZF9zZXQodm9pZCkKewogICAgaW50CSAgICBrZXlib2FyZDsKICAgIGNoYXIgICAgKnM7CgogICAgaGFuZ3VsX2lucHV0X2NsZWFyKCk7CgogICAgaWYgKChzID0gZ2V0ZW52KCJWSU1fS0VZQk9BUkQiKSkgPT0gTlVMTCkKCXMgPSBnZXRlbnYoIkhBTkdVTF9LRVlCT0FSRF9UWVBFIik7CgogICAgaWYgKHMpCiAgICB7CglpZiAoKnMgPT0gJzInKQoJICAgIGtleWJvYXJkID0gMjsKCWVsc2UKCSAgICBrZXlib2FyZCA9IDM7CgloYW5ndWxfa2V5Ym9hcmRfdHlwZSA9IGtleWJvYXJkOwogICAgfQp9CgogICAgaW50Cmhhbmd1bF9pbnB1dF9wcm9jZXNzKGNoYXJfdSAqcywgaW50IGxlbikKewogICAgaW50IG47CiAgICB1bnNpZ25lZCBpbnQgYzsKICAgIGNoYXJfdSBoYW5idWZbMjBdOwoKICAgIGlmIChsZW4gPT0gMSkKCS8qIG5vcm1hbCBrZXkgcHJlc3MgKi8KCWMgPSAqczsKICAgIGVsc2UgaWYgKGxlbiA9PSAzICYmIHNbMF0gPT0gQ1NJICYmIHNbMV0gPT0gJ2snICYmIHNbMl0gPT0gJ2InKQogICAgewoJLyogYmFja3NwYWNlICovCglpZiAoY29tcG9zaW5nX2hhbmd1bCkKCSAgICBjID0gQ3RybF9IOwoJZWxzZQoJICAgIHJldHVybiBsZW47CiAgICB9CiAgICBlbHNlCiAgICB7CglpZiAoY29tcG9zaW5nX2hhbmd1bCkKCSAgICBwdXNoX3Jhd19rZXkoY29tcG9zaW5nX2hhbmd1bF9idWZmZXIsIDIpOwoJaGFuZ3VsX2lucHV0X2NsZWFyKCk7Cgljb21wb3NpbmdfaGFuZ3VsID0gMDsKCXJldHVybiBsZW47CiAgICB9CgogICAgaWYgKGhhbmd1bF9rZXlib2FyZF90eXBlID09IDIpCgluID0gaGFuZ3VsX2F1dG9tYXRhMihoYW5idWYsICZjKTsKICAgIGVsc2UKCW4gPSBoYW5ndWxfYXV0b21hdGEzKGhhbmJ1ZiwgJmMpOwoKICAgIGlmIChuID09IEFVVE9NQVRBX0NPUlJFQ1QpCiAgICB7CglTVFJOQ1BZKGNvbXBvc2luZ19oYW5ndWxfYnVmZmVyLCBoYW5idWYsIDIpOwoJZ3VpX3VwZGF0ZV9jdXJzb3IoVFJVRSwgRkFMU0UpOwoJcmV0dXJuIDA7CiAgICB9CiAgICBlbHNlIGlmIChuID09IEFVVE9NQVRBX05FVykKICAgIHsKCWlmIChjb21wb3NpbmdfaGFuZ3VsKQoJICAgIHB1c2hfcmF3X2tleShjb21wb3NpbmdfaGFuZ3VsX2J1ZmZlciwgMik7CglTVFJOQ1BZKGNvbXBvc2luZ19oYW5ndWxfYnVmZmVyLCBoYW5idWYsIDIpOwoJY29tcG9zaW5nX2hhbmd1bCA9IDE7CglndWlfdXBkYXRlX2N1cnNvcihUUlVFLCBGQUxTRSk7CglyZXR1cm4gMDsKICAgIH0KICAgIGVsc2UgaWYgKG4gPT0gQVVUT01BVEFfQ09SUkVDVF9ORVcpCiAgICB7CglpZiAoY29tcG9zaW5nX2hhbmd1bCkKCSAgICBwdXNoX3Jhd19rZXkoaGFuYnVmLCAyKTsKCVNUUk5DUFkoY29tcG9zaW5nX2hhbmd1bF9idWZmZXIsIGhhbmJ1ZisyLCAyKTsKCWNvbXBvc2luZ19oYW5ndWwgPSAxOwoJZ3VpX3VwZGF0ZV9jdXJzb3IoVFJVRSwgRkFMU0UpOwoJcmV0dXJuIDA7CiAgICB9CiAgICBlbHNlIGlmIChuID09IEFVVE9NQVRBX05VTEwpCiAgICB7Cgljb21wb3NpbmdfaGFuZ3VsID0gMDsKCWd1aV9yZWRyYXdfYmxvY2soZ3VpLmN1cnNvcl9yb3csIGd1aS5jdXJzb3JfY29sLAoJCQkgZ3VpLmN1cnNvcl9yb3csIGd1aS5jdXJzb3JfY29sICsgMSwKCQkJIEdVSV9NT05fTk9DTEVBUik7CglndWlfdXBkYXRlX2N1cnNvcihUUlVFLCBGQUxTRSk7CglyZXR1cm4gMDsKICAgIH0KICAgIGVsc2UgaWYgKG4gPT0gQVVUT01BVEFfU1BFQ0lBTCkKICAgIHsKCWlmIChjb21wb3NpbmdfaGFuZ3VsKQoJewoJICAgIHB1c2hfcmF3X2tleShjb21wb3NpbmdfaGFuZ3VsX2J1ZmZlciwgMik7CgkgICAgY29tcG9zaW5nX2hhbmd1bCA9IDA7Cgl9CgkqcyA9IGM7CglyZXR1cm4gMTsKICAgIH0KICAgIGVsc2UgaWYgKG4gPT0gQVVUT01BVEFfRVJST1IpCiAgICB7Cgl2aW1fYmVlcChCT19IQU5HVUwpOwoJcmV0dXJuIDA7CiAgICB9CiAgICByZXR1cm4gbGVuOwp9CgogICAgdm9pZApoYW5ndWxfaW5wdXRfY2xlYXIodm9pZCkKewogICAgc3AgPSAwOwogICAgZiA9IEZfTlVMTDsKICAgIG0gPSBNX05VTEw7CiAgICBsID0gTF9OVUxMOwp9CgojZGVmaW5lIGhhbl9pbmRleChoLCBsKQkoKChoKS0weGIwKSooMHhmZi0weGExKSsoKGwpLTB4YTEpKQoKc3RhdGljIGNvbnN0IGNoYXJfdSBrc190YWJsZTFbXVszXSA9CnsKICAgIHsgIDIsICAzLCAgMX0sIHsgIDIsICAzLCAgMn0sIHsgIDIsICAzLCAgNX0sIHsgIDIsICAzLCAgOH0sCiAgICB7ICAyLCAgMywgIDl9LCB7ICAyLCAgMywgMTB9LCB7ICAyLCAgMywgMTF9LCB7ICAyLCAgMywgMTd9LAogICAgeyAgMiwgIDMsIDE5fSwgeyAgMiwgIDMsIDIwfSwgeyAgMiwgIDMsIDIxfSwgeyAgMiwgIDMsIDIyfSwKICAgIHsgIDIsICAzLCAyM30sIHsgIDIsICAzLCAyNH0sIHsgIDIsICAzLCAyNX0sIHsgIDIsICAzLCAyN30sCiAgICB7ICAyLCAgMywgMjh9LCB7ICAyLCAgMywgMjl9LCB7ICAyLCAgNCwgIDF9LCB7ICAyLCAgNCwgIDJ9LAogICAgeyAgMiwgIDQsICA1fSwgeyAgMiwgIDQsICA5fSwgeyAgMiwgIDQsIDE3fSwgeyAgMiwgIDQsIDE5fSwKICAgIHsgIDIsICA0LCAyMX0sIHsgIDIsICA0LCAyMn0sIHsgIDIsICA0LCAyM30sIHsgIDIsICA1LCAgMX0sCiAgICB7ICAyLCAgNSwgIDJ9LCB7ICAyLCAgNSwgIDV9LCB7ICAyLCAgNSwgIDl9LCB7ICAyLCAgNSwgMjF9LAogICAgeyAgMiwgIDUsIDIzfSwgeyAgMiwgIDYsICAxfSwgeyAgMiwgIDYsICA1fSwgeyAgMiwgIDYsICA5fSwKICAgIHsgIDIsICA3LCAgMX0sIHsgIDIsICA3LCAgMn0sIHsgIDIsICA3LCAgNX0sIHsgIDIsICA3LCAgOH0sCiAgICB7ICAyLCAgNywgIDl9LCB7ICAyLCAgNywgMTF9LCB7ICAyLCAgNywgMTd9LCB7ICAyLCAgNywgMTl9LAogICAgeyAgMiwgIDcsIDIxfSwgeyAgMiwgIDcsIDIyfSwgeyAgMiwgIDcsIDIzfSwgeyAgMiwgIDcsIDI0fSwKICAgIHsgIDIsICA3LCAyN30sIHsgIDIsICA3LCAyOH0sIHsgIDIsICA3LCAyOX0sIHsgIDIsIDEwLCAgMX0sCiAgICB7ICAyLCAxMCwgIDV9LCB7ICAyLCAxMCwgIDl9LCB7ICAyLCAxMCwgMTd9LCB7ICAyLCAxMCwgMTl9LAogICAgeyAgMiwgMTAsIDIxfSwgeyAgMiwgMTAsIDIyfSwgeyAgMiwgMTAsIDIzfSwgeyAgMiwgMTEsICAxfSwKICAgIHsgIDIsIDExLCAgMn0sIHsgIDIsIDExLCAgM30sIHsgIDIsIDExLCAgNX0sIHsgIDIsIDExLCAgOH0sCiAgICB7ICAyLCAxMSwgIDl9LCB7ICAyLCAxMSwgMTd9LCB7ICAyLCAxMSwgMTl9LCB7ICAyLCAxMSwgMjF9LAogICAgeyAgMiwgMTEsIDIyfSwgeyAgMiwgMTEsIDIzfSwgeyAgMiwgMTEsIDI3fSwgeyAgMiwgMTIsICAxfSwKICAgIHsgIDIsIDEyLCAgNX0sIHsgIDIsIDEyLCAgOX0sIHsgIDIsIDEyLCAxOX0sIHsgIDIsIDEyLCAyMX0sCiAgICB7ICAyLCAxMywgIDF9LCB7ICAyLCAxMywgIDJ9LCB7ICAyLCAxMywgIDV9LCB7ICAyLCAxMywgIDh9LAogICAgeyAgMiwgMTMsICA5fSwgeyAgMiwgMTMsIDExfSwgeyAgMiwgMTMsIDEzfSwgeyAgMiwgMTMsIDE2fSwKICAgIHsgIDIsIDEzLCAxN30sIHsgIDIsIDEzLCAxOX0sIHsgIDIsIDEzLCAyMX0sIHsgIDIsIDEzLCAyM30sCiAgICB7ICAyLCAxMywgMjR9LCB7ICAyLCAxNCwgIDF9LCB7ICAyLCAxNCwgIDJ9LCB7ICAyLCAxNCwgIDV9LAogICAgeyAgMiwgMTQsICA5fSwgeyAgMiwgMTQsIDExfSwgeyAgMiwgMTQsIDE3fSwgeyAgMiwgMTQsIDE5fSwKICAgIHsgIDIsIDE0LCAyMX0sIHsgIDIsIDE0LCAyM30sIHsgIDIsIDE1LCAgMX0sIHsgIDIsIDE1LCAgNX0sCiAgICB7ICAyLCAxNSwgIDl9LCB7ICAyLCAxNSwgMTl9LCB7ICAyLCAxNSwgMjJ9LCB7ICAyLCAxNSwgMjN9LAogICAgeyAgMiwgMTgsICAxfSwgeyAgMiwgMTgsICAyfSwgeyAgMiwgMTgsICA1fSwgeyAgMiwgMTgsICA5fSwKICAgIHsgIDIsIDE4LCAxN30sIHsgIDIsIDE4LCAxOX0sIHsgIDIsIDE4LCAyMX0sIHsgIDIsIDE4LCAyM30sCiAgICB7ICAyLCAxOSwgIDF9LCB7ICAyLCAxOSwgIDV9LCB7ICAyLCAxOSwgIDl9LCB7ICAyLCAxOSwgMTl9LAogICAgeyAgMiwgMTksIDIxfSwgeyAgMiwgMjAsICAxfSwgeyAgMiwgMjAsICAyfSwgeyAgMiwgMjAsICA1fSwKICAgIHsgIDIsIDIwLCAgOH0sIHsgIDIsIDIwLCAgOX0sIHsgIDIsIDIwLCAxMH0sIHsgIDIsIDIwLCAxMX0sCiAgICB7ICAyLCAyMCwgMTZ9LCB7ICAyLCAyMCwgMTd9LCB7ICAyLCAyMCwgMTl9LCB7ICAyLCAyMCwgMjF9LAogICAgeyAgMiwgMjAsIDIzfSwgeyAgMiwgMjAsIDI0fSwgeyAgMiwgMjEsICAxfSwgeyAgMiwgMjEsICAyfSwKICAgIHsgIDIsIDIxLCAgNX0sIHsgIDIsIDIxLCAgOX0sIHsgIDIsIDIxLCAyMn0sIHsgIDIsIDIxLCAyM30sCiAgICB7ICAyLCAyMiwgIDF9LCB7ICAyLCAyMiwgMjF9LCB7ICAyLCAyMywgIDF9LCB7ICAyLCAyMywgIDJ9LAogICAgeyAgMiwgMjMsICA1fSwgeyAgMiwgMjMsICA5fSwgeyAgMiwgMjMsIDE3fSwgeyAgMiwgMjMsIDE5fSwKICAgIHsgIDIsIDIzLCAyMX0sIHsgIDIsIDI2LCAgMX0sIHsgIDIsIDI2LCAgNX0sIHsgIDIsIDI2LCAgOX0sCiAgICB7ICAyLCAyNywgIDF9LCB7ICAyLCAyNywgIDJ9LCB7ICAyLCAyNywgIDV9LCB7ICAyLCAyNywgIDh9LAogICAgeyAgMiwgMjcsICA5fSwgeyAgMiwgMjcsIDEwfSwgeyAgMiwgMjcsIDE3fSwgeyAgMiwgMjcsIDE5fSwKICAgIHsgIDIsIDI3LCAyMX0sIHsgIDIsIDI3LCAyM30sIHsgIDIsIDI4LCAgMX0sIHsgIDIsIDI5LCAgMX0sCiAgICB7ICAyLCAyOSwgIDJ9LCB7ICAyLCAyOSwgIDV9LCB7ICAyLCAyOSwgIDh9LCB7ICAyLCAyOSwgIDl9LAogICAgeyAgMiwgMjksIDExfSwgeyAgMiwgMjksIDE3fSwgeyAgMiwgMjksIDE5fSwgeyAgMiwgMjksIDIxfSwKICAgIHsgIDIsIDI5LCAyM30sIHsgIDIsIDI5LCAyNH0sIHsgIDIsIDI5LCAyOH0sIHsgIDMsICAzLCAgMX0sCiAgICB7ICAzLCAgMywgIDJ9LCB7ICAzLCAgMywgIDN9LCB7ICAzLCAgMywgIDV9LCB7ICAzLCAgMywgIDl9LAogICAgeyAgMywgIDMsIDExfSwgeyAgMywgIDMsIDE3fSwgeyAgMywgIDMsIDE5fSwgeyAgMywgIDMsIDIxfSwKICAgIHsgIDMsICAzLCAyMn0sIHsgIDMsICAzLCAyM30sIHsgIDMsICAzLCAyN30sIHsgIDMsICA0LCAgMX0sCiAgICB7ICAzLCAgNCwgIDJ9LCB7ICAzLCAgNCwgIDV9LCB7ICAzLCAgNCwgIDl9LCB7ICAzLCAgNCwgMTd9LAogICAgeyAgMywgIDQsIDE5fSwgeyAgMywgIDQsIDIxfSwgeyAgMywgIDQsIDIyfSwgeyAgMywgIDQsIDIzfSwKICAgIHsgIDMsICA1LCAgMX0sIHsgIDMsICA1LCAgMn0sIHsgIDMsICA1LCAgOX0sIHsgIDMsICA3LCAgMX0sCiAgICB7ICAzLCAgNywgIDJ9LCB7ICAzLCAgNywgIDN9LCB7ICAzLCAgNywgIDV9LCB7ICAzLCAgNywgIDl9LAogICAgeyAgMywgIDcsIDE3fSwgeyAgMywgIDcsIDE5fSwgeyAgMywgIDcsIDIxfSwgeyAgMywgIDcsIDIyfSwKICAgIHsgIDMsICA3LCAyM30sIHsgIDMsIDEwLCAgMX0sIHsgIDMsIDEwLCAgMn0sIHsgIDMsIDEwLCAgNX0sCiAgICB7ICAzLCAxMCwgMTd9LCB7ICAzLCAxMCwgMjF9LCB7ICAzLCAxMCwgMjN9LCB7ICAzLCAxMSwgIDF9LAogICAgeyAgMywgMTEsICA1fSwgeyAgMywgMTEsICA5fSwgeyAgMywgMTEsIDIxfSwgeyAgMywgMTEsIDIyfSwKICAgIHsgIDMsIDExLCAyN30sIHsgIDMsIDEyLCAgMX0sIHsgIDMsIDEzLCAgMX0sIHsgIDMsIDEzLCAgMn0sCiAgICB7ICAzLCAxMywgIDV9LCB7ICAzLCAxMywgIDd9LCB7ICAzLCAxMywgIDl9LCB7ICAzLCAxMywgMTd9LAogICAgeyAgMywgMTMsIDE5fSwgeyAgMywgMTMsIDIxfSwgeyAgMywgMTMsIDIzfSwgeyAgMywgMTMsIDI0fSwKICAgIHsgIDMsIDEzLCAyNX0sIHsgIDMsIDE0LCAgMX0sIHsgIDMsIDE0LCAgMn0sIHsgIDMsIDE0LCAgOX0sCiAgICB7ICAzLCAxNCwgMjJ9LCB7ICAzLCAxNCwgMjN9LCB7ICAzLCAxNSwgIDF9LCB7ICAzLCAxNSwgIDJ9LAogICAgeyAgMywgMTUsIDIzfSwgeyAgMywgMTgsICAxfSwgeyAgMywgMTgsICA1fSwgeyAgMywgMTgsICA5fSwKICAgIHsgIDMsIDE4LCAxN30sIHsgIDMsIDE4LCAxOX0sIHsgIDMsIDE4LCAyM30sIHsgIDMsIDE5LCAgMX0sCiAgICB7ICAzLCAyMCwgIDF9LCB7ICAzLCAyMCwgIDJ9LCB7ICAzLCAyMCwgIDV9LCB7ICAzLCAyMCwgIDl9LAogICAgeyAgMywgMjAsIDE2fSwgeyAgMywgMjAsIDE3fSwgeyAgMywgMjAsIDE5fSwgeyAgMywgMjAsIDIxfSwKICAgIHsgIDMsIDIwLCAyM30sIHsgIDMsIDIwLCAyNH0sIHsgIDMsIDIxLCAgMX0sIHsgIDMsIDIxLCAgOX0sCiAgICB7ICAzLCAyMSwgMjJ9LCB7ICAzLCAyMSwgMjN9LCB7ICAzLCAyMiwgIDF9LCB7ICAzLCAyMiwgIDJ9LAogICAgeyAgMywgMjIsICA1fSwgeyAgMywgMjIsICA5fSwgeyAgMywgMjIsIDE3fSwgeyAgMywgMjIsIDE5fSwKICAgIHsgIDMsIDIyLCAyMn0sIHsgIDMsIDIzLCAgMX0sIHsgIDMsIDIzLCAgNX0sIHsgIDMsIDIzLCAgOX0sCiAgICB7ICAzLCAyMywgMTd9LCB7ICAzLCAyMywgMTl9LCB7ICAzLCAyNiwgIDF9LCB7ICAzLCAyNywgIDF9LAogICAgeyAgMywgMjcsICAyfSwgeyAgMywgMjcsICA1fSwgeyAgMywgMjcsICA3fSwgeyAgMywgMjcsICA5fSwKICAgIHsgIDMsIDI3LCAxMX0sIHsgIDMsIDI3LCAxNn0sIHsgIDMsIDI3LCAxN30sIHsgIDMsIDI3LCAxOX0sCiAgICB7ICAzLCAyNywgMjF9LCB7ICAzLCAyNywgMjN9LCB7ICAzLCAyNywgMjd9LCB7ICAzLCAyOSwgIDF9LAogICAgeyAgMywgMjksICAyfSwgeyAgMywgMjksICA1fSwgeyAgMywgMjksICA5fSwgeyAgMywgMjksIDE3fSwKICAgIHsgIDMsIDI5LCAxOX0sIHsgIDMsIDI5LCAyMX0sIHsgIDMsIDI5LCAyM30sIHsgIDQsICAzLCAgMX0sCiAgICB7ICA0LCAgMywgIDJ9LCB7ICA0LCAgMywgIDN9LCB7ICA0LCAgMywgIDV9LCB7ICA0LCAgMywgIDh9LAogICAgeyAgNCwgIDMsICA5fSwgeyAgNCwgIDMsIDEwfSwgeyAgNCwgIDMsIDExfSwgeyAgNCwgIDMsIDE3fSwKICAgIHsgIDQsICAzLCAxOX0sIHsgIDQsICAzLCAyMX0sIHsgIDQsICAzLCAyMn0sIHsgIDQsICAzLCAyM30sCiAgICB7ICA0LCAgMywgMjR9LCB7ICA0LCAgMywgMjV9LCB7ICA0LCAgMywgMjd9LCB7ICA0LCAgMywgMjl9LAogICAgeyAgNCwgIDQsICAxfSwgeyAgNCwgIDQsICAyfSwgeyAgNCwgIDQsICA1fSwgeyAgNCwgIDQsICA5fSwKICAgIHsgIDQsICA0LCAxN30sIHsgIDQsICA0LCAxOX0sIHsgIDQsICA0LCAyMX0sIHsgIDQsICA0LCAyMn0sCiAgICB7ICA0LCAgNCwgMjN9LCB7ICA0LCAgNSwgIDF9LCB7ICA0LCAgNSwgIDJ9LCB7ICA0LCAgNSwgIDV9LAogICAgeyAgNCwgIDUsICA5fSwgeyAgNCwgIDUsIDE3fSwgeyAgNCwgIDUsIDIzfSwgeyAgNCwgIDcsICAxfSwKICAgIHsgIDQsICA3LCAgMn0sIHsgIDQsICA3LCAgNH0sIHsgIDQsICA3LCAgNX0sIHsgIDQsICA3LCAgOX0sCiAgICB7ICA0LCAgNywgMTF9LCB7ICA0LCAgNywgMTJ9LCB7ICA0LCAgNywgMTd9LCB7ICA0LCAgNywgMTl9LAogICAgeyAgNCwgIDcsIDIxfSwgeyAgNCwgIDcsIDIyfSwgeyAgNCwgIDcsIDIzfSwgeyAgNCwgIDcsIDI5fSwKICAgIHsgIDQsIDEwLCAgMX0sIHsgIDQsIDEwLCAgMn0sIHsgIDQsIDEwLCAgNX0sIHsgIDQsIDEwLCAgOX0sCiAgICB7ICA0LCAxMCwgMTd9LCB7ICA0LCAxMCwgMTl9LCB7ICA0LCAxMCwgMjF9LCB7ICA0LCAxMCwgMjJ9LAogICAgeyAgNCwgMTAsIDIzfSwgeyAgNCwgMTEsICAxfSwgeyAgNCwgMTEsICAyfSwgeyAgNCwgMTEsICA1fSwKICAgIHsgIDQsIDExLCAgOX0sIHsgIDQsIDExLCAxN30sIHsgIDQsIDExLCAxOX0sIHsgIDQsIDExLCAyMn0sCiAgICB7ICA0LCAxMSwgMjN9LCB7ICA0LCAxMSwgMjZ9LCB7ICA0LCAxMiwgIDF9LCB7ICA0LCAxMiwgIDV9LAogICAgeyAgNCwgMTMsICAxfSwgeyAgNCwgMTMsICAyfSwgeyAgNCwgMTMsICA1fSwgeyAgNCwgMTMsICA5fSwKICAgIHsgIDQsIDEzLCAxMX0sIHsgIDQsIDEzLCAxN30sIHsgIDQsIDEzLCAxOX0sIHsgIDQsIDEzLCAyMX0sCiAgICB7ICA0LCAxMywgMjN9LCB7ICA0LCAxMywgMjh9LCB7ICA0LCAxMywgMjl9LCB7ICA0LCAxNCwgIDF9LAogICAgeyAgNCwgMTQsICA1fSwgeyAgNCwgMTQsICA5fSwgeyAgNCwgMTQsIDIyfSwgeyAgNCwgMTgsICAxfSwKICAgIHsgIDQsIDE4LCAgNX0sIHsgIDQsIDE4LCAgOX0sIHsgIDQsIDE4LCAxN30sIHsgIDQsIDE4LCAxOX0sCiAgICB7ICA0LCAxOCwgMjF9LCB7ICA0LCAxOSwgIDF9LCB7ICA0LCAxOSwgIDJ9LCB7ICA0LCAxOSwgIDV9LAogICAgeyAgNCwgMTksICA5fSwgeyAgNCwgMTksIDE5fSwgeyAgNCwgMTksIDIxfSwgeyAgNCwgMTksIDIzfSwKICAgIHsgIDQsIDIwLCAgMX0sIHsgIDQsIDIwLCAgMn0sIHsgIDQsIDIwLCAgNX0sIHsgIDQsIDIwLCAgOH0sCiAgICB7ICA0LCAyMCwgIDl9LCB7ICA0LCAyMCwgMTd9LCB7ICA0LCAyMCwgMTl9LCB7ICA0LCAyMCwgMjF9LAogICAgeyAgNCwgMjAsIDIzfSwgeyAgNCwgMjEsICAxfSwgeyAgNCwgMjEsIDIyfSwgeyAgNCwgMjIsICAxfSwKICAgIHsgIDQsIDIzLCAgMX0sIHsgIDQsIDIzLCAgNX0sIHsgIDQsIDIzLCAgOX0sIHsgIDQsIDIzLCAxN30sCiAgICB7ICA0LCAyMywgMTl9LCB7ICA0LCAyNiwgIDF9LCB7ICA0LCAyNiwgIDJ9LCB7ICA0LCAyNiwgIDl9LAogICAgeyAgNCwgMjYsIDE3fSwgeyAgNCwgMjYsIDE5fSwgeyAgNCwgMjYsIDIzfSwgeyAgNCwgMjcsICAxfSwKICAgIHsgIDQsIDI3LCAgMn0sIHsgIDQsIDI3LCAgNX0sIHsgIDQsIDI3LCAgOX0sIHsgIDQsIDI3LCAxMH0sCiAgICB7ICA0LCAyNywgMTF9LCB7ICA0LCAyNywgMTd9LCB7ICA0LCAyNywgMTl9LCB7ICA0LCAyNywgMjF9LAogICAgeyAgNCwgMjcsIDIzfSwgeyAgNCwgMjcsIDI0fSwgeyAgNCwgMjcsIDI4fSwgeyAgNCwgMjgsICAxfSwKICAgIHsgIDQsIDI4LCAgNX0sIHsgIDQsIDI4LCAgOX0sIHsgIDQsIDI5LCAgMX0sIHsgIDQsIDI5LCAgMn0sCiAgICB7ICA0LCAyOSwgIDV9LCB7ICA0LCAyOSwgIDl9LCB7ICA0LCAyOSwgMTF9LCB7ICA0LCAyOSwgMTd9LAogICAgeyAgNCwgMjksIDE5fSwgeyAgNCwgMjksIDIxfSwgeyAgNCwgMjksIDIzfSwgeyAgNCwgMjksIDI4fSwKICAgIHsgIDUsICAzLCAgMX0sIHsgIDUsICAzLCAgMn0sIHsgIDUsICAzLCAgM30sIHsgIDUsICAzLCAgNX0sCiAgICB7ICA1LCAgMywgIDh9LCB7ICA1LCAgMywgIDl9LCB7ICA1LCAgMywgMTB9LCB7ICA1LCAgMywgMTF9LAogICAgeyAgNSwgIDMsIDEyfSwgeyAgNSwgIDMsIDE2fSwgeyAgNSwgIDMsIDE3fSwgeyAgNSwgIDMsIDE5fSwKICAgIHsgIDUsICAzLCAyMX0sIHsgIDUsICAzLCAyMn0sIHsgIDUsICAzLCAyM30sIHsgIDUsICAzLCAyNH0sCiAgICB7ICA1LCAgMywgMjV9LCB7ICA1LCAgMywgMjl9LCB7ICA1LCAgNCwgIDF9LCB7ICA1LCAgNCwgIDJ9LAogICAgeyAgNSwgIDQsICA1fSwgeyAgNSwgIDQsICA5fSwgeyAgNSwgIDQsIDE3fSwgeyAgNSwgIDQsIDE5fSwKICAgIHsgIDUsICA0LCAyMX0sIHsgIDUsICA0LCAyMn0sIHsgIDUsICA0LCAyM30sIHsgIDUsICA1LCAgMX0sCiAgICB7ICA1LCAgNywgIDF9LCB7ICA1LCAgNywgIDJ9LCB7ICA1LCAgNywgIDN9LCB7ICA1LCAgNywgIDV9LAogICAgeyAgNSwgIDcsICA4fSwgeyAgNSwgIDcsICA5fSwgeyAgNSwgIDcsIDExfSwgeyAgNSwgIDcsIDEyfSwKICAgIHsgIDUsICA3LCAxN30sIHsgIDUsICA3LCAxOX0sIHsgIDUsICA3LCAyMX0sIHsgIDUsICA3LCAyM30sCiAgICB7ICA1LCAgNywgMjV9LCB7ICA1LCAgNywgMjh9LCB7ICA1LCAxMCwgIDF9LCB7ICA1LCAxMCwgIDJ9LAogICAgeyAgNSwgMTAsICA1fSwgeyAgNSwgMTAsICA5fSwgeyAgNSwgMTAsIDE3fSwgeyAgNSwgMTAsIDE5fSwKICAgIHsgIDUsIDEwLCAyMX0sIHsgIDUsIDEwLCAyMn0sIHsgIDUsIDEwLCAyM30sIHsgIDUsIDExLCAgMX0sCiAgICB7ICA1LCAxMSwgIDV9LCB7ICA1LCAxMSwgIDl9LCB7ICA1LCAxMSwgMjJ9LCB7ICA1LCAxMSwgMjN9LAogICAgeyAgNSwgMTIsICAxfSwgeyAgNSwgMTIsICA1fSwgeyAgNSwgMTMsICAxfSwgeyAgNSwgMTMsICAyfSwKICAgIHsgIDUsIDEzLCAgNX0sIHsgIDUsIDEzLCAgOH0sIHsgIDUsIDEzLCAgOX0sIHsgIDUsIDEzLCAxMX0sCiAgICB7ICA1LCAxMywgMTN9LCB7ICA1LCAxMywgMTd9LCB7ICA1LCAxMywgMTl9LCB7ICA1LCAxMywgMjF9LAogICAgeyAgNSwgMTMsIDIzfSwgeyAgNSwgMTMsIDI1fSwgeyAgNSwgMTMsIDI3fSwgeyAgNSwgMTQsICAxfSwKICAgIHsgIDUsIDE0LCAgNX0sIHsgIDUsIDE0LCAgOX0sIHsgIDUsIDE1LCAgMX0sIHsgIDUsIDE1LCAyMn0sCiAgICB7ICA1LCAxOCwgIDF9LCB7ICA1LCAxOCwgIDV9LCB7ICA1LCAxOCwgIDl9LCB7ICA1LCAxOCwgMTd9LAogICAgeyAgNSwgMTgsIDE5fSwgeyAgNSwgMTgsIDIxfSwgeyAgNSwgMTksICAxfSwgeyAgNSwgMjAsICAxfSwKICAgIHsgIDUsIDIwLCAgMn0sIHsgIDUsIDIwLCAgNX0sIHsgIDUsIDIwLCAgOX0sIHsgIDUsIDIwLCAxN30sCiAgICB7ICA1LCAyMCwgMTl9LCB7ICA1LCAyMCwgMjF9LCB7ICA1LCAyMCwgMjN9LCB7ICA1LCAyMSwgIDF9LAogICAgeyAgNSwgMjEsIDIyfSwgeyAgNSwgMjIsICAxfSwgeyAgNSwgMjIsIDIzfSwgeyAgNSwgMjMsICAxfSwKICAgIHsgIDUsIDIzLCAgNX0sIHsgIDUsIDIzLCAgOX0sIHsgIDUsIDIzLCAxOX0sIHsgIDUsIDIzLCAyMX0sCiAgICB7ICA1LCAyMywgMjN9LCB7ICA1LCAyNiwgIDF9LCB7ICA1LCAyNiwgIDV9LCB7ICA1LCAyNiwgIDl9LAogICAgeyAgNSwgMjYsIDE3fSwgeyAgNSwgMjYsIDIzfSwgeyAgNSwgMjcsICAxfSwgeyAgNSwgMjcsICAyfSwKICAgIHsgIDUsIDI3LCAgNX0sIHsgIDUsIDI3LCAgOH0sIHsgIDUsIDI3LCAgOX0sIHsgIDUsIDI3LCAxMX0sCiAgICB7ICA1LCAyNywgMTd9LCB7ICA1LCAyNywgMTl9LCB7ICA1LCAyNywgMjF9LCB7ICA1LCAyNywgMjN9LAogICAgeyAgNSwgMjgsICAxfSwgeyAgNSwgMjksICAxfSwgeyAgNSwgMjksICAyfSwgeyAgNSwgMjksICA1fSwKICAgIHsgIDUsIDI5LCAgOH0sIHsgIDUsIDI5LCAgOX0sIHsgIDUsIDI5LCAxN30sIHsgIDUsIDI5LCAxOX0sCiAgICB7ICA1LCAyOSwgMjF9LCB7ICA1LCAyOSwgMjJ9LCB7ICA1LCAyOSwgMjN9LCB7ICA1LCAyOSwgMjR9LAogICAgeyAgNiwgIDMsICAxfSwgeyAgNiwgIDMsICAyfSwgeyAgNiwgIDMsICA1fSwgeyAgNiwgIDMsICA5fSwKICAgIHsgIDYsICAzLCAxN30sIHsgIDYsICAzLCAxOX0sIHsgIDYsICAzLCAyMX0sIHsgIDYsICAzLCAyMn0sCiAgICB7ICA2LCAgMywgMjN9LCB7ICA2LCAgMywgMjl9LCB7ICA2LCAgNCwgIDF9LCB7ICA2LCAgNCwgIDJ9LAogICAgeyAgNiwgIDQsICA1fSwgeyAgNiwgIDQsICA5fSwgeyAgNiwgIDQsIDE3fSwgeyAgNiwgIDQsIDE5fSwKICAgIHsgIDYsICA0LCAyMX0sIHsgIDYsICA0LCAyMn0sIHsgIDYsICA0LCAyM30sIHsgIDYsICA3LCAgMX0sCiAgICB7ICA2LCAgNywgIDJ9LCB7ICA2LCAgNywgIDV9LCB7ICA2LCAgNywgIDl9LCB7ICA2LCAgNywgMTF9LAogICAgeyAgNiwgIDcsIDEyfSwgeyAgNiwgIDcsIDE3fSwgeyAgNiwgIDcsIDE5fSwgeyAgNiwgIDcsIDIxfSwKICAgIHsgIDYsICA3LCAyMn0sIHsgIDYsICA3LCAyM30sIHsgIDYsICA3LCAyOX0sIHsgIDYsIDEwLCAgMX0sCiAgICB7ICA2LCAxMCwgIDJ9LCB7ICA2LCAxMCwgIDV9LCB7ICA2LCAxMCwgIDl9LCB7ICA2LCAxMCwgMTd9LAogICAgeyAgNiwgMTAsIDE5fSwgeyAgNiwgMTAsIDIxfSwgeyAgNiwgMTAsIDIyfSwgeyAgNiwgMTAsIDIzfSwKICAgIHsgIDYsIDExLCAgMX0sIHsgIDYsIDExLCAyMn0sIHsgIDYsIDEzLCAgMX0sIHsgIDYsIDEzLCAgMn0sCiAgICB7ICA2LCAxMywgIDV9LCB7ICA2LCAxMywgIDl9LCB7ICA2LCAxMywgMjN9LCB7ICA2LCAxNCwgIDF9LAogICAgeyAgNiwgMTQsICA5fSwgeyAgNiwgMTUsICAxfSwgeyAgNiwgMTgsICAxfSwgeyAgNiwgMTgsICA1fSwKICAgIHsgIDYsIDIwLCAgMX0sIHsgIDYsIDIwLCAgMn0sIHsgIDYsIDIwLCAgNX0sIHsgIDYsIDIwLCAgOX0sCiAgICB7ICA2LCAyMCwgMTZ9LCB7ICA2LCAyMCwgMTd9LCB7ICA2LCAyMCwgMjN9LCB7ICA2LCAyMiwgIDF9LAogICAgeyAgNiwgMjMsICAxfSwgeyAgNiwgMjMsICA1fSwgeyAgNiwgMjMsICA5fSwgeyAgNiwgMjMsIDE3fSwKICAgIHsgIDYsIDIzLCAxOX0sIHsgIDYsIDIzLCAyM30sIHsgIDYsIDI3LCAgMX0sIHsgIDYsIDI3LCAgMn0sCiAgICB7ICA2LCAyNywgIDV9LCB7ICA2LCAyNywgIDh9LCB7ICA2LCAyNywgIDl9LCB7ICA2LCAyNywgMTd9LAogICAgeyAgNiwgMjcsIDE5fSwgeyAgNiwgMjcsIDIxfSwgeyAgNiwgMjgsICAxfSwgeyAgNiwgMjgsICA1fSwKICAgIHsgIDYsIDI4LCAgOX0sIHsgIDYsIDI4LCAxN30sIHsgIDYsIDI4LCAxOX0sIHsgIDYsIDI5LCAgMX0sCiAgICB7ICA2LCAyOSwgIDV9LCB7ICA2LCAyOSwgIDl9LCB7ICA2LCAyOSwgMTd9LCB7ICA2LCAyOSwgMTl9LAogICAgeyAgNiwgMjksIDIxfSwgeyAgNiwgMjksIDIzfSwgeyAgNywgIDMsICAxfSwgeyAgNywgIDMsICAyfSwKICAgIHsgIDcsICAzLCAgNX0sIHsgIDcsICAzLCAgOX0sIHsgIDcsICAzLCAxN30sIHsgIDcsICAzLCAxOX0sCiAgICB7ICA3LCAgMywgMjF9LCB7ICA3LCAgMywgMjJ9LCB7ICA3LCAgMywgMjN9LCB7ICA3LCAgMywgMjR9LAogICAgeyAgNywgIDMsIDI4fSwgeyAgNywgIDMsIDI5fSwgeyAgNywgIDQsICAxfSwgeyAgNywgIDQsICAyfSwKICAgIHsgIDcsICA0LCAgNX0sIHsgIDcsICA0LCAgOX0sIHsgIDcsICA0LCAxN30sIHsgIDcsICA0LCAxOX0sCiAgICB7ICA3LCAgNCwgMjF9LCB7ICA3LCAgNCwgMjJ9LCB7ICA3LCAgNCwgMjN9LCB7ICA3LCAgNSwgIDF9LAogICAgeyAgNywgIDUsICAyfSwgeyAgNywgIDUsICA1fSwgeyAgNywgIDUsIDIxfSwgeyAgNywgIDUsIDIzfSwKICAgIHsgIDcsICA3LCAgMX0sIHsgIDcsICA3LCAgMn0sIHsgIDcsICA3LCAgNX0sIHsgIDcsICA3LCAgOX0sCiAgICB7ICA3LCAgNywgMTd9LCB7ICA3LCAgNywgMTl9LCB7ICA3LCAgNywgMjF9LCB7ICA3LCAgNywgMjJ9LAogICAgeyAgNywgIDcsIDIzfSwgeyAgNywgIDcsIDI5fSwgeyAgNywgMTAsICAxfSwgeyAgNywgMTAsICAyfSwKICAgIHsgIDcsIDEwLCAgNX0sIHsgIDcsIDEwLCAgOX0sIHsgIDcsIDEwLCAxN30sIHsgIDcsIDEwLCAxOX0sCiAgICB7ICA3LCAxMCwgMjF9LCB7ICA3LCAxMCwgMjN9LCB7ICA3LCAxMSwgIDF9LCB7ICA3LCAxMSwgIDJ9LAogICAgeyAgNywgMTEsICA1fSwgeyAgNywgMTEsICA5fSwgeyAgNywgMTEsIDE3fSwgeyAgNywgMTEsIDE5fSwKICAgIHsgIDcsIDExLCAyMX0sIHsgIDcsIDExLCAyMn0sIHsgIDcsIDExLCAyM30sIHsgIDcsIDEyLCAgMX0sCiAgICB7ICA3LCAxMiwgIDV9LCB7ICA3LCAxMiwgMTl9LCB7ICA3LCAxMiwgMjF9LCB7ICA3LCAxMywgIDF9LAogICAgeyAgNywgMTMsICAyfSwgeyAgNywgMTMsICA1fSwgeyAgNywgMTMsICA5fSwgeyAgNywgMTMsIDE3fSwKICAgIHsgIDcsIDEzLCAxOX0sIHsgIDcsIDEzLCAyMX0sIHsgIDcsIDEzLCAyM30sIHsgIDcsIDE0LCAgMX0sCiAgICB7ICA3LCAxNCwgIDV9LCB7ICA3LCAxNCwgMjN9LCB7ICA3LCAxNSwgMjJ9LCB7ICA3LCAxOCwgIDF9LAogICAgeyAgNywgMTgsICA1fSwgeyAgNywgMTgsICA5fSwgeyAgNywgMTgsIDE3fSwgeyAgNywgMTgsIDE5fSwKICAgIHsgIDcsIDE4LCAyMX0sIHsgIDcsIDE4LCAyM30sIHsgIDcsIDE5LCAgMX0sIHsgIDcsIDE5LCAgNX0sCiAgICB7ICA3LCAxOSwgIDl9LCB7ICA3LCAxOSwgMTl9LCB7ICA3LCAxOSwgMjF9LCB7ICA3LCAxOSwgMjN9LAogICAgeyAgNywgMjAsICAxfSwgeyAgNywgMjAsICAyfSwgeyAgNywgMjAsICA1fSwgeyAgNywgMjAsICA5fSwKICAgIHsgIDcsIDIwLCAxN30sIHsgIDcsIDIwLCAxOX0sIHsgIDcsIDIwLCAyMX0sIHsgIDcsIDIwLCAyM30sCiAgICB7ICA3LCAyMSwgIDF9LCB7ICA3LCAyMSwgMjJ9LCB7ICA3LCAyMiwgIDF9LCB7ICA3LCAyMywgIDF9LAogICAgeyAgNywgMjMsICAyfSwgeyAgNywgMjMsICA1fSwgeyAgNywgMjMsICA5fSwgeyAgNywgMjMsIDE3fSwKICAgIHsgIDcsIDIzLCAyMX0sIHsgIDcsIDIzLCAyM30sIHsgIDcsIDI2LCAgMX0sIHsgIDcsIDI2LCAgMn0sCiAgICB7ICA3LCAyNiwgIDV9LCB7ICA3LCAyNiwgIDl9LCB7ICA3LCAyNiwgMTd9LCB7ICA3LCAyNiwgMTl9LAogICAgeyAgNywgMjYsIDIxfSwgeyAgNywgMjYsIDIzfSwgeyAgNywgMjcsICAxfSwgeyAgNywgMjcsICAyfSwKICAgIHsgIDcsIDI3LCAgNX0sIHsgIDcsIDI3LCAgOX0sIHsgIDcsIDI3LCAxN30sIHsgIDcsIDI3LCAxOX0sCiAgICB7ICA3LCAyNywgMjF9LCB7ICA3LCAyNywgMjN9LCB7ICA3LCAyNywgMjR9LCB7ICA3LCAyNywgMjd9LAogICAgeyAgNywgMjcsIDI4fSwgeyAgNywgMjksICAxfSwgeyAgNywgMjksICAyfSwgeyAgNywgMjksICA1fSwKICAgIHsgIDcsIDI5LCAgOX0sIHsgIDcsIDI5LCAxN30sIHsgIDcsIDI5LCAxOX0sIHsgIDcsIDI5LCAyMX0sCiAgICB7ICA3LCAyOSwgMjN9LCB7ICA4LCAgMywgIDF9LCB7ICA4LCAgMywgIDJ9LCB7ICA4LCAgMywgIDV9LAogICAgeyAgOCwgIDMsICA3fSwgeyAgOCwgIDMsICA4fSwgeyAgOCwgIDMsICA5fSwgeyAgOCwgIDMsIDEwfSwKICAgIHsgIDgsICAzLCAxMX0sIHsgIDgsICAzLCAxN30sIHsgIDgsICAzLCAxOX0sIHsgIDgsICAzLCAyMX0sCiAgICB7ICA4LCAgMywgMjN9LCB7ICA4LCAgMywgMjR9LCB7ICA4LCAgMywgMjd9LCB7ICA4LCAgMywgMjl9LAogICAgeyAgOCwgIDQsICAxfSwgeyAgOCwgIDQsICAyfSwgeyAgOCwgIDQsICA1fSwgeyAgOCwgIDQsICA5fSwKICAgIHsgIDgsICA0LCAxN30sIHsgIDgsICA0LCAxOX0sIHsgIDgsICA0LCAyMX0sIHsgIDgsICA0LCAyMn0sCiAgICB7ICA4LCAgNCwgMjN9LCB7ICA4LCAgNCwgMjR9LCB7ICA4LCAgNSwgIDF9LCB7ICA4LCAgNSwgIDJ9LAogICAgeyAgOCwgIDUsICA5fSwgeyAgOCwgIDUsIDIzfSwgeyAgOCwgIDcsICAxfSwgeyAgOCwgIDcsICAyfSwKICAgIHsgIDgsICA3LCAgNX0sIHsgIDgsICA3LCAgOX0sIHsgIDgsICA3LCAxMX0sIHsgIDgsICA3LCAxN30sCiAgICB7ICA4LCAgNywgMTl9LCB7ICA4LCAgNywgMjF9LCB7ICA4LCAgNywgMjN9LCB7ICA4LCAgNywgMjR9LAogICAgeyAgOCwgIDcsIDI5fSwgeyAgOCwgMTAsICAxfSwgeyAgOCwgMTAsICAyfSwgeyAgOCwgMTAsICA1fSwKICAgIHsgIDgsIDEwLCAgOX0sIHsgIDgsIDEwLCAxN30sIHsgIDgsIDEwLCAxOX0sIHsgIDgsIDEwLCAyMX0sCiAgICB7ICA4LCAxMCwgMjJ9LCB7ICA4LCAxMCwgMjN9LCB7ICA4LCAxMSwgIDF9LCB7ICA4LCAxMSwgIDJ9LAogICAgeyAgOCwgMTEsICA1fSwgeyAgOCwgMTEsICA5fSwgeyAgOCwgMTEsIDIxfSwgeyAgOCwgMTEsIDIyfSwKICAgIHsgIDgsIDExLCAyM30sIHsgIDgsIDExLCAyNX0sIHsgIDgsIDEyLCAgMX0sIHsgIDgsIDEzLCAgMX0sCiAgICB7ICA4LCAxMywgIDJ9LCB7ICA4LCAxMywgIDR9LCB7ICA4LCAxMywgIDV9LCB7ICA4LCAxMywgIDl9LAogICAgeyAgOCwgMTMsIDExfSwgeyAgOCwgMTMsIDE3fSwgeyAgOCwgMTMsIDE5fSwgeyAgOCwgMTMsIDIxfSwKICAgIHsgIDgsIDEzLCAyM30sIHsgIDgsIDE0LCAgMX0sIHsgIDgsIDE0LCAgNX0sIHsgIDgsIDE0LCAyMn0sCiAgICB7ICA4LCAxNCwgMjN9LCB7ICA4LCAxOCwgIDF9LCB7ICA4LCAxOCwgIDV9LCB7ICA4LCAxOCwgIDl9LAogICAgeyAgOCwgMTgsIDE5fSwgeyAgOCwgMTgsIDIxfSwgeyAgOCwgMTgsIDIzfSwgeyAgOCwgMTksICAxfSwKICAgIHsgIDgsIDE5LCAgNX0sIHsgIDgsIDE5LCAgOX0sIHsgIDgsIDE5LCAxOX0sIHsgIDgsIDE5LCAyMX0sCiAgICB7ICA4LCAyMCwgIDF9LCB7ICA4LCAyMCwgIDJ9LCB7ICA4LCAyMCwgIDN9LCB7ICA4LCAyMCwgIDV9LAogICAgeyAgOCwgMjAsICA4fSwgeyAgOCwgMjAsICA5fSwgeyAgOCwgMjAsIDEwfSwgeyAgOCwgMjAsIDExfSwKICAgIHsgIDgsIDIwLCAxN30sIHsgIDgsIDIwLCAxOX0sIHsgIDgsIDIwLCAyMX0sIHsgIDgsIDIwLCAyM30sCiAgICB7ICA4LCAyMCwgMjd9LCB7ICA4LCAyMCwgMjl9LCB7ICA4LCAyMSwgIDF9LCB7ICA4LCAyMSwgIDV9LAogICAgeyAgOCwgMjEsICA5fSwgeyAgOCwgMjEsIDE5fSwgeyAgOCwgMjEsIDIxfSwgeyAgOCwgMjIsICAxfSwKICAgIHsgIDgsIDIzLCAgMX0sIHsgIDgsIDIzLCAgNX0sIHsgIDgsIDIzLCAgOX0sIHsgIDgsIDI2LCAgMX0sCiAgICB7ICA4LCAyNiwgIDV9LCB7ICA4LCAyNiwgIDl9LCB7ICA4LCAyNiwgMTd9LCB7ICA4LCAyNiwgMjF9LAogICAgeyAgOCwgMjcsICAxfSwgeyAgOCwgMjcsICA1fSwgeyAgOCwgMjcsICA5fSwgeyAgOCwgMjcsIDE3fSwKICAgIHsgIDgsIDI3LCAyMX0sIHsgIDgsIDI5LCAgMX0sIHsgIDgsIDI5LCAgMn0sIHsgIDgsIDI5LCAgNX0sCiAgICB7ICA4LCAyOSwgIDh9LCB7ICA4LCAyOSwgIDl9LCB7ICA4LCAyOSwgMTF9LCB7ICA4LCAyOSwgMTd9LAogICAgeyAgOCwgMjksIDE5fSwgeyAgOCwgMjksIDIxfSwgeyAgOCwgMjksIDIyfSwgeyAgOCwgMjksIDIzfSwKICAgIHsgIDgsIDI5LCAyNX0sIHsgIDgsIDI5LCAyN30sIHsgIDksICAzLCAgMX0sIHsgIDksICAzLCAgMn0sCiAgICB7ICA5LCAgMywgIDN9LCB7ICA5LCAgMywgIDR9LCB7ICA5LCAgMywgIDV9LCB7ICA5LCAgMywgIDh9LAogICAgeyAgOSwgIDMsICA5fSwgeyAgOSwgIDMsIDEwfSwgeyAgOSwgIDMsIDExfSwgeyAgOSwgIDMsIDEyfSwKICAgIHsgIDksICAzLCAxN30sIHsgIDksICAzLCAxOX0sIHsgIDksICAzLCAyMX0sIHsgIDksICAzLCAyM30sCiAgICB7ICA5LCAgMywgMjd9LCB7ICA5LCAgNCwgIDF9LCB7ICA5LCAgNCwgIDJ9LCB7ICA5LCAgNCwgIDV9LAogICAgeyAgOSwgIDQsICA5fSwgeyAgOSwgIDQsIDE3fSwgeyAgOSwgIDQsIDE5fSwgeyAgOSwgIDQsIDIxfSwKICAgIHsgIDksICA0LCAyMn0sIHsgIDksICA0LCAyM30sIHsgIDksICA0LCAyN30sIHsgIDksICA1LCAgMX0sCiAgICB7ICA5LCAgNSwgIDJ9LCB7ICA5LCAgNSwgIDV9LCB7ICA5LCAgNSwgMTl9LCB7ICA5LCAgNywgIDF9LAogICAgeyAgOSwgIDcsICAyfSwgeyAgOSwgIDcsICA1fSwgeyAgOSwgIDcsICA4fSwgeyAgOSwgIDcsICA5fSwKICAgIHsgIDksICA3LCAxMX0sIHsgIDksICA3LCAxN30sIHsgIDksICA3LCAxOX0sIHsgIDksICA3LCAyMX0sCiAgICB7ICA5LCAgNywgMjN9LCB7ICA5LCAgNywgMjR9LCB7ICA5LCAxMCwgIDF9LCB7ICA5LCAxMCwgIDJ9LAogICAgeyAgOSwgMTAsICA1fSwgeyAgOSwgMTAsICA4fSwgeyAgOSwgMTAsICA5fSwgeyAgOSwgMTAsIDE3fSwKICAgIHsgIDksIDEwLCAxOX0sIHsgIDksIDEwLCAyMX0sIHsgIDksIDEwLCAyMn0sIHsgIDksIDEwLCAyM30sCiAgICB7ICA5LCAxMSwgIDF9LCB7ICA5LCAxMSwgIDJ9LCB7ICA5LCAxMSwgIDV9LCB7ICA5LCAxMSwgIDl9LAogICAgeyAgOSwgMTEsIDE5fSwgeyAgOSwgMTEsIDIxfSwgeyAgOSwgMTEsIDIyfSwgeyAgOSwgMTEsIDIzfSwKICAgIHsgIDksIDExLCAyN30sIHsgIDksIDEyLCAgMX0sIHsgIDksIDEyLCAgNX0sIHsgIDksIDEzLCAgMX0sCiAgICB7ICA5LCAxMywgIDJ9LCB7ICA5LCAxMywgIDN9LCB7ICA5LCAxMywgIDV9LCB7ICA5LCAxMywgIDl9LAogICAgeyAgOSwgMTMsIDE3fSwgeyAgOSwgMTMsIDE5fSwgeyAgOSwgMTMsIDIxfSwgeyAgOSwgMTMsIDIzfSwKICAgIHsgIDksIDE0LCAgMX0sIHsgIDksIDE0LCAgNX0sIHsgIDksIDE0LCAyMn0sIHsgIDksIDE1LCAgMX0sCiAgICB7ICA5LCAxNSwgMjJ9LCB7ICA5LCAxOCwgIDF9LCB7ICA5LCAxOCwgIDJ9LCB7ICA5LCAxOCwgIDV9LAogICAgeyAgOSwgMTgsICA5fSwgeyAgOSwgMTgsIDE3fSwgeyAgOSwgMTgsIDE5fSwgeyAgOSwgMTksICAxfSwKICAgIHsgIDksIDE5LCAgNX0sIHsgIDksIDIwLCAgMX0sIHsgIDksIDIwLCAgMn0sIHsgIDksIDIwLCAgNX0sCiAgICB7ICA5LCAyMCwgIDh9LCB7ICA5LCAyMCwgIDl9LCB7ICA5LCAyMCwgMTB9LCB7ICA5LCAyMCwgMTF9LAogICAgeyAgOSwgMjAsIDE3fSwgeyAgOSwgMjAsIDE5fSwgeyAgOSwgMjAsIDIxfSwgeyAgOSwgMjAsIDIzfSwKICAgIHsgIDksIDIwLCAyN30sIHsgIDksIDIwLCAyOH0sIHsgIDksIDIxLCAgMX0sIHsgIDksIDIxLCAgOX0sCiAgICB7ICA5LCAyMSwgMjJ9LCB7ICA5LCAyMiwgIDF9LCB7ICA5LCAyMywgIDF9LCB7ICA5LCAyMywgIDJ9LAogICAgeyAgOSwgMjMsICA1fSwgeyAgOSwgMjMsICA5fSwgeyAgOSwgMjMsIDIzfSwgeyAgOSwgMjYsICAxfSwKICAgIHsgIDksIDI2LCAgNX0sIHsgIDksIDI2LCAgOX0sIHsgIDksIDI2LCAxN30sIHsgIDksIDI2LCAyMX0sCiAgICB7ICA5LCAyNiwgMjN9LCB7ICA5LCAyNywgIDF9LCB7ICA5LCAyNywgIDJ9LCB7ICA5LCAyNywgIDV9LAogICAgeyAgOSwgMjcsICA5fSwgeyAgOSwgMjcsIDE3fSwgeyAgOSwgMjcsIDE5fSwgeyAgOSwgMjcsIDIxfSwKICAgIHsgIDksIDI5LCAgMX0sIHsgIDksIDI5LCAgMn0sIHsgIDksIDI5LCAgNX0sIHsgIDksIDI5LCAgOX0sCiAgICB7ICA5LCAyOSwgMTF9LCB7ICA5LCAyOSwgMTd9LCB7ICA5LCAyOSwgMTl9LCB7ICA5LCAyOSwgMjF9LAogICAgeyAgOSwgMjksIDIzfSwgeyAgOSwgMjksIDI0fSwgeyAgOSwgMjksIDI1fSwgeyAxMCwgIDMsICAxfSwKICAgIHsgMTAsICAzLCAgMn0sIHsgMTAsICAzLCAgNX0sIHsgMTAsICAzLCAgOX0sIHsgMTAsICAzLCAxMX0sCiAgICB7IDEwLCAgMywgMTd9LCB7IDEwLCAgMywgMTl9LCB7IDEwLCAgMywgMjF9LCB7IDEwLCAgMywgMjJ9LAogICAgeyAxMCwgIDMsIDIzfSwgeyAxMCwgIDMsIDI5fSwgeyAxMCwgIDQsICAxfSwgeyAxMCwgIDQsICAyfSwKICAgIHsgMTAsICA0LCAgNX0sIHsgMTAsICA0LCAgOX0sIHsgMTAsICA0LCAxN30sIHsgMTAsICA0LCAxOX0sCiAgICB7IDEwLCAgNCwgMjF9LCB7IDEwLCAgNCwgMjJ9LCB7IDEwLCAgNCwgMjN9LCB7IDEwLCAgNSwgIDF9LAogICAgeyAxMCwgIDUsICAyfSwgeyAxMCwgIDUsIDE3fSwgeyAxMCwgIDcsICAxfSwgeyAxMCwgIDcsICAyfSwKICAgIHsgMTAsICA3LCAgNX0sIHsgMTAsICA3LCAgOH0sIHsgMTAsICA3LCAgOX0sIHsgMTAsICA3LCAxN30sCiAgICB7IDEwLCAgNywgMjF9LCB7IDEwLCAgNywgMjJ9LCB7IDEwLCAgNywgMjN9LCB7IDEwLCAxMCwgIDF9LAogICAgeyAxMCwgMTAsIDIzfSwgeyAxMCwgMTEsICAxfSwgeyAxMCwgMTEsICAyfSwgeyAxMCwgMTEsIDE3fSwKICAgIHsgMTAsIDExLCAxOX0sIHsgMTAsIDExLCAyMX0sIHsgMTAsIDExLCAyMn0sIHsgMTAsIDExLCAyM30sCiAgICB7IDEwLCAxMywgIDF9LCB7IDEwLCAxMywgIDJ9LCB7IDEwLCAxMywgIDV9LCB7IDEwLCAxMywgIDl9LAogICAgeyAxMCwgMTMsIDE3fSwgeyAxMCwgMTMsIDE5fSwgeyAxMCwgMTMsIDIzfSwgeyAxMCwgMTgsICAxfSwKICAgIHsgMTAsIDE5LCAgMX0sIHsgMTAsIDE5LCAyM30sIHsgMTAsIDIwLCAgMX0sIHsgMTAsIDIwLCAgMn0sCiAgICB7IDEwLCAyMCwgIDV9LCB7IDEwLCAyMCwgIDl9LCB7IDEwLCAyMCwgMTd9LCB7IDEwLCAyMCwgMjF9LAogICAgeyAxMCwgMjAsIDIzfSwgeyAxMCwgMjYsICAxfSwgeyAxMCwgMjYsIDIzfSwgeyAxMCwgMjcsICAxfSwKICAgIHsgMTAsIDI3LCAgNX0sIHsgMTAsIDI3LCAgOX0sIHsgMTAsIDI3LCAxN30sIHsgMTAsIDI3LCAxOX0sCiAgICB7IDEwLCAyOSwgIDF9LCB7IDEwLCAyOSwgIDJ9LCB7IDEwLCAyOSwgIDV9LCB7IDEwLCAyOSwgIDl9LAogICAgeyAxMCwgMjksIDE3fSwgeyAxMCwgMjksIDE5fSwgeyAxMCwgMjksIDIxfSwgeyAxMCwgMjksIDIzfSwKICAgIHsgMTEsICAzLCAgMX0sIHsgMTEsICAzLCAgMn0sIHsgMTEsICAzLCAgNH0sIHsgMTEsICAzLCAgNX0sCiAgICB7IDExLCAgMywgIDh9LCB7IDExLCAgMywgIDl9LCB7IDExLCAgMywgMTB9LCB7IDExLCAgMywgMTF9LAogICAgeyAxMSwgIDMsIDE3fSwgeyAxMSwgIDMsIDE5fSwgeyAxMSwgIDMsIDIxfSwgeyAxMSwgIDMsIDIyfSwKICAgIHsgMTEsICAzLCAyM30sIHsgMTEsICAzLCAyN30sIHsgMTEsICA0LCAgMX0sIHsgMTEsICA0LCAgMn0sCiAgICB7IDExLCAgNCwgIDV9LCB7IDExLCAgNCwgIDl9LCB7IDExLCAgNCwgMTd9LCB7IDExLCAgNCwgMTl9LAogICAgeyAxMSwgIDQsIDIxfSwgeyAxMSwgIDQsIDIyfSwgeyAxMSwgIDQsIDIzfSwgeyAxMSwgIDUsICAxfSwKICAgIHsgMTEsICA1LCAgMn0sIHsgMTEsICA1LCAgNX0sIHsgMTEsICA1LCAgOX0sIHsgMTEsICA1LCAxN30sCiAgICB7IDExLCAgNSwgMTl9LCB7IDExLCAgNSwgMjF9LCB7IDExLCAgNSwgMjN9LCB7IDExLCAgNiwgIDF9LAogICAgeyAxMSwgIDYsICA1fSwgeyAxMSwgIDYsICA5fSwgeyAxMSwgIDYsIDE3fSwgeyAxMSwgIDYsIDIzfSwKICAgIHsgMTEsICA3LCAgMX0sIHsgMTEsICA3LCAgMn0sIHsgMTEsICA3LCAgM30sIHsgMTEsICA3LCAgNH0sCiAgICB7IDExLCAgNywgIDV9LCB7IDExLCAgNywgIDh9LCB7IDExLCAgNywgIDl9LCB7IDExLCAgNywgMTF9LAogICAgeyAxMSwgIDcsIDEyfSwgeyAxMSwgIDcsIDE3fSwgeyAxMSwgIDcsIDE5fSwgeyAxMSwgIDcsIDIxfSwKICAgIHsgMTEsICA3LCAyMn0sIHsgMTEsICA3LCAyM30sIHsgMTEsICA3LCAyOH0sIHsgMTEsIDEwLCAgMX0sCiAgICB7IDExLCAxMCwgIDJ9LCB7IDExLCAxMCwgIDV9LCB7IDExLCAxMCwgIDl9LCB7IDExLCAxMCwgMTd9LAogICAgeyAxMSwgMTAsIDE5fSwgeyAxMSwgMTAsIDIxfSwgeyAxMSwgMTAsIDIyfSwgeyAxMSwgMTAsIDIzfSwKICAgIHsgMTEsIDExLCAgMX0sIHsgMTEsIDExLCAgMn0sIHsgMTEsIDExLCAgNX0sIHsgMTEsIDExLCAgOX0sCiAgICB7IDExLCAxMSwgMTd9LCB7IDExLCAxMSwgMTl9LCB7IDExLCAxMSwgMjF9LCB7IDExLCAxMSwgMjJ9LAogICAgeyAxMSwgMTEsIDIzfSwgeyAxMSwgMTIsICAxfSwgeyAxMSwgMTIsICA1fSwgeyAxMSwgMTIsICA5fSwKICAgIHsgMTEsIDEyLCAyM30sIHsgMTEsIDEzLCAgMX0sIHsgMTEsIDEzLCAgMn0sIHsgMTEsIDEzLCAgM30sCiAgICB7IDExLCAxMywgIDV9LCB7IDExLCAxMywgIDl9LCB7IDExLCAxMywgMTF9LCB7IDExLCAxMywgMTd9LAogICAgeyAxMSwgMTMsIDE5fSwgeyAxMSwgMTMsIDIxfSwgeyAxMSwgMTMsIDIzfSwgeyAxMSwgMTMsIDI3fSwKICAgIHsgMTEsIDE0LCAgMX0sIHsgMTEsIDE0LCAgMn0sIHsgMTEsIDE0LCAgNX0sIHsgMTEsIDE0LCAgOX0sCiAgICB7IDExLCAxNCwgMjN9LCB7IDExLCAxNSwgIDF9LCB7IDExLCAxNSwgIDV9LCB7IDExLCAxNSwgIDl9LAogICAgeyAxMSwgMTUsIDE3fSwgeyAxMSwgMTUsIDIxfSwgeyAxMSwgMTUsIDIyfSwgeyAxMSwgMTgsICAxfSwKICAgIHsgMTEsIDE4LCAgNX0sIHsgMTEsIDE4LCAgOX0sIHsgMTEsIDE4LCAxN30sIHsgMTEsIDE4LCAxOX0sCiAgICB7IDExLCAxOCwgMjF9LCB7IDExLCAxOSwgIDF9LCB7IDExLCAxOSwgIDJ9LCB7IDExLCAxOSwgIDV9LAogICAgeyAxMSwgMTksICA5fSwgeyAxMSwgMTksIDE3fSwgeyAxMSwgMTksIDE5fSwgeyAxMSwgMTksIDIxfSwKICAgIHsgMTEsIDE5LCAyM30sIHsgMTEsIDIwLCAgMX0sIHsgMTEsIDIwLCAgMn0sIHsgMTEsIDIwLCAgNX0sCiAgICB7IDExLCAyMCwgIDh9LCB7IDExLCAyMCwgIDl9LCB7IDExLCAyMCwgMTd9LCB7IDExLCAyMCwgMTl9LAogICAgeyAxMSwgMjAsIDIxfSwgeyAxMSwgMjAsIDIzfSwgeyAxMSwgMjAsIDI1fSwgeyAxMSwgMjAsIDI3fSwKICAgIHsgMTEsIDIwLCAyOH0sIHsgMTEsIDIxLCAgMX0sIHsgMTEsIDIxLCAyMn0sIHsgMTEsIDIyLCAgMX0sCiAgICB7IDExLCAyMiwgIDJ9LCB7IDExLCAyMiwgIDV9LCB7IDExLCAyMiwgIDl9LCB7IDExLCAyMiwgMTd9LAogICAgeyAxMSwgMjIsIDIzfSwgeyAxMSwgMjMsICAxfSwgeyAxMSwgMjMsICAyfSwgeyAxMSwgMjMsICA1fSwKICAgIHsgMTEsIDIzLCAgOX0sIHsgMTEsIDIzLCAxN30sIHsgMTEsIDIzLCAxOX0sIHsgMTEsIDIzLCAyMX0sCiAgICB7IDExLCAyMywgMjN9LCB7IDExLCAyNiwgIDF9LCB7IDExLCAyNiwgIDJ9LCB7IDExLCAyNiwgIDl9LAogICAgeyAxMSwgMjYsIDE3fSwgeyAxMSwgMjYsIDIxfSwgeyAxMSwgMjYsIDIzfSwgeyAxMSwgMjcsICAxfSwKICAgIHsgMTEsIDI3LCAgMn0sIHsgMTEsIDI3LCAgNX0sIHsgMTEsIDI3LCAgOX0sIHsgMTEsIDI3LCAxMH0sCiAgICB7IDExLCAyNywgMTd9LCB7IDExLCAyNywgMTl9LCB7IDExLCAyNywgMjF9LCB7IDExLCAyNywgMjN9LAogICAgeyAxMSwgMjksICAxfSwgeyAxMSwgMjksICAyfSwgeyAxMSwgMjksICA1fSwgeyAxMSwgMjksICA4fSwKICAgIHsgMTEsIDI5LCAgOX0sIHsgMTEsIDI5LCAxNn0sIHsgMTEsIDI5LCAxN30sIHsgMTEsIDI5LCAxOX0sCiAgICB7IDExLCAyOSwgMjF9LCB7IDExLCAyOSwgMjN9LCB7IDExLCAyOSwgMjh9LCB7IDEyLCAgMywgIDF9LAogICAgeyAxMiwgIDMsICAyfSwgeyAxMiwgIDMsICA0fSwgeyAxMiwgIDMsICA1fSwgeyAxMiwgIDMsICA5fSwKICAgIHsgMTIsICAzLCAxN30sIHsgMTIsICAzLCAxOX0sIHsgMTIsICAzLCAyMn0sIHsgMTIsICAzLCAyM30sCiAgICB7IDEyLCAgMywgMjl9LCB7IDEyLCAgNCwgIDF9LCB7IDEyLCAgNCwgIDJ9LCB7IDEyLCAgNCwgIDV9LAogICAgeyAxMiwgIDQsICA5fSwgeyAxMiwgIDQsIDE3fSwgeyAxMiwgIDQsIDE5fSwgeyAxMiwgIDQsIDIyfSwKICAgIHsgMTIsICA0LCAyM30sIHsgMTIsICA1LCAyM30sIHsgMTIsICA3LCAgMX0sIHsgMTIsICA3LCAgMn0sCiAgICB7IDEyLCAgNywgIDV9LCB7IDEyLCAgNywgIDl9LCB7IDEyLCAgNywgMTF9LCB7IDEyLCAgNywgMTd9LAogICAgeyAxMiwgIDcsIDE5fSwgeyAxMiwgIDcsIDIyfSwgeyAxMiwgIDcsIDIzfSwgeyAxMiwgMTAsICAxfSwKICAgIHsgMTIsIDEwLCAgNX0sIHsgMTIsIDEwLCAgOX0sIHsgMTIsIDEyLCAgNX0sIHsgMTIsIDEzLCAgMX0sCiAgICB7IDEyLCAxMywgIDJ9LCB7IDEyLCAxMywgIDV9LCB7IDEyLCAxMywgIDh9LCB7IDEyLCAxMywgIDl9LAogICAgeyAxMiwgMTMsIDExfSwgeyAxMiwgMTMsIDE3fSwgeyAxMiwgMTMsIDE5fSwgeyAxMiwgMTMsIDIzfSwKICAgIHsgMTIsIDE0LCAgMX0sIHsgMTIsIDE0LCAgMn0sIHsgMTIsIDE0LCAgNX0sIHsgMTIsIDE0LCAyMn0sCiAgICB7IDEyLCAxNSwgIDF9LCB7IDEyLCAxNSwgMjJ9LCB7IDEyLCAxOCwgIDF9LCB7IDEyLCAxOCwgIDV9LAogICAgeyAxMiwgMTgsICA5fSwgeyAxMiwgMTgsIDE3fSwgeyAxMiwgMTgsIDE5fSwgeyAxMiwgMTksICAxfSwKICAgIHsgMTIsIDIwLCAgMX0sIHsgMTIsIDIwLCAgMn0sIHsgMTIsIDIwLCAgNX0sIHsgMTIsIDIwLCAgOX0sCiAgICB7IDEyLCAyMCwgMTd9LCB7IDEyLCAyMCwgMTl9LCB7IDEyLCAyMCwgMjN9LCB7IDEyLCAyMSwgIDF9LAogICAgeyAxMiwgMjEsIDIyfSwgeyAxMiwgMjIsICAxfSwgeyAxMiwgMjMsICAxfSwgeyAxMiwgMjMsICA1fSwKICAgIHsgMTIsIDI2LCAyM30sIHsgMTIsIDI3LCAgMX0sIHsgMTIsIDI3LCAgMn0sIHsgMTIsIDI3LCAgNX0sCiAgICB7IDEyLCAyNywgIDl9LCB7IDEyLCAyNywgMTF9LCB7IDEyLCAyNywgMTZ9LCB7IDEyLCAyNywgMTd9LAogICAgeyAxMiwgMjcsIDE5fSwgeyAxMiwgMjgsICAxfSwgeyAxMiwgMjgsICA1fSwgeyAxMiwgMjgsICA5fSwKICAgIHsgMTIsIDI4LCAxN30sIHsgMTIsIDI5LCAgMX0sIHsgMTIsIDI5LCAgMn0sIHsgMTIsIDI5LCAgNX0sCiAgICB7IDEyLCAyOSwgIDl9LCB7IDEyLCAyOSwgMTd9LCB7IDEyLCAyOSwgMTl9LCB7IDEyLCAyOSwgMjF9LAogICAgeyAxMiwgMjksIDIzfSwgeyAxMywgIDMsICAxfSwgeyAxMywgIDMsICAyfSwgeyAxMywgIDMsICA1fSwKICAgIHsgMTMsICAzLCAgNn0sIHsgMTMsICAzLCAgN30sIHsgMTMsICAzLCAgOX0sIHsgMTMsICAzLCAxMH0sCiAgICB7IDEzLCAgMywgMTF9LCB7IDEzLCAgMywgMTZ9LCB7IDEzLCAgMywgMTd9LCB7IDEzLCAgMywgMTl9LAogICAgeyAxMywgIDMsIDIxfSwgeyAxMywgIDMsIDIyfSwgeyAxMywgIDMsIDIzfSwgeyAxMywgIDMsIDI3fSwKICAgIHsgMTMsICAzLCAyOH0sIHsgMTMsICA0LCAgMX0sIHsgMTMsICA0LCAgMn0sIHsgMTMsICA0LCAgNX0sCiAgICB7IDEzLCAgNCwgIDl9LCB7IDEzLCAgNCwgMTd9LCB7IDEzLCAgNCwgMTl9LCB7IDEzLCAgNCwgMjF9LAogICAgeyAxMywgIDQsIDIyfSwgeyAxMywgIDQsIDIzfSwgeyAxMywgIDUsICAxfSwgeyAxMywgIDUsICAyfSwKICAgIHsgMTMsICA1LCAgNX0sIHsgMTMsICA1LCAgOX0sIHsgMTMsICA1LCAxMn0sIHsgMTMsICA1LCAxN30sCiAgICB7IDEzLCAgNSwgMTl9LCB7IDEzLCAgNSwgMjF9LCB7IDEzLCAgNSwgMjN9LCB7IDEzLCAgNSwgMjd9LAogICAgeyAxMywgIDUsIDI5fSwgeyAxMywgIDYsICAxfSwgeyAxMywgIDYsICA1fSwgeyAxMywgIDYsICA5fSwKICAgIHsgMTMsICA2LCAxOX0sIHsgMTMsICA3LCAgMX0sIHsgMTMsICA3LCAgMn0sIHsgMTMsICA3LCAgNX0sCiAgICB7IDEzLCAgNywgIDZ9LCB7IDEzLCAgNywgIDh9LCB7IDEzLCAgNywgIDl9LCB7IDEzLCAgNywgMTB9LAogICAgeyAxMywgIDcsIDExfSwgeyAxMywgIDcsIDE3fSwgeyAxMywgIDcsIDE5fSwgeyAxMywgIDcsIDIwfSwKICAgIHsgMTMsICA3LCAyMX0sIHsgMTMsICA3LCAyMn0sIHsgMTMsICA3LCAyM30sIHsgMTMsICA3LCAyNH0sCiAgICB7IDEzLCAgNywgMjZ9LCB7IDEzLCAgNywgMjh9LCB7IDEzLCAxMCwgIDF9LCB7IDEzLCAxMCwgIDJ9LAogICAgeyAxMywgMTAsICA1fSwgeyAxMywgMTAsICA5fSwgeyAxMywgMTAsIDE3fSwgeyAxMywgMTAsIDE5fSwKICAgIHsgMTMsIDEwLCAyMX0sIHsgMTMsIDEwLCAyM30sIHsgMTMsIDExLCAgMX0sIHsgMTMsIDExLCAgMn0sCiAgICB7IDEzLCAxMSwgIDN9LCB7IDEzLCAxMSwgIDV9LCB7IDEzLCAxMSwgIDl9LCB7IDEzLCAxMSwgMTF9LAogICAgeyAxMywgMTEsIDEyfSwgeyAxMywgMTEsIDE3fSwgeyAxMywgMTEsIDE5fSwgeyAxMywgMTEsIDIwfSwKICAgIHsgMTMsIDExLCAyMX0sIHsgMTMsIDExLCAyMn0sIHsgMTMsIDExLCAyM30sIHsgMTMsIDExLCAyN30sCiAgICB7IDEzLCAxMSwgMjh9LCB7IDEzLCAxMSwgMjl9LCB7IDEzLCAxMiwgIDF9LCB7IDEzLCAxMiwgIDV9LAogICAgeyAxMywgMTIsICA5fSwgeyAxMywgMTIsIDE3fSwgeyAxMywgMTIsIDE5fSwgeyAxMywgMTIsIDIxfSwKICAgIHsgMTMsIDEyLCAyMn0sIHsgMTMsIDEzLCAgMX0sIHsgMTMsIDEzLCAgMn0sIHsgMTMsIDEzLCAgNX0sCiAgICB7IDEzLCAxMywgIDl9LCB7IDEzLCAxMywgMTB9LCB7IDEzLCAxMywgMTF9LCB7IDEzLCAxMywgMTN9LAogICAgeyAxMywgMTMsIDE2fSwgeyAxMywgMTMsIDE3fSwgeyAxMywgMTMsIDE5fSwgeyAxMywgMTMsIDIxfSwKICAgIHsgMTMsIDEzLCAyM30sIHsgMTMsIDEzLCAyNX0sIHsgMTMsIDE0LCAgMX0sIHsgMTMsIDE0LCAgMn0sCiAgICB7IDEzLCAxNCwgIDV9LCB7IDEzLCAxNCwgIDl9LCB7IDEzLCAxNCwgMTd9LCB7IDEzLCAxNCwgMTl9LAogICAgeyAxMywgMTQsIDIxfSwgeyAxMywgMTQsIDIyfSwgeyAxMywgMTQsIDIzfSwgeyAxMywgMTUsICAxfSwKICAgIHsgMTMsIDE1LCAgMn0sIHsgMTMsIDE1LCAgNX0sIHsgMTMsIDE1LCAxN30sIHsgMTMsIDE1LCAyMX0sCiAgICB7IDEzLCAxNSwgMjN9LCB7IDEzLCAxOCwgIDF9LCB7IDEzLCAxOCwgIDJ9LCB7IDEzLCAxOCwgIDV9LAogICAgeyAxMywgMTgsICA5fSwgeyAxMywgMTgsIDE3fSwgeyAxMywgMTgsIDE5fSwgeyAxMywgMTgsIDIxfSwKICAgIHsgMTMsIDE4LCAyM30sIHsgMTMsIDE5LCAgMX0sIHsgMTMsIDE5LCAgMn0sIHsgMTMsIDE5LCAgNX0sCiAgICB7IDEzLCAxOSwgIDl9LCB7IDEzLCAxOSwgMTd9LCB7IDEzLCAxOSwgMTl9LCB7IDEzLCAxOSwgMjF9LAogICAgeyAxMywgMTksIDIzfSwgeyAxMywgMjAsICAxfSwgeyAxMywgMjAsICAyfSwgeyAxMywgMjAsICA1fSwKICAgIHsgMTMsIDIwLCAgOX0sIHsgMTMsIDIwLCAxMH0sIHsgMTMsIDIwLCAxMX0sIHsgMTMsIDIwLCAxN30sCiAgICB7IDEzLCAyMCwgMTl9LCB7IDEzLCAyMCwgMjF9LCB7IDEzLCAyMCwgMjN9LCB7IDEzLCAyMSwgIDF9LAogICAgeyAxMywgMjEsICAyfSwgeyAxMywgMjEsICA1fSwgeyAxMywgMjEsICA5fSwgeyAxMywgMjEsIDE3fSwKICAgIHsgMTMsIDIxLCAxOX0sIHsgMTMsIDIxLCAyMn0sIHsgMTMsIDIxLCAyM30sIHsgMTMsIDIyLCAgMX0sCiAgICB7IDEzLCAyMiwgIDJ9LCB7IDEzLCAyMiwgIDV9LCB7IDEzLCAyMiwgIDl9LCB7IDEzLCAyMiwgMTd9LAogICAgeyAxMywgMjIsIDE5fSwgeyAxMywgMjIsIDIzfSwgeyAxMywgMjMsICAxfSwgeyAxMywgMjMsICAyfSwKICAgIHsgMTMsIDIzLCAgNX0sIHsgMTMsIDIzLCAgOX0sIHsgMTMsIDIzLCAxN30sIHsgMTMsIDIzLCAxOX0sCiAgICB7IDEzLCAyMywgMjF9LCB7IDEzLCAyMywgMjN9LCB7IDEzLCAyNiwgIDF9LCB7IDEzLCAyNiwgIDJ9LAogICAgeyAxMywgMjYsICA1fSwgeyAxMywgMjYsICA5fSwgeyAxMywgMjYsIDE3fSwgeyAxMywgMjYsIDE5fSwKICAgIHsgMTMsIDI2LCAyMX0sIHsgMTMsIDI2LCAyM30sIHsgMTMsIDI2LCAyNX0sIHsgMTMsIDI3LCAgMX0sCiAgICB7IDEzLCAyNywgIDJ9LCB7IDEzLCAyNywgIDV9LCB7IDEzLCAyNywgIDl9LCB7IDEzLCAyNywgMTV9LAogICAgeyAxMywgMjcsIDE3fSwgeyAxMywgMjcsIDE5fSwgeyAxMywgMjcsIDIxfSwgeyAxMywgMjcsIDIzfSwKICAgIHsgMTMsIDI3LCAyNH0sIHsgMTMsIDI3LCAyNX0sIHsgMTMsIDI3LCAyNn0sIHsgMTMsIDI3LCAyN30sCiAgICB7IDEzLCAyNywgMjh9LCB7IDEzLCAyNywgMjl9LCB7IDEzLCAyOCwgIDF9LCB7IDEzLCAyOCwgIDV9LAogICAgeyAxMywgMjgsICA5fSwgeyAxMywgMjgsIDE3fSwgeyAxMywgMjgsIDIxfSwgeyAxMywgMjksICAxfSwKICAgIHsgMTMsIDI5LCAgMn0sIHsgMTMsIDI5LCAgNX0sIHsgMTMsIDI5LCAgOX0sIHsgMTMsIDI5LCAxMH0sCiAgICB7IDEzLCAyOSwgMTF9LCB7IDEzLCAyOSwgMTZ9LCB7IDEzLCAyOSwgMTd9LCB7IDEzLCAyOSwgMTl9LAogICAgeyAxMywgMjksIDIxfSwgeyAxMywgMjksIDIyfSwgeyAxMywgMjksIDIzfSwgeyAxMywgMjksIDI0fSwKICAgIHsgMTMsIDI5LCAyOH0sIHsgMTQsICAzLCAgMX0sIHsgMTQsICAzLCAgMn0sIHsgMTQsICAzLCAgNX0sCiAgICB7IDE0LCAgMywgIDd9LCB7IDE0LCAgMywgIDh9LCB7IDE0LCAgMywgIDl9LCB7IDE0LCAgMywgMTF9LAogICAgeyAxNCwgIDMsIDE3fSwgeyAxNCwgIDMsIDE5fSwgeyAxNCwgIDMsIDIxfSwgeyAxNCwgIDMsIDIyfSwKICAgIHsgMTQsICAzLCAyM30sIHsgMTQsICAzLCAyNH0sIHsgMTQsICA0LCAgMX0sIHsgMTQsICA0LCAgMn0sCiAgICB7IDE0LCAgNCwgIDV9LCB7IDE0LCAgNCwgIDl9LCB7IDE0LCAgNCwgMTd9LCB7IDE0LCAgNCwgMTl9LAogICAgeyAxNCwgIDQsIDIxfSwgeyAxNCwgIDQsIDIyfSwgeyAxNCwgIDQsIDIzfSwgeyAxNCwgIDUsICAxfSwKICAgIHsgMTQsICA1LCAgMn0sIHsgMTQsICA1LCAgNX0sIHsgMTQsICA1LCAgN30sIHsgMTQsICA1LCAgOX0sCiAgICB7IDE0LCAgNSwgMTd9LCB7IDE0LCAgNSwgMjN9LCB7IDE0LCAgNiwgIDF9LCB7IDE0LCAgNiwgIDV9LAogICAgeyAxNCwgIDYsICA5fSwgeyAxNCwgIDcsICAxfSwgeyAxNCwgIDcsICAyfSwgeyAxNCwgIDcsICA1fSwKICAgIHsgMTQsICA3LCAgOX0sIHsgMTQsICA3LCAxMX0sIHsgMTQsICA3LCAxN30sIHsgMTQsICA3LCAxOX0sCiAgICB7IDE0LCAgNywgMjF9LCB7IDE0LCAgNywgMjN9LCB7IDE0LCAgNywgMjR9LCB7IDE0LCAxMCwgIDF9LAogICAgeyAxNCwgMTAsICAyfSwgeyAxNCwgMTAsICA1fSwgeyAxNCwgMTAsICA5fSwgeyAxNCwgMTAsIDE3fSwKICAgIHsgMTQsIDEwLCAxOX0sIHsgMTQsIDEwLCAyMX0sIHsgMTQsIDEwLCAyM30sIHsgMTQsIDExLCAgMX0sCiAgICB7IDE0LCAxMSwgIDV9LCB7IDE0LCAxMSwgIDl9LCB7IDE0LCAxMSwgMTd9LCB7IDE0LCAxMSwgMTl9LAogICAgeyAxNCwgMTEsIDIyfSwgeyAxNCwgMTEsIDIzfSwgeyAxNCwgMTIsICAxfSwgeyAxNCwgMTMsICAxfSwKICAgIHsgMTQsIDEzLCAgMn0sIHsgMTQsIDEzLCAgNX0sIHsgMTQsIDEzLCAgOX0sIHsgMTQsIDEzLCAxMX0sCiAgICB7IDE0LCAxMywgMTd9LCB7IDE0LCAxMywgMTl9LCB7IDE0LCAxMywgMjF9LCB7IDE0LCAxMywgMjN9LAogICAgeyAxNCwgMTMsIDI0fSwgeyAxNCwgMTMsIDI1fSwgeyAxNCwgMTMsIDI5fSwgeyAxNCwgMTQsICAxfSwKICAgIHsgMTQsIDE0LCAgMn0sIHsgMTQsIDE0LCAgOX0sIHsgMTQsIDE0LCAxOX0sIHsgMTQsIDE0LCAyMX0sCiAgICB7IDE0LCAxNCwgMjN9LCB7IDE0LCAxNSwgIDF9LCB7IDE0LCAxNSwgMjJ9LCB7IDE0LCAxNSwgMjN9LAogICAgeyAxNCwgMTgsICAxfSwgeyAxNCwgMTgsICA1fSwgeyAxNCwgMTgsICA5fSwgeyAxNCwgMTgsIDE3fSwKICAgIHsgMTQsIDE4LCAxOX0sIHsgMTQsIDE4LCAyMX0sIHsgMTQsIDE4LCAyM30sIHsgMTQsIDE5LCAgMX0sCiAgICB7IDE0LCAxOSwgIDJ9LCB7IDE0LCAxOSwgIDV9LCB7IDE0LCAxOSwgMjN9LCB7IDE0LCAyMCwgIDF9LAogICAgeyAxNCwgMjAsICAyfSwgeyAxNCwgMjAsICA1fSwgeyAxNCwgMjAsICA5fSwgeyAxNCwgMjAsIDEwfSwKICAgIHsgMTQsIDIwLCAxMX0sIHsgMTQsIDIwLCAxN30sIHsgMTQsIDIwLCAxOX0sIHsgMTQsIDIwLCAyMX0sCiAgICB7IDE0LCAyMCwgMjN9LCB7IDE0LCAyMSwgIDF9LCB7IDE0LCAyMSwgMjJ9LCB7IDE0LCAyMiwgIDF9LAogICAgeyAxNCwgMjMsICAxfSwgeyAxNCwgMjMsICAyfSwgeyAxNCwgMjMsICA1fSwgeyAxNCwgMjMsICA5fSwKICAgIHsgMTQsIDIzLCAxN30sIHsgMTQsIDIzLCAxOX0sIHsgMTQsIDIzLCAyMX0sIHsgMTQsIDI2LCAgMX0sCiAgICB7IDE0LCAyNiwgIDV9LCB7IDE0LCAyNiwgIDl9LCB7IDE0LCAyNiwgMTd9LCB7IDE0LCAyNywgIDF9LAogICAgeyAxNCwgMjcsICAyfSwgeyAxNCwgMjcsICA1fSwgeyAxNCwgMjcsICA5fSwgeyAxNCwgMjcsIDE3fSwKICAgIHsgMTQsIDI3LCAxOX0sIHsgMTQsIDI3LCAyMX0sIHsgMTQsIDI3LCAyM30sIHsgMTQsIDI5LCAgMX0sCiAgICB7IDE0LCAyOSwgIDJ9LCB7IDE0LCAyOSwgIDV9LCB7IDE0LCAyOSwgIDh9LCB7IDE0LCAyOSwgIDl9LAogICAgeyAxNCwgMjksIDExfSwgeyAxNCwgMjksIDE3fSwgeyAxNCwgMjksIDE5fSwgeyAxNCwgMjksIDIxfSwKICAgIHsgMTQsIDI5LCAyM30sIHsgMTQsIDI5LCAyNH0sIHsgMTQsIDI5LCAyN30sIHsgMTQsIDI5LCAyOH0sCiAgICB7IDE1LCAgMywgIDF9LCB7IDE1LCAgMywgIDJ9LCB7IDE1LCAgMywgIDV9LCB7IDE1LCAgMywgIDd9LAogICAgeyAxNSwgIDMsICA5fSwgeyAxNSwgIDMsIDEyfSwgeyAxNSwgIDMsIDE3fSwgeyAxNSwgIDMsIDE5fSwKICAgIHsgMTUsICAzLCAyMX0sIHsgMTUsICAzLCAyMn0sIHsgMTUsICAzLCAyM30sIHsgMTUsICA0LCAgMX0sCiAgICB7IDE1LCAgNCwgIDJ9LCB7IDE1LCAgNCwgIDV9LCB7IDE1LCAgNCwgIDl9LCB7IDE1LCAgNCwgMTd9LAogICAgeyAxNSwgIDQsIDE5fSwgeyAxNSwgIDQsIDIxfSwgeyAxNSwgIDQsIDIyfSwgeyAxNSwgIDQsIDIzfSwKICAgIHsgMTUsICA1LCAgMX0sIHsgMTUsICA1LCAgNX0sIHsgMTUsICA1LCAyM30sIHsgMTUsICA3LCAgMX0sCiAgICB7IDE1LCAgNywgIDJ9LCB7IDE1LCAgNywgIDV9LCB7IDE1LCAgNywgIDl9LCB7IDE1LCAgNywgMTd9LAogICAgeyAxNSwgIDcsIDE5fSwgeyAxNSwgIDcsIDIxfSwgeyAxNSwgIDcsIDIyfSwgeyAxNSwgIDcsIDIzfSwKICAgIHsgMTUsIDEwLCAgMX0sIHsgMTUsIDEwLCAyM30sIHsgMTUsIDExLCAgMX0sIHsgMTUsIDExLCAyMn0sCiAgICB7IDE1LCAxMywgIDF9LCB7IDE1LCAxMywgIDJ9LCB7IDE1LCAxMywgIDV9LCB7IDE1LCAxMywgIDl9LAogICAgeyAxNSwgMTMsIDE3fSwgeyAxNSwgMTMsIDE5fSwgeyAxNSwgMTMsIDIxfSwgeyAxNSwgMTMsIDIzfSwKICAgIHsgMTUsIDEzLCAyNX0sIHsgMTUsIDE0LCAgMX0sIHsgMTUsIDE0LCAgMn0sIHsgMTUsIDE0LCAgOX0sCiAgICB7IDE1LCAxNCwgMjJ9LCB7IDE1LCAxNSwgIDF9LCB7IDE1LCAxNSwgMjJ9LCB7IDE1LCAxOCwgIDF9LAogICAgeyAxNSwgMTgsICA1fSwgeyAxNSwgMTgsICA5fSwgeyAxNSwgMTgsIDE3fSwgeyAxNSwgMTgsIDE5fSwKICAgIHsgMTUsIDE5LCAyM30sIHsgMTUsIDIwLCAgMX0sIHsgMTUsIDIwLCAgMn0sIHsgMTUsIDIwLCAgNX0sCiAgICB7IDE1LCAyMCwgIDl9LCB7IDE1LCAyMCwgMTd9LCB7IDE1LCAyMCwgMTl9LCB7IDE1LCAyMCwgMjN9LAogICAgeyAxNSwgMjEsICAxfSwgeyAxNSwgMjEsIDIyfSwgeyAxNSwgMjEsIDIzfSwgeyAxNSwgMjMsICAxfSwKICAgIHsgMTUsIDI2LCAgMX0sIHsgMTUsIDI3LCAgMX0sIHsgMTUsIDI3LCAxN30sIHsgMTUsIDI3LCAyMX0sCiAgICB7IDE1LCAyNywgMjN9LCB7IDE1LCAyOSwgIDF9LCB7IDE1LCAyOSwgIDJ9LCB7IDE1LCAyOSwgIDV9LAogICAgeyAxNSwgMjksICA5fSwgeyAxNSwgMjksIDE3fSwgeyAxNSwgMjksIDE5fSwgeyAxNSwgMjksIDIzfSwKICAgIHsgMTUsIDI5LCAyNH0sIHsgMTUsIDI5LCAyOX0sIHsgMTYsICAzLCAgMX0sIHsgMTYsICAzLCAgMn0sCiAgICB7IDE2LCAgMywgIDV9LCB7IDE2LCAgMywgIDd9LCB7IDE2LCAgMywgIDl9LCB7IDE2LCAgMywgMTd9LAogICAgeyAxNiwgIDMsIDE5fSwgeyAxNiwgIDMsIDIxfSwgeyAxNiwgIDMsIDIyfSwgeyAxNiwgIDMsIDIzfSwKICAgIHsgMTYsICAzLCAyNH0sIHsgMTYsICA0LCAgMX0sIHsgMTYsICA0LCAgMn0sIHsgMTYsICA0LCAgNX0sCiAgICB7IDE2LCAgNCwgIDl9LCB7IDE2LCAgNCwgMTd9LCB7IDE2LCAgNCwgMTl9LCB7IDE2LCAgNCwgMjF9LAogICAgeyAxNiwgIDQsIDIyfSwgeyAxNiwgIDQsIDIzfSwgeyAxNiwgIDUsICAxfSwgeyAxNiwgIDUsICA1fSwKICAgIHsgMTYsICA1LCAgN30sIHsgMTYsICA1LCAgOX0sIHsgMTYsICA1LCAxN30sIHsgMTYsICA1LCAyM30sCiAgICB7IDE2LCAgNywgIDF9LCB7IDE2LCAgNywgIDJ9LCB7IDE2LCAgNywgIDV9LCB7IDE2LCAgNywgIDl9LAogICAgeyAxNiwgIDcsIDE3fSwgeyAxNiwgIDcsIDE5fSwgeyAxNiwgIDcsIDIxfSwgeyAxNiwgIDcsIDIyfSwKICAgIHsgMTYsICA3LCAyM30sIHsgMTYsIDEwLCAgMX0sIHsgMTYsIDEwLCAgMn0sIHsgMTYsIDEwLCAgNX0sCiAgICB7IDE2LCAxMCwgIDl9LCB7IDE2LCAxMCwgMTd9LCB7IDE2LCAxMCwgMTl9LCB7IDE2LCAxMCwgMjF9LAogICAgeyAxNiwgMTAsIDIzfSwgeyAxNiwgMTEsICAxfSwgeyAxNiwgMTEsICA1fSwgeyAxNiwgMTEsIDIyfSwKICAgIHsgMTYsIDEyLCAgMX0sIHsgMTYsIDEyLCAgNX0sIHsgMTYsIDEyLCAyM30sIHsgMTYsIDEzLCAgMX0sCiAgICB7IDE2LCAxMywgIDJ9LCB7IDE2LCAxMywgIDV9LCB7IDE2LCAxMywgIDl9LCB7IDE2LCAxMywgMTd9LAogICAgeyAxNiwgMTMsIDE5fSwgeyAxNiwgMTMsIDIxfSwgeyAxNiwgMTMsIDIzfSwgeyAxNiwgMTQsICAxfSwKICAgIHsgMTYsIDE0LCAgNX0sIHsgMTYsIDE0LCAgOX0sIHsgMTYsIDE0LCAyM30sIHsgMTYsIDE4LCAgMX0sCiAgICB7IDE2LCAxOCwgIDV9LCB7IDE2LCAxOCwgIDl9LCB7IDE2LCAxOCwgMTd9LCB7IDE2LCAxOCwgMTl9LAogICAgeyAxNiwgMTgsIDIxfSwgeyAxNiwgMTgsIDIzfSwgeyAxNiwgMTksICAxfSwgeyAxNiwgMTksIDE3fSwKICAgIHsgMTYsIDIwLCAgMX0sIHsgMTYsIDIwLCAgMn0sIHsgMTYsIDIwLCAgNX0sIHsgMTYsIDIwLCAgOX0sCiAgICB7IDE2LCAyMCwgMTd9LCB7IDE2LCAyMCwgMTl9LCB7IDE2LCAyMCwgMjF9LCB7IDE2LCAyMCwgMjN9LAogICAgeyAxNiwgMjEsICAxfSwgeyAxNiwgMjEsIDIyfSwgeyAxNiwgMjIsICAxfSwgeyAxNiwgMjIsICA1fSwKICAgIHsgMTYsIDIzLCAgMX0sIHsgMTYsIDIzLCAgNX0sIHsgMTYsIDIzLCAgOX0sIHsgMTYsIDIzLCAxN30sCiAgICB7IDE2LCAyMywgMTl9LCB7IDE2LCAyMywgMjF9LCB7IDE2LCAyMywgMjN9LCB7IDE2LCAyNiwgIDF9LAogICAgeyAxNiwgMjYsICA1fSwgeyAxNiwgMjYsICA5fSwgeyAxNiwgMjYsIDE3fSwgeyAxNiwgMjYsIDIzfSwKICAgIHsgMTYsIDI3LCAgMX0sIHsgMTYsIDI3LCAgMn0sIHsgMTYsIDI3LCAgNX0sIHsgMTYsIDI3LCAgOX0sCiAgICB7IDE2LCAyNywgMTd9LCB7IDE2LCAyNywgMTl9LCB7IDE2LCAyNywgMjF9LCB7IDE2LCAyNywgMjN9LAogICAgeyAxNiwgMjksICAxfSwgeyAxNiwgMjksICAyfSwgeyAxNiwgMjksICA1fSwgeyAxNiwgMjksICA4fSwKICAgIHsgMTYsIDI5LCAgOX0sIHsgMTYsIDI5LCAxMH0sIHsgMTYsIDI5LCAxN30sIHsgMTYsIDI5LCAxOX0sCiAgICB7IDE2LCAyOSwgMjF9LCB7IDE2LCAyOSwgMjN9LCB7IDE3LCAgMywgIDF9LCB7IDE3LCAgMywgIDJ9LAogICAgeyAxNywgIDMsICA1fSwgeyAxNywgIDMsICA5fSwgeyAxNywgIDMsIDE3fSwgeyAxNywgIDMsIDE5fSwKICAgIHsgMTcsICAzLCAyMX0sIHsgMTcsICAzLCAyM30sIHsgMTcsICA0LCAgMX0sIHsgMTcsICA0LCAgMn0sCiAgICB7IDE3LCAgNCwgIDV9LCB7IDE3LCAgNCwgIDl9LCB7IDE3LCAgNCwgMTd9LCB7IDE3LCAgNCwgMTl9LAogICAgeyAxNywgIDQsIDIxfSwgeyAxNywgIDQsIDIyfSwgeyAxNywgIDQsIDIzfSwgeyAxNywgIDUsICAxfSwKICAgIHsgMTcsICA1LCAgMn0sIHsgMTcsICA1LCAyM30sIHsgMTcsICA3LCAgMX0sIHsgMTcsICA3LCAgMn0sCiAgICB7IDE3LCAgNywgIDV9LCB7IDE3LCAgNywgIDh9LCB7IDE3LCAgNywgIDl9LCB7IDE3LCAgNywgMTd9LAogICAgeyAxNywgIDcsIDE5fSwgeyAxNywgIDcsIDIxfSwgeyAxNywgIDcsIDIyfSwgeyAxNywgIDcsIDIzfSwKICAgIHsgMTcsIDEwLCAgMX0sIHsgMTcsIDEwLCAgMn0sIHsgMTcsIDEwLCAgNX0sIHsgMTcsIDEwLCAgOX0sCiAgICB7IDE3LCAxMCwgMTd9LCB7IDE3LCAxMCwgMTl9LCB7IDE3LCAxMCwgMjF9LCB7IDE3LCAxMCwgMjN9LAogICAgeyAxNywgMTEsICAxfSwgeyAxNywgMTEsICA1fSwgeyAxNywgMTEsICA5fSwgeyAxNywgMTEsIDE3fSwKICAgIHsgMTcsIDExLCAxOX0sIHsgMTcsIDExLCAyMX0sIHsgMTcsIDExLCAyMn0sIHsgMTcsIDExLCAyM30sCiAgICB7IDE3LCAxMiwgIDF9LCB7IDE3LCAxMywgIDF9LCB7IDE3LCAxMywgIDJ9LCB7IDE3LCAxMywgIDV9LAogICAgeyAxNywgMTMsICA5fSwgeyAxNywgMTMsIDE3fSwgeyAxNywgMTMsIDE5fSwgeyAxNywgMTMsIDIxfSwKICAgIHsgMTcsIDEzLCAyM30sIHsgMTcsIDE0LCAgMX0sIHsgMTcsIDE0LCAgMn0sIHsgMTcsIDE0LCAgNX0sCiAgICB7IDE3LCAxNCwgIDl9LCB7IDE3LCAxNCwgMTd9LCB7IDE3LCAxNCwgMjN9LCB7IDE3LCAxNSwgIDF9LAogICAgeyAxNywgMTUsIDIzfSwgeyAxNywgMTgsICAxfSwgeyAxNywgMTgsICA5fSwgeyAxNywgMTksICAxfSwKICAgIHsgMTcsIDIwLCAgMX0sIHsgMTcsIDIwLCAgMn0sIHsgMTcsIDIwLCAgNX0sIHsgMTcsIDIwLCAgOX0sCiAgICB7IDE3LCAyMCwgMTd9LCB7IDE3LCAyMCwgMTl9LCB7IDE3LCAyMCwgMjF9LCB7IDE3LCAyMCwgMjN9LAogICAgeyAxNywgMjEsICAxfSwgeyAxNywgMjEsICA1fSwgeyAxNywgMjEsICA5fSwgeyAxNywgMjEsIDIzfSwKICAgIHsgMTcsIDIyLCAgMX0sIHsgMTcsIDIyLCAyM30sIHsgMTcsIDIzLCAgMX0sIHsgMTcsIDIzLCAgMn0sCiAgICB7IDE3LCAyMywgIDV9LCB7IDE3LCAyMywgIDl9LCB7IDE3LCAyMywgMTd9LCB7IDE3LCAyMywgMTl9LAogICAgeyAxNywgMjMsIDIxfSwgeyAxNywgMjMsIDIzfSwgeyAxNywgMjYsICAxfSwgeyAxNywgMjYsICA1fSwKICAgIHsgMTcsIDI2LCAgOX0sIHsgMTcsIDI2LCAxN30sIHsgMTcsIDI3LCAgMX0sIHsgMTcsIDI3LCAgMn0sCiAgICB7IDE3LCAyNywgIDV9LCB7IDE3LCAyNywgIDl9LCB7IDE3LCAyNywgMTd9LCB7IDE3LCAyNywgMTl9LAogICAgeyAxNywgMjcsIDIzfSwgeyAxNywgMjksICAxfSwgeyAxNywgMjksICAyfSwgeyAxNywgMjksICA1fSwKICAgIHsgMTcsIDI5LCAgOX0sIHsgMTcsIDI5LCAxN30sIHsgMTcsIDI5LCAxOX0sIHsgMTcsIDI5LCAyMX0sCiAgICB7IDE3LCAyOSwgMjN9LCB7IDE4LCAgMywgIDF9LCB7IDE4LCAgMywgIDJ9LCB7IDE4LCAgMywgIDV9LAogICAgeyAxOCwgIDMsICA5fSwgeyAxOCwgIDMsIDEwfSwgeyAxOCwgIDMsIDE3fSwgeyAxOCwgIDMsIDE5fSwKICAgIHsgMTgsICAzLCAyMX0sIHsgMTgsICAzLCAyMn0sIHsgMTgsICAzLCAyM30sIHsgMTgsICA0LCAgMX0sCiAgICB7IDE4LCAgNCwgIDJ9LCB7IDE4LCAgNCwgIDV9LCB7IDE4LCAgNCwgIDl9LCB7IDE4LCAgNCwgMTd9LAogICAgeyAxOCwgIDQsIDE5fSwgeyAxOCwgIDQsIDIxfSwgeyAxOCwgIDQsIDIyfSwgeyAxOCwgIDQsIDIzfSwKICAgIHsgMTgsICA1LCAgMX0sIHsgMTgsICA1LCAyM30sIHsgMTgsICA3LCAgMX0sIHsgMTgsICA3LCAgMn0sCiAgICB7IDE4LCAgNywgIDV9LCB7IDE4LCAgNywgIDl9LCB7IDE4LCAgNywgMTF9LCB7IDE4LCAgNywgMTd9LAogICAgeyAxOCwgIDcsIDE5fSwgeyAxOCwgIDcsIDIxfSwgeyAxOCwgIDcsIDIyfSwgeyAxOCwgIDcsIDIzfSwKICAgIHsgMTgsIDEwLCAgMX0sIHsgMTgsIDEwLCAgMn0sIHsgMTgsIDEwLCAgNX0sIHsgMTgsIDEwLCAgOX0sCiAgICB7IDE4LCAxMCwgMTd9LCB7IDE4LCAxMCwgMTl9LCB7IDE4LCAxMCwgMjF9LCB7IDE4LCAxMCwgMjN9LAogICAgeyAxOCwgMTEsICAxfSwgeyAxOCwgMTEsICA1fSwgeyAxOCwgMTEsIDIyfSwgeyAxOCwgMTIsICAxfSwKICAgIHsgMTgsIDEyLCAgNX0sIHsgMTgsIDEzLCAgMX0sIHsgMTgsIDEzLCAgMn0sIHsgMTgsIDEzLCAgNX0sCiAgICB7IDE4LCAxMywgIDl9LCB7IDE4LCAxMywgMTd9LCB7IDE4LCAxMywgMTl9LCB7IDE4LCAxMywgMjF9LAogICAgeyAxOCwgMTMsIDIzfSwgeyAxOCwgMTMsIDI4fSwgeyAxOCwgMTQsICAxfSwgeyAxOCwgMTQsICA1fSwKICAgIHsgMTgsIDE1LCAgMX0sIHsgMTgsIDE4LCAgMX0sIHsgMTgsIDE4LCAgNX0sIHsgMTgsIDE4LCAyMX0sCiAgICB7IDE4LCAxOCwgMjN9LCB7IDE4LCAxOSwgIDF9LCB7IDE4LCAyMCwgIDF9LCB7IDE4LCAyMCwgIDJ9LAogICAgeyAxOCwgMjAsICA1fSwgeyAxOCwgMjAsICA5fSwgeyAxOCwgMjAsIDE3fSwgeyAxOCwgMjAsIDE5fSwKICAgIHsgMTgsIDIwLCAyMX0sIHsgMTgsIDIwLCAyM30sIHsgMTgsIDIxLCAgMX0sIHsgMTgsIDIxLCAyMn0sCiAgICB7IDE4LCAyMiwgIDF9LCB7IDE4LCAyMywgIDF9LCB7IDE4LCAyMywgIDJ9LCB7IDE4LCAyMywgIDV9LAogICAgeyAxOCwgMjMsICA5fSwgeyAxOCwgMjMsIDE3fSwgeyAxOCwgMjMsIDE5fSwgeyAxOCwgMjMsIDIzfSwKICAgIHsgMTgsIDI2LCAgMX0sIHsgMTgsIDI2LCAgNX0sIHsgMTgsIDI2LCAgOX0sIHsgMTgsIDI2LCAxN30sCiAgICB7IDE4LCAyNiwgMjN9LCB7IDE4LCAyNywgIDF9LCB7IDE4LCAyNywgIDJ9LCB7IDE4LCAyNywgIDV9LAogICAgeyAxOCwgMjcsICA4fSwgeyAxOCwgMjcsICA5fSwgeyAxOCwgMjcsIDExfSwgeyAxOCwgMjcsIDE3fSwKICAgIHsgMTgsIDI3LCAxOX0sIHsgMTgsIDI3LCAyMX0sIHsgMTgsIDI4LCAgMX0sIHsgMTgsIDI4LCAgNX0sCiAgICB7IDE4LCAyOCwgIDl9LCB7IDE4LCAyOCwgMTd9LCB7IDE4LCAyOCwgMTl9LCB7IDE4LCAyOSwgIDF9LAogICAgeyAxOCwgMjksICAyfSwgeyAxOCwgMjksICA1fSwgeyAxOCwgMjksICA5fSwgeyAxOCwgMjksIDE3fSwKICAgIHsgMTgsIDI5LCAxOX0sIHsgMTgsIDI5LCAyMX0sIHsgMTgsIDI5LCAyM30sIHsgMTksICAzLCAgMX0sCiAgICB7IDE5LCAgMywgIDJ9LCB7IDE5LCAgMywgIDN9LCB7IDE5LCAgMywgIDV9LCB7IDE5LCAgMywgIDl9LAogICAgeyAxOSwgIDMsIDExfSwgeyAxOSwgIDMsIDE3fSwgeyAxOSwgIDMsIDE5fSwgeyAxOSwgIDMsIDIxfSwKICAgIHsgMTksICAzLCAyMn0sIHsgMTksICAzLCAyM30sIHsgMTksICAzLCAyN30sIHsgMTksICA0LCAgMX0sCiAgICB7IDE5LCAgNCwgIDJ9LCB7IDE5LCAgNCwgIDV9LCB7IDE5LCAgNCwgIDl9LCB7IDE5LCAgNCwgMTd9LAogICAgeyAxOSwgIDQsIDE5fSwgeyAxOSwgIDQsIDIxfSwgeyAxOSwgIDQsIDIyfSwgeyAxOSwgIDQsIDIzfSwKICAgIHsgMTksICA1LCAgMX0sIHsgMTksICA1LCAgMn0sIHsgMTksICA3LCAgMX0sIHsgMTksICA3LCAgMn0sCiAgICB7IDE5LCAgNywgIDV9LCB7IDE5LCAgNywgIDl9LCB7IDE5LCAgNywgMTd9LCB7IDE5LCAgNywgMTl9LAogICAgeyAxOSwgIDcsIDIxfSwgeyAxOSwgIDcsIDIyfSwgeyAxOSwgIDcsIDIzfSwgeyAxOSwgMTAsICAxfSwKICAgIHsgMTksIDEwLCAgMn0sIHsgMTksIDEwLCAgNX0sIHsgMTksIDEwLCAgOX0sIHsgMTksIDEwLCAxN30sCiAgICB7IDE5LCAxMCwgMTl9LCB7IDE5LCAxMCwgMjF9LCB7IDE5LCAxMCwgMjN9LCB7IDE5LCAxMSwgIDF9LAogICAgeyAxOSwgMTEsICA1fSwgeyAxOSwgMTEsICA5fSwgeyAxOSwgMTEsIDE3fSwgeyAxOSwgMTEsIDE5fSwKICAgIHsgMTksIDExLCAyMn0sIHsgMTksIDExLCAyM30sIHsgMTksIDEyLCAgMX0sIHsgMTksIDEyLCAgOX0sCiAgICB7IDE5LCAxMiwgMTl9LCB7IDE5LCAxMiwgMjF9LCB7IDE5LCAxMywgIDF9LCB7IDE5LCAxMywgIDJ9LAogICAgeyAxOSwgMTMsICA1fSwgeyAxOSwgMTMsICA5fSwgeyAxOSwgMTMsIDE3fSwgeyAxOSwgMTMsIDE5fSwKICAgIHsgMTksIDEzLCAyMX0sIHsgMTksIDEzLCAyM30sIHsgMTksIDE0LCAgMX0sIHsgMTksIDE0LCAyM30sCiAgICB7IDE5LCAxOCwgIDF9LCB7IDE5LCAxOCwgIDV9LCB7IDE5LCAxOSwgIDF9LCB7IDE5LCAxOSwgIDV9LAogICAgeyAxOSwgMTksICA5fSwgeyAxOSwgMTksIDE5fSwgeyAxOSwgMTksIDIxfSwgeyAxOSwgMjAsICAxfSwKICAgIHsgMTksIDIwLCAgMn0sIHsgMTksIDIwLCAgNX0sIHsgMTksIDIwLCAgOH0sIHsgMTksIDIwLCAgOX0sCiAgICB7IDE5LCAyMCwgMTF9LCB7IDE5LCAyMCwgMTd9LCB7IDE5LCAyMCwgMTl9LCB7IDE5LCAyMCwgMjF9LAogICAgeyAxOSwgMjAsIDIzfSwgeyAxOSwgMjEsICAxfSwgeyAxOSwgMjEsIDIzfSwgeyAxOSwgMjMsICAxfSwKICAgIHsgMTksIDIzLCAgNX0sIHsgMTksIDIzLCAgOX0sIHsgMTksIDIzLCAxN30sIHsgMTksIDIzLCAyMX0sCiAgICB7IDE5LCAyNiwgIDF9LCB7IDE5LCAyNiwgIDV9LCB7IDE5LCAyNiwgIDl9LCB7IDE5LCAyNiwgMTd9LAogICAgeyAxOSwgMjYsIDIxfSwgeyAxOSwgMjYsIDIzfSwgeyAxOSwgMjcsICAxfSwgeyAxOSwgMjcsICA1fSwKICAgIHsgMTksIDI3LCAgOX0sIHsgMTksIDI3LCAxN30sIHsgMTksIDI3LCAxOX0sIHsgMTksIDI3LCAyMX0sCiAgICB7IDE5LCAyOSwgIDF9LCB7IDE5LCAyOSwgIDJ9LCB7IDE5LCAyOSwgIDV9LCB7IDE5LCAyOSwgIDl9LAogICAgeyAxOSwgMjksIDE3fSwgeyAxOSwgMjksIDE5fSwgeyAxOSwgMjksIDIxfSwgeyAxOSwgMjksIDIzfSwKICAgIHsgMjAsICAzLCAgMX0sIHsgMjAsICAzLCAgMn0sIHsgMjAsICAzLCAgNX0sIHsgMjAsICAzLCAgOX0sCiAgICB7IDIwLCAgMywgMTR9LCB7IDIwLCAgMywgMTd9LCB7IDIwLCAgMywgMTl9LCB7IDIwLCAgMywgMjF9LAogICAgeyAyMCwgIDMsIDIzfSwgeyAyMCwgIDQsICAxfSwgeyAyMCwgIDQsICAyfSwgeyAyMCwgIDQsICA1fSwKICAgIHsgMjAsICA0LCAgOX0sIHsgMjAsICA0LCAxN30sIHsgMjAsICA0LCAxOX0sIHsgMjAsICA0LCAyMX0sCiAgICB7IDIwLCAgNCwgMjJ9LCB7IDIwLCAgNCwgMjN9LCB7IDIwLCAgNSwgIDF9LCB7IDIwLCAgNSwgMjN9LAogICAgeyAyMCwgIDcsICAxfSwgeyAyMCwgIDcsICAyfSwgeyAyMCwgIDcsICA1fSwgeyAyMCwgIDcsICA5fSwKICAgIHsgMjAsICA3LCAxMX0sIHsgMjAsICA3LCAxN30sIHsgMjAsICA3LCAxOX0sIHsgMjAsICA3LCAyMX0sCiAgICB7IDIwLCAgNywgMjN9LCB7IDIwLCAxMCwgIDF9LCB7IDIwLCAxMCwgIDJ9LCB7IDIwLCAxMCwgIDV9LAogICAgeyAyMCwgMTAsICA5fSwgeyAyMCwgMTAsIDE3fSwgeyAyMCwgMTAsIDE5fSwgeyAyMCwgMTAsIDIxfSwKICAgIHsgMjAsIDEwLCAyM30sIHsgMjAsIDExLCAgMX0sIHsgMjAsIDExLCAgMn0sIHsgMjAsIDExLCAgNX0sCiAgICB7IDIwLCAxMSwgIDl9LCB7IDIwLCAxMSwgMTd9LCB7IDIwLCAxMSwgMTl9LCB7IDIwLCAxMSwgMjF9LAogICAgeyAyMCwgMTEsIDIyfSwgeyAyMCwgMTEsIDIzfSwgeyAyMCwgMTIsICAxfSwgeyAyMCwgMTIsICA1fSwKICAgIHsgMjAsIDEyLCAgOX0sIHsgMjAsIDEyLCAxOX0sIHsgMjAsIDEzLCAgMX0sIHsgMjAsIDEzLCAgMn0sCiAgICB7IDIwLCAxMywgIDV9LCB7IDIwLCAxMywgIDl9LCB7IDIwLCAxMywgMTR9LCB7IDIwLCAxMywgMTd9LAogICAgeyAyMCwgMTMsIDE5fSwgeyAyMCwgMTMsIDIxfSwgeyAyMCwgMTMsIDIzfSwgeyAyMCwgMTMsIDI3fSwKICAgIHsgMjAsIDE0LCAgMX0sIHsgMjAsIDE0LCAgMn0sIHsgMjAsIDE0LCAgNX0sIHsgMjAsIDE0LCAgOX0sCiAgICB7IDIwLCAxNCwgMjF9LCB7IDIwLCAxNCwgMjN9LCB7IDIwLCAxNSwgIDF9LCB7IDIwLCAxNSwgIDJ9LAogICAgeyAyMCwgMTUsICA1fSwgeyAyMCwgMTUsIDIxfSwgeyAyMCwgMTUsIDIzfSwgeyAyMCwgMTgsICAxfSwKICAgIHsgMjAsIDE4LCAgMn0sIHsgMjAsIDE4LCAgNX0sIHsgMjAsIDE4LCAgOX0sIHsgMjAsIDE4LCAxOX0sCiAgICB7IDIwLCAxOCwgMjF9LCB7IDIwLCAxOCwgMjN9LCB7IDIwLCAxOSwgIDF9LCB7IDIwLCAxOSwgIDV9LAogICAgeyAyMCwgMTksICA5fSwgeyAyMCwgMTksIDE5fSwgeyAyMCwgMTksIDIxfSwgeyAyMCwgMjAsICAxfSwKICAgIHsgMjAsIDIwLCAgMn0sIHsgMjAsIDIwLCAgNX0sIHsgMjAsIDIwLCAgOX0sIHsgMjAsIDIwLCAxNH0sCiAgICB7IDIwLCAyMCwgMTd9LCB7IDIwLCAyMCwgMjF9LCB7IDIwLCAyMCwgMjN9LCB7IDIwLCAyMSwgIDF9LAogICAgeyAyMCwgMjEsICA1fSwgeyAyMCwgMjEsICA5fSwgeyAyMCwgMjEsIDE3fSwgeyAyMCwgMjEsIDIzfSwKICAgIHsgMjAsIDIyLCAgMX0sIHsgMjAsIDIyLCAgMn0sIHsgMjAsIDIyLCAgNX0sIHsgMjAsIDIyLCAgOX0sCiAgICB7IDIwLCAyMiwgMjN9LCB7IDIwLCAyMywgIDF9LCB7IDIwLCAyMywgIDJ9LCB7IDIwLCAyMywgIDV9LAogICAgeyAyMCwgMjMsICA5fSwgeyAyMCwgMjMsIDE3fSwgeyAyMCwgMjMsIDE5fSwgeyAyMCwgMjMsIDIxfSwKICAgIHsgMjAsIDIzLCAyM30sIHsgMjAsIDI2LCAgMX0sIHsgMjAsIDI2LCAgMn0sIHsgMjAsIDI2LCAgNX0sCiAgICB7IDIwLCAyNiwgIDl9LCB7IDIwLCAyNiwgMTd9LCB7IDIwLCAyNiwgMjF9LCB7IDIwLCAyNiwgMjN9LAogICAgeyAyMCwgMjcsICAxfSwgeyAyMCwgMjcsICAyfSwgeyAyMCwgMjcsICA1fSwgeyAyMCwgMjcsICA3fSwKICAgIHsgMjAsIDI3LCAgOH0sIHsgMjAsIDI3LCAgOX0sIHsgMjAsIDI3LCAxMH0sIHsgMjAsIDI3LCAxN30sCiAgICB7IDIwLCAyNywgMTl9LCB7IDIwLCAyNywgMjF9LCB7IDIwLCAyNywgMjN9LCB7IDIwLCAyNywgMjd9LAogICAgeyAyMCwgMjgsICAxfSwgeyAyMCwgMjgsICA1fSwgeyAyMCwgMjgsICA5fSwgeyAyMCwgMjgsIDE3fSwKICAgIHsgMjAsIDI4LCAxOX0sIHsgMjAsIDI4LCAyM30sIHsgMjAsIDI5LCAgMX0sIHsgMjAsIDI5LCAgMn0sCiAgICB7IDIwLCAyOSwgIDV9LCB7IDIwLCAyOSwgIDl9LCB7IDIwLCAyOSwgMTd9LCB7IDIwLCAyOSwgMTl9LAogICAgeyAyMCwgMjksIDIxfSwgeyAyMCwgMjksIDIzfSwKfTsKCgpzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQga3NfdGFibGUyW11bNF0gPQp7CiAgICB7MHhhNGJmLCAgMSwgIDMsICAxfSwgIHsweGE0YzAsICAxLCAgNCwgIDF9LAogICAgezB4YTRjMSwgIDEsICA1LCAgMX0sICB7MHhhNGMyLCAgMSwgIDYsICAxfSwKICAgIHsweGE0YzMsICAxLCAgNywgIDF9LCAgezB4YTRjNCwgIDEsIDEwLCAgMX0sCiAgICB7MHhhNGM1LCAgMSwgMTEsICAxfSwgIHsweGE0YzYsICAxLCAxMiwgIDF9LAogICAgezB4YTRjNywgIDEsIDEzLCAgMX0sICB7MHhhNGM4LCAgMSwgMTQsICAxfSwKICAgIHsweGE0YzksICAxLCAxNSwgIDF9LCAgezB4YTRjYSwgIDEsIDE4LCAgMX0sCiAgICB7MHhhNGNiLCAgMSwgMTksICAxfSwgIHsweGE0Y2MsICAxLCAyMCwgIDF9LAogICAgezB4YTRjZCwgIDEsIDIxLCAgMX0sICB7MHhhNGNlLCAgMSwgMjIsICAxfSwKICAgIHsweGE0Y2YsICAxLCAyMywgIDF9LCAgezB4YTRkMCwgIDEsIDI2LCAgMX0sCiAgICB7MHhhNGQxLCAgMSwgMjcsICAxfSwgIHsweGE0ZDIsICAxLCAyOCwgIDF9LAogICAgezB4YTRkMywgIDEsIDI5LCAgMX0sICB7MHhhNGExLCAgMiwgIDIsICAxfSwKICAgIHsweGE0YTIsICAzLCAgMiwgIDF9LCAgezB4YTRhNCwgIDQsICAyLCAgMX0sCiAgICB7MHhhNGE3LCAgNSwgIDIsICAxfSwgIHsweGE0YTgsICA2LCAgMiwgIDF9LAogICAgezB4YTRhOSwgIDcsICAyLCAgMX0sICB7MHhhNGIxLCAgOCwgIDIsICAxfSwKICAgIHsweGE0YjIsICA5LCAgMiwgIDF9LCAgezB4YTRiMywgMTAsICAyLCAgMX0sCiAgICB7MHhhNGI1LCAxMSwgIDIsICAxfSwgIHsweGE0YjYsIDEyLCAgMiwgIDF9LAogICAgezB4YTRiNywgMTMsICAyLCAgMX0sICB7MHhhNGI4LCAxNCwgIDIsICAxfSwKICAgIHsweGE0YjksIDE1LCAgMiwgIDF9LCAgezB4YTRiYSwgMTYsICAyLCAgMX0sCiAgICB7MHhhNGJiLCAxNywgIDIsICAxfSwgIHsweGE0YmMsIDE4LCAgMiwgIDF9LAogICAgezB4YTRiZCwgMTksICAyLCAgMX0sICB7MHhhNGJlLCAyMCwgIDIsICAxfSwKfTsKCi8qIMG2x9XH/CDDyry6IC0gv8+8usf8ILO5wNoguq/IrwogKiBjb252ZXJzaW9uOiBpbml0aWFsIHNvdW5kIG9mIGNvbXBvdW5kIHR5cGUgLSA/Pz8gb2YgY29tcGxldGlvbiB0eXBlCiAqLwoKc3RhdGljIGNvbnN0IGNoYXJfdSBqb2hhYl9mY29uX3RvX3dhbltdID0KewogICAgMCwKICAgIDB4ZDQsIDB4YTEsIDB4YTIsIDB4YTQsIDB4YTcsICAgIC8qICjDpL/yKSykoSykoiykpCykpyAqLwogICAgMHhhOCwgMHhhOSwgMHhiMSwgMHhiMiwgMHhiMywgICAgLyogpKgspKkspLEspLIspLMgKi8KICAgIDB4YjUsIDB4YjYsIDB4YjcsIDB4YjgsIDB4YjksICAgIC8qIKS1LKS2LKS3LKS4LKS5ICovCiAgICAweGJhLCAweGJiLCAweGJjLCAweGJkLCAweGJlICAgICAvKiCkuiykuyykvCykvSykviAqLwp9OwoKLyogwbbH1cf8IMHfvLogLT4gv8+8usf8ILO5wNoguq/IrwogKiBjb252ZXJzaW9uOiBtZWRpYWwgdm93ZWwgb2YgY29tcG91bmQgdHlwZSAtID8/PyBvZiBjb21wbGV0aW9uIHR5cGUKICovCgpzdGF0aWMgY29uc3QgY2hhcl91IGpvaGFiX3Zvd190b193YW5bXSA9CnsKICAgIDAsIDAsCiAgICAweGQ0LCAweGJmLCAweGMwLCAweGMxLCAweGMyLCAweGMzLAkvKiAow6S/8ikspL8spMAspMEspMIspMMgKi8KICAgIDAsIDAsCiAgICAweGM0LCAweGM1LCAweGM2LCAweGM3LCAweGM4LCAweGM5LCAvKiCkxCykxSykxiykxyykx6S/LKTHpMAgKi8KICAgIDAsIDAsCiAgICAweGNhLCAweGNiLCAweGNjLCAweGNkLCAweGNlLCAweGNmLCAvKiCkx6TTLKTLLKTMLKTMpMMspMykxCykzKTTICovCiAgICAwLCAwLAogICAgMHhkMCwgMHhkMSwgMHhkMiwgMHhkMwkgICAgIC8qIKTQLKTRLKTRpNMspNMgKi8KfTsKCi8qIMG2x9XH/CDBvry6IC0+IL/PvLrH/CCzucDaILqvyK8KICogY29udmVyc2lvbjogZmluYWwgY29uc29uYW50IG9mIGNvbXBvdW5kIHR5cGUgLSA/Pz8gb2YgY29tcGxldGlvbiB0eXBlCiAqLwoKc3RhdGljIGNvbnN0IGNoYXJfdSBqb2hhYl9sY29uX3RvX3dhbltdID0KewogICAgMCwKICAgIDB4ZDQsIDB4YTEsIDB4YTIsIDB4YTMsIDB4YTQsICAgIC8qICjDpL/yKSwgpKEsIKSiLCCkoaS1LCCkpCAqLwogICAgMHhhNSwgMHhhNiwgMHhhNywgMHhhOSwgMHhhYSwgICAgLyogpKSkuCwgpKSkviwgpKcsIKSpLCCkqaShICovCiAgICAweGFiLCAweGFjLCAweGFkLCAweGFlLCAweGFmLCAgICAvKiCkqaSxLCCkqaSyLCCkqaS1LCCkqaS8LCCkqaS9ICovCiAgICAweGIwLCAweGIxLCAwLCAgICAweGIyLCAweGI0LCAgICAvKiCkqaS+LCCksSwgMCwgpLIsIKSypLUgKi8KICAgIDB4YjUsIDB4YjYsIDB4YjcsIDB4YjgsIDB4YmEsICAgIC8qIKS1LCCktiwgpLcsIKS4LCCkuiAqLwogICAgMHhiYiwgMHhiYywgMHhiZCwgMHhiZQkgICAgIC8qIKS7LCCkvCwgpL0sIKS+ICovCn07CgogICAgc3RhdGljIHZvaWQKY29udmVydF9rc190b18zKAogICAgY29uc3QgY2hhcl91ICAgICpzcmMsCiAgICBpbnQJCSAgICAqZnAsCiAgICBpbnQJCSAgICAqbXAsCiAgICBpbnQJCSAgICAqbHApCnsKICAgIGludCBoID0gKnNyYzsKICAgIGludCBsb3cgPSAqKHNyYyArIDEpOwogICAgaW50IGM7CiAgICBpbnQgaTsKCiAgICBpZiAoKGkgPSBoYW5faW5kZXgoaCwgbG93KSkgPj0gMAoJJiYgaSA8IChpbnQpKHNpemVvZihrc190YWJsZTEpL3NpemVvZihrc190YWJsZTFbMF0pKSkKICAgIHsKCSpmcCA9IGtzX3RhYmxlMVtpXVswXTsKCSptcCA9IGtzX3RhYmxlMVtpXVsxXTsKCSpscCA9IGtzX3RhYmxlMVtpXVsyXTsKICAgIH0KICAgIGVsc2UKICAgIHsKCWMgPSAoaCA8PCA4KSB8IGxvdzsKCWZvciAoaSA9IDA7IGkgPCA0MDsgaSsrKQoJICAgIGlmIChrc190YWJsZTJbaV1bMF0gPT0gYykKCSAgICB7CgkJKmZwID0ga3NfdGFibGUyW2ldWzFdOwoJCSptcCA9IGtzX3RhYmxlMltpXVsyXTsKCQkqbHAgPSBrc190YWJsZTJbaV1bM107CgkJcmV0dXJuOwoJICAgIH0KCSpmcCA9IDB4ZmY7CS8qILHXt6HHyCDE2rXlIChncmFwaGljIGNvZGUpICovCgkqbXAgPSBoOwoJKmxwID0gbG93OwogICAgfQp9CgogICAgc3RhdGljIGludApjb252ZXJ0XzNfdG9fa3MoCiAgICBpbnQJICAgIGZ2LAogICAgaW50CSAgICBtdiwKICAgIGludAkgICAgbHYsCiAgICBjaGFyX3UgICpkZXMpCnsKICAgIGNoYXJfdSBrZXlbM107CiAgICByZWdpc3RlciBpbnQgaGksIGxvLCBtaSA9IDAsIHJlc3VsdCwgZm91bmQ7CgogICAgaWYgKGZ2ID09IDB4ZmYpCiAgICB7CglkZXNbMF0gPSBtdjsKCWRlc1sxXSA9IGx2OwoJcmV0dXJuIDI7CiAgICB9CiAgICBrZXlbMF0gPSBmdjsKICAgIGtleVsxXSA9IG12OwogICAga2V5WzJdID0gbHY7CiAgICBsbyA9IDA7CiAgICBoaSA9IHNpemVvZihrc190YWJsZTEpLzMgLSAxOwogICAgZm91bmQgPSAwOwogICAgd2hpbGUgKGxvICsgMSA8IGhpKQogICAgewoJbWkgPSAobG8gKyBoaSkvMjsKCXJlc3VsdCA9IFNUUk5DTVAoa3NfdGFibGUxW21pXSwga2V5LCAzKTsKCWlmIChyZXN1bHQgPT0gMCkKCXsKCSAgICBmb3VuZCA9IDE7CgkgICAgYnJlYWs7Cgl9CgllbHNlIGlmIChyZXN1bHQgPiAwKQoJICAgIGhpID0gbWk7CgllbHNlCgkgICAgbG8gPSBtaTsKICAgIH0KICAgIGlmICghZm91bmQpCiAgICB7CglpZiAoIVNUUk5DTVAoa3NfdGFibGUxW2xvXSwga2V5LCAzKSkKCXsKCSAgICBmb3VuZCA9IDE7CgkgICAgbWkgPSBsbzsKCX0KCWlmICghU1RSTkNNUChrc190YWJsZTFbaGldLCBrZXksIDMpKQoJewoJICAgIGZvdW5kID0gMTsKCSAgICBtaSA9IGhpOwoJfQogICAgfQogICAgaWYgKCFmb3VuZCkKICAgIHsKCWZvciAobWkgPSAwOyBtaSA8IDQwOyBtaSsrKQoJICAgIGlmIChrc190YWJsZTJbbWldWzFdID09IGZ2ICYmIGtzX3RhYmxlMlttaV1bMl0gPT0gbXYgJiYKCQlrc190YWJsZTJbbWldWzNdID09IGx2KQoJICAgIHsKCQlkZXNbMF0gPSAodW5zaWduZWQpKGtzX3RhYmxlMlttaV1bMF0pID4+IDg7CgkJZGVzWzFdID0ga3NfdGFibGUyW21pXVswXTsKCQlyZXR1cm4gMjsJLyogZm91bmQgKi8KCSAgICB9CiAgICB9CiAgICBlbHNlCiAgICB7CglkZXNbMF0gPSBtaSAvICgweGZmLTB4YTEpICsgMHhiMDsKCWRlc1sxXSA9IG1pICUgKDB4ZmYtMHhhMSkgKyAweGExOwoJcmV0dXJuIDI7CQkvKiBmb3VuZCAqLwogICAgfQoKICAgIC8qIL/PvLrH/CDHpb+hIL74tNkuIGBgS1MgQyA1NjAxIC0gMTk5MiDBpLq4ILGzyK+/6yC6zsijIMfYvLMnJwogICAgICogMy4zIMD9v6EgvLO47bXIILnmuf3AuLfOIGVuY29kaW5nIMfRtNkuCiAgICAgKi8KCiAgICAqZGVzKysgPSAweGE0OwkJICAgICAvKiDDpL/yICovCiAgICAqZGVzKysgPSAweGQ0OwogICAgKmRlcysrID0gMHhhNDsJCSAgICAgLyogs7nA2rTCILjwtc4gYTQgx+C/oSDA1rTZLiAqLwogICAgKmRlcysrID0gam9oYWJfZmNvbl90b193YW5bZnZdOwogICAgKmRlcysrID0gMHhhNDsKICAgICpkZXMrKyA9IGpvaGFiX3Zvd190b193YW5bbXZdOwogICAgKmRlcysrID0gMHhhNDsKICAgICpkZXMrKyA9IGpvaGFiX2xjb25fdG9fd2FuW2x2XTsKICAgIHJldHVybiA4Owp9CgogICAgY2hhcl91ICoKaGFuZ3VsX3N0cmluZ19jb252ZXJ0KGNoYXJfdSAqYnVmLCBpbnQgKnBfbGVuKQp7CiAgICBjaGFyX3UgKnRtcGJ1ZiA9IE5VTEw7CiAgICB2aW1jb252X1QgdmM7CgogICAgaWYgKGVuY191dGY4KQogICAgewoJdmMudmNfdHlwZSA9IENPTlZfTk9ORTsKCWlmIChjb252ZXJ0X3NldHVwKCZ2YywgKGNoYXJfdSAqKSJldWMta3IiLCBwX2VuYykgPT0gT0spCgl7CgkgICAgdG1wYnVmID0gc3RyaW5nX2NvbnZlcnQoJnZjLCBidWYsIHBfbGVuKTsKCSAgICBjb252ZXJ0X3NldHVwKCZ2YywgTlVMTCwgTlVMTCk7Cgl9CiAgICB9CgogICAgcmV0dXJuIHRtcGJ1ZjsKfQoKICAgIGNoYXJfdSAqCmhhbmd1bF9jb21wb3NpbmdfYnVmZmVyX2dldChpbnQgKnBfbGVuKQp7CiAgICBjaGFyX3UgKnRtcGJ1ZiA9IE5VTEw7CgogICAgaWYgKGNvbXBvc2luZ19oYW5ndWwpCiAgICB7CglpbnQgbGVuID0gMjsKCgl0bXBidWYgPSBoYW5ndWxfc3RyaW5nX2NvbnZlcnQoY29tcG9zaW5nX2hhbmd1bF9idWZmZXIsICZsZW4pOwoJaWYgKHRtcGJ1ZiAhPSBOVUxMKQoJewoJICAgICpwX2xlbiA9IGxlbjsKCX0KCWVsc2UKCXsKCSAgICB0bXBidWYgPSB2aW1fc3RybnNhdmUoY29tcG9zaW5nX2hhbmd1bF9idWZmZXIsIDIpOwoJICAgICpwX2xlbiA9IDI7Cgl9CiAgICB9CgogICAgcmV0dXJuIHRtcGJ1ZjsKfQo=